ITPub博客

首页 > 数据库 > Oracle > [20260819]关闭pdb CON_NAME=PDB$SEED.txt

[20260819]关闭pdb CON_NAME=PDB$SEED.txt

原创 Oracle 作者:lfree 时间:2026-08-19 20:51:29 0 删除 编辑

[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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969266