ITPub博客

首页 > 数据库 > > 12C之一创建PDB的方法。

12C之一创建PDB的方法。

作者:Abraham林老师 时间:2020-09-14 17:38:30 0 删除 编辑

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的方式


现有PDB为orclpdb1,克隆后的PDB为orclpdb2

步骤

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的方式


现有PDB为orclpdb,克隆后的PDB为orclpdb1

步骤

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)然后一致性关闭非CDB的prod库


SQL> shutdown immediate;

 (4)切换到CDB库orcl,创建pdb库orclpdb1,验证兼容性

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)切换到新的PDB库orclpdb1,执行切换脚本

 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) 打开PDB库orclpdb1,验证打开模式

ALTER PLUGGABLE DATABASE OPEN;

SELECT name, open_mode FROM v$pdbs;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31540773/viewspace-3125057/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-07-18

  • 博文量
    169
  • 访问量
    1544