一、CDB、PDB常用管理命令
- 查看PDB信息(在CDB模式下)
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查看当前属于哪个容器
- 启动PDB
alter pluggable database orcl1 open; --开启指定PDB
alter pluggable database all open; --开启所有PDB
alter session set container=orcl1; --切换到PDB进去开启数据库
startup
- 关闭PDB
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 打开
- 克隆PDB(需要CBD下sysdba权限)
create pluggable database orcl2 from orcl1; --test_pdb必须是打开的,才可以被打开
alter pluggable database orcl2 open; --然后打开这个pdb
- 删除PDB(需要CBD下sysdba权限)
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
- 要确认PDBSEED的文件位置
select name from v$datafile;
- 创建一个目录,这个目录是新创建的PDB的名字
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb3
- 从PDBSEED创建PDB
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/');
- 查看PDB
show pdbs;
- 打开PDB
alter pluggable database ora_pdb3 open;
- 关闭PDB
alter pluggable database ora_pdb3 colse immediate;
show pdbs;
三、通过已有PDB在本地克隆出新的PDB
实验步骤:
- 查看PDB
show pdbs
- 关闭需要被克隆的PDB,并打开为只读状态
alter pluggable database ora_pdb1 close immediate;
alter pluggable database ora_pdb1 open read only;
- 创建一个目录,这个目录是新创建的PDB的名字
mkdir -p /u01/app/oracle/oradata/ora12cdb/ora_pdb4
- 克隆PDB
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
- 打开PDB
alter pluggable database ora_pdb4 open;
show pdbs
四、Oracle 12c 使用Non-CDB来创建PDB
现有一个非CDB的数据库ora12cdb,计划将其作为PDB,装入CDB中。
- 进入ORCL,将其设置为只读模式
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;
/
- 关闭Non-CDB
shutdown immediate
srvctl stop database -db ora12cdb(集群)
- 插入Non-CDB
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
- 以读写模式打开新PDB
alter pluggable database old12c_pdb open read write; -- 默认启动就是read/write模式
select name,open_mode from v$pdbs;
- 备份PDB
Oracle 19c创建PDB的几种方式
标签:18c,12c,CDB,database,--,pluggable,open,PDB,ora From: https://blog.51cto.com/jackin/5806479