12C之一创建PDB的方法。

2020-09-14 00:00:00 创建 文件 方式 克隆 打开

12C之一创建PDB的方法。


noCDB

1 PDB$SEED创建PDB

CREATE PLUGGABLE DATABASE prodpdb1 ADMIN USER admin

IDENTIFIED BY oracle ROLES=(CONNECT)

FILE_NAME_CONVERT=('/u01/app/oracle/oradata/prod/pdbseed','/u01/app/oracle/oradata/prod/prodpdb1')

/



2 删除pdb 

ALTER PLUGGABLE DATABASE pdb2_1 CLOSE IMMEDIATE; 


DROP PLUGGABLE DATABASE pdb2_1 INCLUDING DATAFILES; 


3 clone现有PDB的方式


现有PDBorclpdb1,克隆后的PDBorclpdb2

步骤

alter pluggable database orclpdb1 close; 

alter pluggable database orclpdb2 open read only; 


创建新PDB的存储目录

cd $ORACLE_BASE/oradata/orcl

mkdir orclpdb1


设置参数

alter system set db_create_file_dest = '/u01/app/oracle/oradata/orcl/orclpdb1';


具体实施克隆

CREATE PLUGGABLE DATABASE orclpdb1 FROM orclpdb; 


或者 不使用OMF的方式


现有PDBorclpdb,克隆后的PDBorclpdb1

步骤

alter pluggable database prodpdb1 close; 

alter pluggable database prodpdb1 open read only; 


具体实施克隆

CREATE PLUGGABLE DATABASE prodpdb2 FROM prodpdb1

file_name_convert=('/u01/app/oracle/oradata/prod/prodpdb1','/u01/app/oracle/oradata/prod/prodpdb2')

/


注意:这里的子目录orclpdb1会自动创建


打开两个库

orclpdb:

 alter pluggable database orclpdb close immediate;

 alter pluggable database orclpdb open;


orclpdb1:

alter pluggable database orclpdb1 open;


4 从非CDB迁移到PDB(或称为插入到PDB


 方法1 :插入PDB


prod-orclpdb1

这种方式会创建XML文件,这个文件用来描述非CDB数据库的表空间和数据文件信息,这个数据文件在CDB中创建orclpdb1时使用


1)在prod库,只读方式打开数据库


SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database open read only;


2)创建XML文件

exec dbms_pdb.describe ('/u01/app/oracle/oradata/prod/xmlprod.xml') ;


验证文件已经创建

SQL> ! ls -l /u01/app/oracle/oradata/prod/xmlprod.xml

-rw-r--r--. 1 oracle oinstall 6605 Sep 20 09:03 /u01/app/oracle/oradata/prod/xmlprod.xml

 

3)然后一致性关闭非CDBprod


SQL> shutdown immediate;

 4)切换到CDBorcl,创建pdborclpdb1,验证兼容性

SET SERVEROUTPUT ON;

DECLARE

compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/u01/app/oracle/oradata/prod/xmlprod.xml')

WHEN TRUE THEN 'YES'

ELSE 'NO'

END;

BEGIN

DBMS_OUTPUT.PUT_LINE(compatible);

END;

/


5 创建PDB数据库,这里使用copy的模式,将数据库prod的文件拷贝到新的目录下,方便管理 ,也可以使用nocopy的方式,将prod库的文件

保持在原处(不建议这种方式)

CREATE PLUGGABLE DATABASE orclpdb1 USING '/u01/app/oracle/oradata/prod/xmlprod.xml'

copy

FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/prod/', '/u01/app/oracle/oradata/orcl/orclpdb1/’)

/


(6)切换到新的PDBorclpdb1,执行切换脚本

 SQL>alter session set container=orclpdb1

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql


或者直接使用nocopy方式,再切换到orclpdb1执行转换脚本

create pluggable database orclpdb1 using '/u01/app/oracle/oradata/prod/xmlprod.xml' NOCOPY; 

alter session set container=orclpdb1

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql


7 打开PDBorclpdb1,验证打开模式

ALTER PLUGGABLE DATABASE OPEN;

SELECT name, open_mode FROM v$pdbs;

相关文章