?
如果是在CDB中,可以使用如下语法:
ALTERPLUGGABLE DATABASEOPEN READ WRITE [RESTRICTED][FORCE]; ALTERPLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE]; ALTERPLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED]; ALTERPLUGGABLE DATABASE CLOSE [IMMEDIATE];
?
ALL:表示所有的PDBS。
ALLEXCEPT 表示需要排除的PDBS。
?
如:
ALTERPLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE; ALTERPLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE; ALTERPLUGGABLE DATABASE ALL OPEN; ALTERPLUGGABLE DATABASE ALL CLOSE IMMEDIATE; ALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN; ALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
示例:
SQL>alter session set container=CDB$ROOT; Sessionaltered. SQL>select con_id, dbid, guid, name , open_mode from v$pdbs; CON_ID DBID GUID NAME OPEN_MODE -------------------- -------------------------------- --------------- ---------- 2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE SQL>ALTER PLUGGABLE DATABASE ALL CLOSE ; Pluggabledatabase altered. SQL>select con_id, dbid, guid, name , open_mode from v$pdbs; CON_ID DBID GUID NAME OPEN_MODE -------------------- -------------------------------- --------------- ---------- 2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA MOUNTED SQL>alter session set container=pdbcndba; Sessionaltered. SQL>ALTER PLUGGABLE DATABASE OPEN; Pluggabledatabase altered. SQL> select con_id, dbid, guid, name , open_modefrom v$pdbs; CON_ID DBID GUID NAME OPEN_MODE -------------------- -------------------------------- --------------- ---------- 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA READ WRITE
?
3 设置Pluggable Database (PDB) 的自动startup
?
默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态,也没有默认的机制,在CDB启动时自动启动PDB。
?
但这里可以通过触发器来实现PDB的自动open:
?
CREATEOR REPLACE TRIGGER open_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTERPLUGGABLE DATABASE ALL OPEN'; END open_pdbs; /
示例:
SQL>show con_name CON_NAME ------------------------------ PDBCNDBA SQL>alter session set container=CDB$ROOT; Sessionaltered. SQL>CREATE OR REPLACE TRIGGER open_pdbs 2 AFTER STARTUP ON DATABASE 3 BEGIN 4 EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 5 ENDopen_pdbs; 6 / Triggercreated.