[20260819]关闭pdb CON_NAME=PDB$SEED.txt
--//发现CON_NAME=PDB$SEED,缺省打开在READ ONLY模式,如果不通过它建立新的pdb根本不需要,也就是我的测试环境根本无需要每次启
--//动都打开到read only,做一个记录关闭它、
1.环境:
SYS@book> @ ver2
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 21.0.0.0.0
BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
2.操作:
SYS@book> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 BOOK01P READ WRITE NO
--//缺省PDB$SEED,打开模式=READ ONLY。
SYS@book> alter pluggable database PDB$SEED close;
Pluggable database altered.
SYS@book> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED MOUNTED
3 BOOK01P READ WRITE NO
SYS@book> alter pluggable database PDB$SEED save state;
Pluggable database altered.
SYS@book> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@book> startup
ORACLE instance started.
Total System Global Area 1157625848 bytes
Fixed Size 9684984 bytes
Variable Size 704643072 bytes
Database Buffers 436207616 bytes
Redo Buffers 7090176 bytes
Database mounted.
Database opened.
SYS@book> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 BOOK01P READ WRITE NO
--//可以发现没用,PDB$SEED还是处于read only状态。
3.建立触发器:
--//查询一些资料,建议建立触发器实现:
/* Formatted on 2026-08-19 09:55:11 (QP5 v5.277) */
CREATE OR REPLACE TRIGGER trg_close_pdbseed_after_start
AFTER STARTUP
ON DATABASE
BEGIN
dbms_pdb.exec_as_oracle_script ('alter pluggable database PDB$SEED close');
END;
/
--//重启数据库,测试通过。
SYS@book> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED MOUNTED
3 BOOK01P READ WRITE NO
--//修改如下也可以执行:
CREATE OR REPLACE TRIGGER SYS.trg_close_pdbseed_after_start
AFTER STARTUP
ON DATABASE
BEGIN
--dbms_pdb.exec_as_oracle_script ('alter pluggable database PDB$SEED close');
execute immediate 'alter pluggable database PDB$SEED close';
END;
/
--//估计早期版本,这类命令需要通过dbms_pdb.exec_as_oracle_script方式执行,我前面的测试也没有需要。
--//对比看看两者的启动时间是否存在区别:
--//启用触发器的情况:
$ time /home/oracle/scripts/start_all.sh
The Oracle base remains unchanged with value /u01/app/oracle
Processing Database instance "book": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/startup.log
real 0m58.069s
user 0m0.606s
sys 0m0.367s
--//禁用触发器的情况:
$ time /home/oracle/scripts/start_all.sh
The Oracle base remains unchanged with value /u01/app/oracle
Processing Database instance "book": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/startup.log
real 0m49.322s
user 0m0.706s
sys 0m0.334s
--//禁用还快一些。感觉也好理解,毕竟先启动再关闭。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3180184/ ,如需转载,请注明出处,否则将追究法律责任。