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快照进行定义:

  1. 手工方式

创建或修改PDB是指定snapshot mode manual字句,这是PDB创建时的默认行为

create pluggable database pdb1 snapshot mode manual;

  1. 定义一个自动创建的时间周期

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

posted @ 2022-05-18 22:13  EverEternity  阅读(501)  评论(0编辑  收藏  举报