PDB在数据库启动时保持设定的状态

今天看了下ORACLE培训资料,里面有个命令很有意思。

讲的是数据库在启动或者重启时候,总要去启动PDB,很麻烦,这个小命令就很有意思了。就是能够在数据库CDB启动后,能够让PDB保持你想要他保持的状态。比如关闭状态,比如开启状态等等。省去了自己再用命令调整的步骤。

我们来复现下这个小实验。

第一步,在实验环境中,打开一个数据库。

这时候查看PDB的状态,出了种子PDB是read only的,其他的数据库就是规规矩矩的mounted状态的。这时候,我们把所有的PDB都打开:alter pluggable database all open,并使用 alter pluggable database all save state;命令(此处我想让所有的PDB都能够在CDB打开后能够自己开启,因此用的all,如果你想要让单个数据库是开启状态, 把all改成单独的PDB名字即可。比如,我想MYC01在CDB开启后,他也是read write的状态,那就alter pluggable database MYC01 save state;)

先看看我们在启动数据库,并保持开启状态的数据库当前状态是否是read write.下图可见,没啥毛病。的确是正确的开启状态——read write

好了,我们现在把数据库整个都关闭(关闭之后我还用show pdbs命令,来更好的展示他这的确时数据库关闭的状态了)。如果命令生效,则CDB启动时,pdb所有的状态应该都为READ WRITE。下图可见,的确在CDB启动后,所有的PDB都是启动的状态。说明这个命令有效!

接着我们再来看看,他是否能够让其中一个PDB保持mount状态呢?于是我把其中一个PDB:MYC01手动给他关闭 alter pluggable database myc01 close;然后用命令让他保持这个mount状态。alter pluggable database myc01 save state;

为了能够验证他是否保持的是数据库关闭前的状态,还是save state命令键入前的状态。我们这是哈,把关闭的myc01的状态从mounted 状态,给他手动启动起来,alter pluggable database myc01 open;

如果这个save state命令保存的是键入此命令前的pdb的状态,那么等CDB重启后,应该唯独MYC01这个pdb是mount状态,而其他的则是之前设置的READ WRITE状态。我们来验证下

果然,通过上图,我们发现,CDB重启后,其他的PDB依旧维持我们之前设置的保存read write状态,而MYC01保存了我们之前设置的mounted状态。说明save state命令保存的是我们键入此命令前对应PDB的状态!

我们再来验证下那个教学PPT中的移除保存状态设置的命令

我们尝试把所有刚刚PDB的状态设置都清除。键入alter pluggable database all discard state;按照道理,此命令敲入后,所有的PDB的状态都会回归默认的状态。比如CDB重启后,除了种子pdb,其他的都是mounted状态。我们来看看是不是如此的。

不难发现,除了种子PDB,其他的PDB的状态的确都恢复了原来的默认状态。也就是在CDB重启后,保持mounted状态了。

这两个命令可以帮助数据库环境多的朋友们,在大批量重启后,不需要再一台台去重启数据库。并且可以自己设置具体哪个PDB要mounted,哪个要read write状态。也避免了大批量启动时候,把不该启动的pdb给启动了。

当然,我这儿抛砖引玉:这儿命令是否可以使用instances=all 来使得所有节点上的PDB状态都设置成一致呢?是否对种子pdb有效呢?是否可以保持其他的状态呢?大家可以稍微做一些额外的拓展。很多数据库的设置都很细碎,但是却很有用。希望大家能帮助到各位。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值