您的位置 首页 Oracle

详谈Oracle12c新特点容器数据库可插拔数据库(CDBPDB)

一般信息

角色

CDB_DBA

系统权限

CREATE PLUGGABLE DATABASE

SET CONTAINER

SET CONTAINER

探究SEED PDB

从PDB$SEED创建PDB

语法:

CREATE PLUGGABLE DATABASE

ADMIN USERIDENTIFIED BY

FILE_NAME_CONVERT = (”,”)

ROLES = ()

DEFAULT TABLESPACE[DATAFILE]

EXTENT MANAGEMENT LOCAL<autoallocate |=”” uniform=”” size=”” >

STORAGE];

例子:

col con_name format a10

col restricted format a10

SELECT v.name,v.open_mode,v.restricted,d.status

FROM v$pdbs v,dba_pdbs d

WHERE v.guid = d.guid

ORDER BY v.create_scn;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB$SEED READ ONLY NO NORMAL

ALTER PLUGGABLE DATABASE pdb1 OPEN;

SELECT v.name,dba_pdbs d

WHERE v.guid = d.guid

ORDER BY v.create_scn;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB$SEED READ ONLY NO NORMAL

SELECT * FROM dba_pdbs;

— 12.1.0.1 version

— SELECT * FROM cdb$view(dba_pdbs);

— 12.1.0.2 versionSELECT * FROM containers(dba_pdbs);

— 12.1.0.1 version

— SELECT * FROM cdb$view(cdb_pdbs);

— 12.1.0.2 version

SELECT * FROM containers(cdb_pdbs);

SELECT table_name,tablespace_name,con_id

FROM containers(dba_tables)

WHERE rownum < 6;

CREATE PLUGGABLE DATABASEpdb1

ADMIN USERTESTIDENTIFIED BYTEST

FILE_NAME_CONVERT= (‘/pdbseed/’,’/pdb1/’);

SELECT v.name,NVL(v.restricted,’n/a’) RESTRICTED,dba_pdbs d

WHERE v.guid = d.guid

ORDER BY v1;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB1 MOUNTED NO NORMAL

PDB$SEED READ ONLY NO NORMAL

ALTER SESSION SET CONTAINER=pdb1;

sho con_name

CON_NAME

——————-

PDB1

ALTER PLUGGABLE DATABASE pdb1 OPEN;

SELECT COUNT(*)FROM dba_tables;

探究数据文件

desc dba_data_files

desc cdb_data_files

SELECT file_name,online_status

FROM dba_data_files;

SELECT file_name,online_status,con_id

FROM cdb_data_files;

探究用户

desc dba_users

desc cdb_users

SELECT username,account_status,lock_date,expiry_date

FROM dba_users

ORDER BY 1;

SELECT username,default_tablespace,temporary_tablespace

FROM dba_users

ORDER BY 1;

SELECT username,temporary_tablespace,con_id

FROM cdb_users

ORDER BY 1;

SELECT username,con_id

FROM cdb_users

WHERE username like ‘TE%’

ORDER BY 1;

ALTER PLUGGABLE DATABASE pdb1 OPEN;

SELECT v.name,’n/a’) “RESTRICTED”,dba_pdbs d

WHERE v.guid = d.guid

ORDER BY v.create_scn;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB$SEED READ ONLY NO NORMAL

PDB1 READ WRITE NO NORMAL

SELECT username,con_id

FROM cdb_users

WHERE username like ‘TE%’

ORDER BY 1;

连接创建PDB

SQL> conn sys@pdb1 as sysdba

Enter password: *********Connected.

SQL> GRANT create session TO TEST;

Grant succeeded.

SQL> SELECT COUNT(*) FROM cdb_sys_privs;

COUNT(*)

0

SQL> SELECT COUNT(*) FROM dba_sys_privs;

COUNT(*)

987

SQL> SELECT privilege,admin_option,common

FROM dba_sys_privs

WHERE grantee = ‘TEST’;

PRIVILEGE ADM COM

—————————————- — —

CREATE SESSION NO NO

col grantee format a30

col granted_role format a30

SELECT * FROM dba_role_privs

WHERE grantee = ‘TEST’;

GRANTEE GRANTED_ROLE ADM DEF COM

—————————— —————————— — — —

TEST PDB_DBA YES YES NO

克隆PDB

从一个容器现有PDB克隆新的PDB

语法:

CREATE PLUGGABLE DATABASEFROMFILE_NAME_CONVERT=(”,'<path’);< span=”” style=”word-wrap: break-word;”>

例子:

ALTER PLUGGABLE DATABASE pdb1 CLOSE;

ALTER PLUGGABLE DATABASE pdb1 OPEN READ ONLY;

CREATE OR REPLACE VIEW pdb_status AS

SELECT v.name,dba_pdbs d

WHERE v.guid = d.guid

ORDER BY v.create_scn;

SELECT * FROM pdb_status;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB$SEED READ ONLY NO NORMAL

PDB1 READ ONLY NO NORMAL

CREATE PLUGGABLE DATABASEpdb1_tFROMpdb1FILE_NAME_CONVERT= (‘\uwpdb\’,’\uwpdbd\’);

SELECT * FROM pdb_status;

NAME OPEN_MODE RESTRICTED STATUS

—————————— ———- ———- ————-

PDB$SEED READ ONLY NO NORMAL

PDB1 READ ONLY NO NORMAL

创建时的UNPLUG/PLUGPDB

Unplug子句

Unplug子句

从unplugged创建

语法:

ALTER PLUGGABLE DATABASEUNPLUG INTO ”;

例子:

conn / as sysdba

ALTER PLUGGABLE DATABASE pdb1 CLOSE;

ALTER PLUGGABLE DATABASEpdb1UNPLUG INTO’pdb1.xml’;

–将文件ftp到新服务器

— the xml文件在$ORACLE_HOME/database下

SQL> CREATE PLUGGABLE DATABASE pdb2 USING ‘pdb1.xml’

SOURCE_FILE_NAME_CONVERT = (‘\pdb1\’,’\pdb2\’)

NOCOPY

STORAGE (MAXSIZE 1G MAX_SHARED_TEMP_SIZE 20M)

TEMPFILE REUSE;

更改PDB

设置子句

默认版本

语法:

ALTER PLUGGABLE DATABASE

例子:

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

CREATE EDITION test_ed;

ALTER PLUGGABLE DATABASEpdb1DEFAULT EDITION= test_ed;

默认表空间

语法:

ALTER PLUGGABLE DATABASEDEFAULT TABLESPACE;

例子:

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

SELECT tablespace_nameFROM dba_tablespaces;

ALTER PLUGGABLE DATABASEpdb1DEFAULT TABLESPACEoradata;

默认表空间类型

ALTER PLUGGABLE DATABASESET DEFAULTTABLESPACE;

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

ALTER PLUGGABLE DATABASEpdb1SET DEFAULT BIGFILE TABLESPACE;

默认临时表空间

ALTER PLUGGABLE DATABASEDEFAULT TEMPORARY TABLESPACE;;

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

ALTER PLUGGABLE DATABASEpdb1DEFAULT TEMPORARY TABLESPACEtemp_grp;

重命名

语法:

ALTER PLUGGABLE DATABASERENAME GLOBAL_NAME TO[.domain];

例子:

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

SELECT *FROM global_name;

ALTER PLUGGABLE DATABASEpdb1RENAME GLOBAL_NAME TOpdb$dev;

PDB内设置时区

语法:

ALTER PLUGGABLE DATABASE [] SET TIME_ZONE = ”;

ALTER PLUGGABLE DATABASESET TIME_ZONE = ‘< | -> HH:MI’;

例子:

conn sys@pdb1 as sysdba

ALTER SESSION SET CONTAINER = pdb1;

SELECT value$ FROM props$

WHERE name = ‘DBTIMEZONE’;

ALTER PLUGGABLE DATABASEpdb1SET TIME_ZONE= ‘Japan’;

SELECT value$FROM props$WHERE name = ‘DBTIMEZONE’;

ALTER PLUGGABLE DATABASEpdb1SET TIME_ZONE= ’00:00′;

SELECT value$FROM props$WHERE name = ‘DBTIMEZONE’;

数据文件重命名

语法:

ALTER PLUGGABLE DATABASERENAME FILE ” TO ”;

例子:

conn sys@pdb1 as sysdba

ALTER PLUGGABLE DATABASE CLOSE;

ALTER PLUGGABLE DATABASEpdb1

RENAME FILE’C:\APP\ORACLE\ORADATA\PDB1\PDB11.DBF’

TO ‘C:\APP\ORACLE\ORADATA\PDB1\PDB101.DBF’;

–原数据文件需手工去除

创建数据文件

ALTER PLUGGABLE DATABASECREATE DATAFILE <” | filenumber> [AS| NEW]

更改数据文件

ALTER PLUGGABLE DATABASEDATAFILE <” | filenumber><online |=”” offline=”” [for=”” drop]=”” resize=”” || END BACKUP>;

更改临时文件

ALTER PLUGGABLE DATABASETEMPFILE <” | filenumber><resize |=”” | DROP [INCLUDING DATAFILES] | ONLINE | OFFLINE>;

移除数据文件

ALTER PLUGGABLE DATABASEMOVE DATAFILE <” | ASM_file_name | filenumber>TO ” [REUSE] [KEEP]

补充日志

语法:

ALTER PLUGGABLE DATABASESUPPLEMENTAL LOG<data |=”” |>

例子:

ALTER PLUGGABLE DATABASEpdb1ADD SUPPLEMENTAL LOG DATA;

存储参数

语法:

ALTER PLUGGABLE DATABASESTORAGE<unlimited |=”” >;

例子:

ALTER PLUGGABLE DATABASEpdb1STORAGE UNLIMITED;

例子:

ALTER PLUGGABLE DATABASESTORAGE (MAX_SHARED_TEMP_SIZE<unlimited |=”” );

例子:

ALTER PLUGGABLE DATABASEpdb1STORAGE (MAX_SHARED_TEMP_SIZE UNLIMITED);

Datafile子句

数据文件联机/脱机

语法:

ALTER PLUGGABLE DATABASEDATAFILE ALL;

例子:

conn / as sysdba

ALTER SESSION SET CONTAINER = pdb1;

ALTER PLUGGABLE DATABASE pdb1 CLOSE;

SELECT open_modeFROM v$pdbs;

SELECT file#,status,enabledFROM v$datafile;

ALTER PLUGGABLE DATABASEpdb1DATAFILE ALL OFFLINE;

ALTER PLUGGABLE DATABASEpdb1DATAFILE ALL ONLINE;

SELECT file#,enabledFROM v$datafile;

ALTER PLUGGABLE DATABASE pdb1 OPEN;

Recovery子句

备份和恢复PDB

语法:

ALTER PLUGGABLE DATABASERECOVER [AUTOMATIC] [FROM ” DATABASE;例子:

ALTER PLUGGABLE DATABASEpdb1RECOVER AUTOMATIC DATABASE;

语法:

ALTER PLUGGABLE DATABASEBACKUP;

例子:

conn / as sysdba

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;

ALTER PLUGGABLE DATABASE pdb1 OPEN;

ALTER SESSION SET CONTAINER = PDB1;

ALTER PLUGGABLE DATABASEpdb1BEGIN BACKUP;

ALTER PLUGGABLE DATABASEpdb1END BACKUP;

Change子句

读写模式打开

语法:

ALTER PLUGGABLE DATABASEOPEN READ [WRITE] [UPGRADE] [RESTRICTED] [FORCE][INSTANCES = <(” |)] >);

例子:

ALTER PLUGGABLE DATABASEpdb1OPEN;

只读模式打开

语法:

ALTER PLUGGABLE DATABASEOPEN READ ONLY;

例子:

ALTER PLUGGABLE DATABASEpdb1OPEN READ ONLY;

Resetlogs模式打开

语法:

ALTER PLUGGABLE DATABASEOPEN RESETLOGS;

例子:

ALTER PLUGGABLE DATABASEpdb1OPEN RESETLOGS;

打开/关闭PDB

语法:

ALTER PLUGGABLE DATABASECLOSE [IMMEDIATE];

例子:

ALTER PLUGGABLE DATABASEpdb1CLOSE;

打开/关闭所有PDB

语法:

ALTER PLUGGABLE DATABASE ALL CLOSE [IMMEDIATE];

例子:

ALTER PLUGGABLE DATABASEALL CLOSE;

只读模式打开PDB

语法:

ALTER PLUGGABLE DATABASEREAD ONLY;

例子:

conn / as sysdba

ALTER PLUGGABLE DATABASE pdb1OPEN READ ONLY;

以READ ONLY RESTRICTED模式打开PDB

语法:

ALTER PLUGGABLE DATABASEOPEN READ ONLY RESTRICTED;

例子:

conn / as sysdbaALTER PLUGGABLE DATABASE pdb1 CLOSE;ALTER PLUGGABLE DATABASE pdb1OPEN READ ONLY RESTRICTED;

移除PDB

从容器中删除PDB

语法:

DROP PLUGGABLE DATABASE[INCLUDING DATAFILES];

例子:

ALTER PLUGGABLE DATABASE pdb1 CLOSE;DROP PLUGGABLE DATABASEpdb1INCLUDING DATAFILES;

关于作者: dawei

【声明】:金华站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章