设为首页 加入收藏

TOP

Oracle 12c新特点详述(二)
2015-08-31 20:00:07 来源: 作者: 【 】 浏览:118
Tags:Oracle 12c 特点 详述
语句被用来设置PDB的打开模式。在该SQL语句中,可以给一个特定PDB名或用关键字“all”,例如:


alter pluggabledatabase all open;


8.? ? 关闭CDB中所有的Oracle12c可插拔数据库


下列语句关闭CDB中所有的PDB:


alter pluggabledatabase all close;


9.? ? 克隆同一个CDB中一个现有的Oracle12cPDB


下面,我们将克隆同一个CDB中的现有的PDB。为此,在开始克隆前,必须先关闭该PDB,然后以READ ONLY模式打开:


alterpluggable database My_PDB close;


alterpluggable database My_PDB open read only;


createpluggable database My_Clone


fromMy_PDB


file_name_convert= ('/my_pdb', '/my_clone');


alterpluggable database My_PDB close;


alterpluggable database My_PDB open;


alterpluggable database My_Clone open;


10.? 从容器数据库(CDB)中拔出可插拔数据库(PDB)


下面,展示如何从cdb1中拔出my_pdb。“into”关键字后必须跟PDB描述的全路径,被该操作以XML格式产生:


alterpluggable database My_PDB


unpluginto '/home/oracle/oradata/cdb1/my_pdb/my_pdb.xml';


“my_pdb.xml“文件确定数据文件的名字和全路径等信息。这些信息在插入操作时会用到。注意:PDB还是其从中拔出的CDB的一部分,只是现在状态变为了拔出(UNPLUGGED)而已。


拔出操作实际上对数据文件做了一些改变,以便记录PDB被正确成功的拔出。因为它还是CDB得一部分,你能给它做一个RMAN备份。这提供了一个归档拔出日志的方便方法。


一旦你备份了它,你就可以把它从字典库里移走——但是,当然,为了今后的插入操作,你必须保留这些数据文件。


droppluggable database My_PDB keep datafiles;


11.? Oracle 12c可插拔数据库——拔插和克隆操作


11.1.? 把My_PDB插入cdb2


1)? ? 连接到目标容器数据库,这里是目录/home/oracle/oradata/cdb2下的cdb2


sqlplus sys/pass@localhost:1521/cdb2 as sysdba


2)? ? 然后,确认将要被插入的PDB和新的主容器数据库是兼容的


exec DBMS_PDB.Check_Plug_Compatibility(PDB_Descr_File=>'/home/oracle/oradata/cdb1/my_pdb/my_pdb.xml');


如果不兼容,该过程会报错。


3)? ? 现在,插入PDB。using关键字后必须跟上PDB描述的绝对路径,即,先前拔出操作时产生的.XML文件。


create pluggable database My_PDB


using '/home/oracle/oradata/cdb1/my_pdb/my_pdb.xml'


move


file_name_convert = ('/cdb1/', '/cdb2/');


alter pluggable database My_PDB open;


11.2.? 从拔出的PDB克隆创建一个PDB


该例子建议保留一个被拔出的PDB的备份,这会有很多应用场景,例如:


1)? ? 在一个开发部门,允许研发者和测试者快速、重复的提供一个开始;


2)? ? 支持自学;


3)? ? 提供一个交付新应用的方法;


为了演示,假设你已经拔出了MY_PDB1,并把它放在了合适的目录下,并设置为只读。


create pluggable database MY_PDB1 as clone


using


'/home/oracle/oradata/bk_pdbs/my_pdb1/my_pdb1.xml'


copy


file_name_convert =


('/bk_pdbs/my_pdb1/', '/cdb1/my_pdb1/');


alter pluggable database my_pdb1 open;


“as clone”SQL子句确保新的PDB得到一个正确的、全局的唯一标识。然后,你能看到你的GUIDs:


selectPDB_Name, GUID


fromDBA_PDBs


orderby Creation_scn;


注意:PBD被从CBD拔出后以及后来插入另一个CBD,DBA_PDBs.GUID就会一直伴随着它。服务器代码会强制CBD内PDB的唯一性,但并不强制CBD间的唯一性。


11.3.? 把一个非CBD库当做PDB插入一个已有的CBD库


这里,我将展示给你如何把12.1前的数据库转变为一个PDB。你共有几个方法做到这点:


1)? ? 可传输表空间/数据泵;


2)? ? 复制;


3)? ? 把原来的非CBD库升级到12c,并把它插入12c CDB;


因为头两个方法曾经都是标准方法,我们这里将只描述最后一个。


注意:不是一个升级步骤就能完成所有任务,它是一个两阶段操作:首先,把你现存的数据库升级为12.1非CDB库;接着,把你的非CDB库插入现存的CDB中——仅仅插入PDB和接着完成一个插入后步骤。


?? 第一步,先把12.1前的库升级为12c版本;


?? 第二步,连到非CDB库,以便产生表示文件,正如拔出一个PDB部分所示:


shutdownimmediate


startupmount


alterdatabase open read only;


begin


DBMS_PDB.Describe(PDB_Descr_File=> ‘/home/oracle/oradata/noncdb/noncdb.xml’);


end;


/


shutdownimmediate


?? 下一步是连接到接收CDB库——cdb2,并用表示文件将非cdb库的数据文件插入。


createpluggable database noncdb_pdb


asclone


using'/home/oracle/oradata/noncdb/noncdb.xml'


source_file_name_convert= none


copy


file_name_convert= ('/noncdb/', '/cdb2/noncdb_pdb/')


storageunlimited;


?? 现在打开库,最后完成插入,关闭,再打开,把限制状态设置为YES:


alterpluggable database noncdb_pdb open;


alterpluggable database noncdb_pdb close;


alterpluggable database noncdb_pdb open restricted;


?


?? 最后,运行一个Oracle提供的SQL*Plus脚本来移去现在本地字典中的数据,因为,在新版本中,定义Oracle系统的元数据仅仅在整个CDB中存储一次。


altersession set container = ExNonCDB;


@?/rdbms/admin/noncdb_to_pdb.sql


?? 作为最后一步,打开新被接收的先前的非CDB库。


alterplugga

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java语言测试连接Oracle数据库 下一篇Oracle外部表的管理和应用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: