一般信息
角色
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;