Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-01

Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-01


作者说明:
Heaven Yin(胖头鱼),网思科技股份有限公司Oracle高级工程师,拥有OCP 11g/12c,OCM 11g/12c。现在于四川移动网管中心担任驻场DBA,负责云数据库资源池,Exadata等数据库管理与维护。

第一期 容器数据库概览

1.容器数据库概念

从Oracle Database 12cR1开始,Oracle在数据库层面引入了容器库(container database)的概念,允许一个容器数据库(CDB)承载多个可插拔数据库(PDB)。其中CDB的全称为Container Database(CDB$ROOT),PDB的全称为Pluggable Database。实际数据存放在PDB之中;每个PDB相互独立,相当于一套单数的数据库,拥有自己的诸如system,sysaux,undo(12.2开始)等和数据表空间。
从12.2开始引入了应用容器(Application Container)的概念,类似于在CDB中再嵌套一个类似于CDB$ROOT的应用根容器(Application Root),在这个应用根容器下在承载多个应用PDB(Application PDB)。
注:由于应用容器使用相对较少,本文不做详细讲解。
Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-01

2.创建可插拔数据库

·在CDB中有一个比较特殊的PDB——种子库(Seed,PDB$SEED),这个PDB始终为READ ONLY状态,作为模板用于创建一个新的空PDB。开启OMF的状态下PDB简单创建语句如下:

	CREATE PLUGGABLE DATABASE pdb_name
	ADMIN USER admin_user_name IDENTIFIED BY password
	DEFAULT TABLESPACE tablespace_name DATAFILE SIZE xx AUTOEXTEND ON NEXT xx MAXSIZE UNLIMITED
	[STORAGE (MAXSIZE XX)]
	/

·当然我们也可以通过现有PDB的方式创建新的PDB,开启OMF的状态下PDB简单k克隆语句如下:

	ALTER PLUGGABLE DATABASE source_pdb CLOSE;
	ALTER PLUGGABLE DATABASE souece_pdb OPEN READ ONLY;
	CREATE PLUGGABLE DATABASE target_pdb FROM source_pdb;
	ALTER PLUGGABLE DATABASE source_pdb CLOSE;
	ALTER PLUGGABLE DATABASE source_pdb OPEN;
	ALTER PLUGGABLE DATABASE target_pdb OPEN;

·也可以通过DBLINK从远程容器数据库克隆PDB和non-CDB,语句略。
·还可以通过Unplug和Plug的方式创建PDB

	ALTER PLUGGABLE DATABASE source_pdb CLOSE IMMEDIATE;
	ALTER PLUGGABLE DATABASE source_pdb UNPLUG INTO ‘/tmp/pdb.xml’;
	[DROP PLUGGABLE DATABASE source_pdb KEEP DATAFILES;]
	set serveroutput on
	DECLARE
	l_result BOOLEAN;
	BEGIN
	l_result := DBMS_PDB.check_plug_compatibility(pdb_descr_file => '/tmp/pdb.xml',pdb_name => 'target_pdb');
	IF l_result THEN
	DBMS_OUTPUT.PUT_LINE('Yes');
	ELSE
	DBMS_OUTPUT.PUT_LINE('No');
	END IF;
	END;
	/
	CREATE PLUGGABLE DATABASE target_pdb USING ‘/tmp/pdb.xml’ NOCOPY;
	ALTER PLUGGABLE DATABASE target_pdb OPEN;

3.可插拔数据库状态

容器数据库中,PDB拥有以下几个状态:

状态 说明
MOUNT PDB closed状态
READ WRITE PDB open读写状态
READ ONLY PDB open只读状态

默认情况下,当CDB重启后,PDB会处于MOUNT状态,如果需要PDB随CDB启动open,可以在CDB创建触发器,也可以在PDB在OPEN状态下,使用ALTER PLUGGABLE DATABASE xx SAVE STATE;(保存PDB当前状态,CDB重启后恢复到该状态)。

下期预告:

容器数据库的用户管理。

上一篇:完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)


下一篇:使用dom4j实现java解析XML实例