Oracle 12c、18c、19c CDB、PDB常用命令
原创
©著作权归作者所有:来自51CTO博客作者认真学习数据库的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、CDB、PDB常用管理命令
show pdbs --查看所有pdb
select name,open_mode from v$pdbs为PDB信息视图
select con_id, dbid, guid, name , open_mode from v$pdbs;
alter session set container=orcl1 --切换到PDBorcl1容器
alter session set container=CDB$ROOT --切换到CDB容器
select sys_context('USERENV','CON_NAME') from dual; --使用sys_context查看属于哪个容器
show con_name --用show查看当前属于哪个容器
alter pluggable database orcl1 open; --开启指定PDB
alter pluggable database all open; --开启所有PDB
alter session set container=orcl1; --切换到PDB进去开启数据库
startup
alter pluggable database orcl1 close; --关闭指定的PDB
alter pluggable database all close; --关闭所有PDB
alter session set container=orcl1; --切换到PDB进去关闭数据库
shutdown immediate
- 创建或克隆前要指定文件映射的位置(需要CBD下sysdba权限)
alter system set db_create_file_dest='/u01/app/oracle/oradata/orcl/orcl2';
- 创建一个新的PDB:(需要CBD下sysdba权限)
create pluggable database test admin user admin identified by admin;
alter pluggable database test_pdb open; --将test_pdb 打开
create pluggable database orcl2 from orcl1; --test_pdb必须是打开的,才可以被打开
alter pluggable database orcl2 open; --然后打开这个pdb
alter pluggable database orcl2 close; --关闭之后才能删除
drop pluggable database orcl2 including datafiles; --删除PDB orcl2
- 设置CDB启动PDB自动启动(在这里使用的是触发器)
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
二、Oracle 从PDBSEED创建PDB
select name from v$datafile;
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb3
create pluggable database ora_pdb3 admin user hu identified by hu roles=(connect) default tablespace users datafile '/u01/app/oracle/oradata/ora12cdb/ora_pdb3/users01.dbf' size 20M autoextend on file_name_convert=('/u01/app/oracle/oradata/ora12cdb/pdbseed/','/u01/app/oracle/oradata/ora12cdb/ora_pdb3/');
alter pluggable database ora_pdb3 open;
alter pluggable database ora_pdb3 colse immediate;
show pdbs;
三、通过已有PDB在本地克隆出新的PDB
实验步骤:
alter pluggable database ora_pdb1 close immediate;
alter pluggable database ora_pdb1 open read only;
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb4
create pluggable database ora_pdb4 from ora_pdb1 file_name_convert=('/u01/app/oracle/oradata/ora12cdb/ora_pdb1/','/u01/app/oracle/oradata/ora12cdb/ora_pdb4/');
show pdbs
alter pluggable database ora_pdb4 open;
show pdbs
四、Oracle 12c 使用Non-CDB来创建PDB
现有一个非CDB的数据库ora12cdb,计划将其作为PDB,装入CDB中。
startup mount
alter database open read only;
select OPEN_MODE from v$database;
- 连接到Non-CDB,并执行dbms_pdb.describe过程来创建描述Non-CDB的XML元数据文件。执行该过程的用户必须有sysdba权限。
BEGIN
DBMS_PDB.DESCRIBE
( pdb_descr_file => '/home/oracle/ncdb.xml');
END;
/
shutdown immediate
srvctl stop database -db ora12cdb(集群)
CREATE PLUGGABLE DATABASE old12c_pdb USING '/home/oracle/ncdb.xml' source_file_name_convert = ('/u01/app/oracle/oradata/ora12cdb/', '/u01/app/oracle/oradata/ora12cdb/old12c_pdb/') nocopy tempfile reuse;
select name,open_mode from v$pdbs;
- 执行$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql脚本
这个脚本必须在第一次打开新PDB之前执行。如果PDB不是由Non-CDB创建而来,那么就不需要执行这个脚本。为了执行noncdb_to_pdb.sql脚本,完成以下操作:
a.访问PDB,当前用户必须有sysdba权限,并且权限必须是公共或本地授予给PDB。最好使用as sysdba进行连接。
alter session set container=old12c_pdb;
b.执行noncdb_to_pdb.sql脚本:
SQL>@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
alter pluggable database old12c_pdb open read write; -- 默认启动就是read/write模式
select name,open_mode from v$pdbs;
Oracle 19c创建PDB的几种方式