请阅读Oracle 12c 安装后强制步骤
要在登录后立即打开所有/特定 PDB,请在 CDB 中创建AFTER STARTUP系统级触发器。
因为,PDB 不是通过 CDB 启动打开的。让我们来看看 :
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
如您所见,PDB 仍处于挂载状态,未打开读/写。
因此,为了让所有PDB 自动打开,请执行以下操作:
做,,SQLPLUS / AS SYSDBA
然后执行:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
它在 CDB 中创建启动后系统级触发器。
现在解锁用户:
sqlplus SYS/password@PDBORCL AS SYSDBA
SQL> ALTER USER hr ACCOUNT UNLOCK IDENTIFIED BY hr;
sqlplus hr/hr@pdborcl
SQL> show user;
USER is "HR"
现在您无需手动打开 PDB,只需连接到 PDB 和您想要的用户即可。
从12.1.0.2开始,您可以通过 CDB 重启保留 PDB 启动状态:
ALTER PLUGGABLE DATABASE pdb_name OPEN;
ALTER PLUGGABLE DATABASE pdb_name SAVE STATE;
要丢弃保存的状态:
ALTER PLUGGABLE DATABASE pdb_name DISCARD STATE;