PDB的拔插、创建模板、参数级别、轮播快照
PDB常用管理和模板
常用管理
创建和保存状态
--创建pdb
create pluggable database My_PDB admin user App_Admin identified by password
file_name_convert = ('/u01/app/oracle/oradata/ORCL/pdbseed','/u01/app/oracle/oradata/ORCL/my_pdb/');
--打开pdb 数据库
alter pluggable database My_PDB open;
alter pluggable database my_pdb open read only;
-保存pdb打开状态
alter pluggable database my_pdb save state;
Select con_name, state from dba_pdb_saved_states;
--取消pdb的保存state
alter pluggable database my_pdb discard state;
Select con_name, state from dba_pdb_saved_states;
--打开所有pdb
alter pluggable database all open;
关闭、删除、查看状态
--查看pdb状态
show pdbs
select name , open_mode from v$pdbs;
select pdb_id,status,con_id ,pdb_name from dba_pdbs;
--关闭PDB
alter pluggable database my_pdb close;
alter pluggable database all close;
--删除pdb
alter pluggable database My_pdb close;
drop pluggable database MY_pdb including datafiles;
--删除pdb,保留数据文件
drop pluggable database MY_pdb keep datafiles;
模板
--从种子模板创建
create pluggable database pdb1
Admin user pdb1admin identified by passwod
roles=(connect)
file_name_convert=('/u01/app/oracle/oradata/weisi/pdbseed',
'/u01/app/oracle/oradata/weisi/pdb1')
default tablespace users
datafile '/u01/app/oracle/oradata/weisi/pdb1/user01.dbf' size 10M autoextend on next 100M maxsize 20G
storage (maxsize 100G );
--从已存在的pdb创建
create pluggable database pdb3 from pdb1
file_name_convert=('/u01/app/oracle/oradata/orclpdb/pdb1','/u01/app/oracle/oradata/orclpdb/pdb3');
PDB拔插
拔出pdb:
--关闭my_pdb
Alter pluggable database my_pdb close immediate;
--unplug my_pdb
alter pluggable database my_pdb unplug into '/tmp/my_pdb.xml';
插入pdb:
--插入PDB
create pluggable database my_pdb using '/tmp/my_pdb.xml' nocopy tempfile reuse;
--插入pdb并,修改名字和路径
CREATE PLUGGABLE DATABASE my_pdb2 USING '/tmp/my_pdb.xml'
COPY
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/weisi/my_pdb','/u01/app/oracle/oradata/weisi/my_pdb2');
COPY
- 将表空间文件复制到新位置。MOVE
- 将表空间文件移动到新位置。NOCOPY
- 不将表空间文件复制或移动到新位置。
PDB的参数
参数级别:
-
1)实例级别:实例生效,即全局生效
alter system set max_memory_target=100G scope=spfile;
-
2) 会话级别:当前会话生效,其他会话无效
select sysdate from dual;
Alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select sysdate from dual;
-
3)PDB级别
Alter session set container=my_pdb;
alter system set sga_target=10M ;
11g传统架构只有12级别,CDB架构有三个级别,12级别都是一样的
实例参数是保存在spfile中, PDB的参数保存在CDB,可以用 pdb_spfile$查询
--修改所有的PDB,不是所有的参数都支持
alter system set statistics_level=typical container=all;
select * from V$PARAMETEr t where t.ISPDB_MODIFIABLE='TRUE';
PDB快照
在Oracle 18C数据库中,创建PDB时可以同时为PDB创建快照,完整的保存快照创建时间点的PDB数据。PDB快照主要有两个作用:
通过闪回恢复数据到快照时间点
使用快照PDB查询历史数据
每个PDB快照都会关联一个快照名称,可以在创建时定义也可以由系统自动生成。同时,每个快照也会关联创建时的时间戳和SCN。每个PDB允许保存的最大PDB快照数量由MAX_PDB_SNAPSHOTS属性控制,最大和默认值均为8。当创建的PDB快照数量超过定义时,最先创建的PDB快照将会被删除。使用alter database命令可以修改最大允许的PDB快照数量,如果将限制设为0,则会删除所有的PDB快照。
PDB创建时默认开始快照功能,可以通过两种方式对PDB快照进行定义:
- 手工方式
创建或修改PDB是指定snapshot mode manual字句,这是PDB创建时的默认行为
create pluggable database pdb1 snapshot mode manual;
- 定义一个自动创建的时间周期
alter pluggable database pdb1 snapshot mode every 24 hours;
当时间量以分钟表示时,指定值必须小于3000;当时间量以小时表示时,指定值不能超过2000。
PDB快照创建完成后,可以利用其创建新的PDB。使用的PDB快照可通过快照名称、快照SCN或者快照时间戳来指定。
create pluggable database pdb1_day_1 from pdb1 using snapshot <snapshot_name>;
create pluggable database pdb1_day_2 from pdb1 using snapshot at scn <snapshot_SCN>;
在出现用户错误或其他极端情况时,PDB快照还可用于对PDB的闪回。实施步骤如下:
1.关闭PDB1
2.从指定PDB快照创建新的PDB
3.删除PDB1
4.重命名新的PDB为PDB1
5.打开PDB1
SQL> alter pluggable database SNAPSHOT taller_snap_20200513;
Pluggable database altered.
SQL> select con_name, snapshot_name, snapshot_scn from cdb_pdb_snapshots ;
CON_NAME SNAPSHOT_NAME SNAPSHOT_SCN
---------- ------------------------- ------------
TALLER TALLER_SNAP_20200513 2308750