在12c中,默认的pdb是不随着pdb启动的,但是在12.1.0.2以后,我们可以通过设置,使我们的pdb随着我们cdb而启动
23:17:23 sys@enmoedu> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PROD1 READ WRITE NO
4 PROD3 MOUNTED
23:18:26 sys@enmoedu> alter pluggable database all open;
Pluggable database altered.
Elapsed: 00:00:03.27
23:18:48 sys@enmoedu> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
23:20:35 sys@enmoedu> startup
ORACLE instance started.
Total System Global Area 1560281088 bytes
Fixed Size 2924784 bytes
Variable Size 939527952 bytes
Database Buffers 603979776 bytes
Redo Buffers 13848576 bytes
Database mounted.
Database opened.
23:20:46 sys@enmoedu> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PROD1 MOUNTED
4 PROD3 MOUNTED
可以看到,随着我们重启数据库pdb并没有随着我们的cdb启动,我们查看下pdb启动的状态
23:40:39 sys@enmoedu> select con_name, state from dba_pdb_saved_states;
no rows selected
我们可以通过设置保存它的状态,来让它自启动
23:41:29 sys@enmoedu> alter pluggable database prod3 open;
Pluggable database altered.
Elapsed: 00:00:00.73
23:43:31 sys@enmoedu> alter pluggable database prod3 save state;
Pluggable database altered.
Elapsed: 00:00:00.01
23:43:45 sys@enmoedu> col con_name for a30
23:44:00 sys@enmoedu> select con_name, state from dba_pdb_saved_states;
CON_NAME STATE
------------------------------ ------------------------------------------
PROD3 OPEN
这儿我们需要注意的是,它是记录的你数据库的当前的状态
23:46:10 sys@enmoedu> alter pluggable database prod3 open restricted;
Pluggable database altered.
Elapsed: 00:00:00.74
23:46:26 sys@enmoedu> alter pluggable database prod3 save state;
Pluggable database altered.
23:46:56 sys@enmoedu> select con_name,state,RESTRICTED from dba_pdb_saved_states;
CON_NAME STATE RESTRICTE
------------------------------ ------------------------------------------ ---------
PROD3 OPEN YES
它的retricted open的属性也继承过来了
我们测试下,看看pdb能不能正常的启动
23:47:17 sys@enmoedu> startup force;
ORACLE instance started.
Total System Global Area 1560281088 bytes
Fixed Size 2924784 bytes
Variable Size 939527952 bytes
Database Buffers 603979776 bytes
Redo Buffers 13848576 bytes
Database mounted.
Database opened.
23:49:48 sys@enmoedu> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PROD1 MOUNTED
4 PROD3 READ WRITE YES
可以看到pdb按照我们save的状态进行了启动,那么我们如何的取消pdb的这种启动呢?我们可以通过如下的命令来进行
23:51:31 sys@enmoedu> alter pluggable database prod3 close;
Pluggable database altered.
Elapsed: 00:00:00.27
23:51:43 sys@enmoedu> alter pluggable database prod3 save state;
Pluggable database altered.
Elapsed: 00:00:00.02
23:51:54 sys@enmoedu> select con_name,state,RESTRICTED from dba_pdb_saved_states;
no rows selected
或者使用discard state的方式
23:53:04 sys@enmoedu> select con_name,state,RESTRICTED from dba_pdb_saved_states;
CON_NAME STATE RESTRICTE
------------------------------ ------------------------------------------ ---------
PROD3 OPEN NO
Elapsed: 00:00:00.00
23:53:09 sys@enmoedu>
23:53:09 sys@enmoedu> alter pluggable database prod3 discard state;
Pluggable database altered.
Elapsed: 00:00:00.01
23:54:00 sys@enmoedu> select con_name,state,RESTRICTED from dba_pdb_saved_states;
no rows selected