【问题标题】:Cannot remove PDB snapshot from CDB container无法从 CDB 容器中删除 PDB 快照
【发布时间】:2020-05-20 11:53:24
【问题描述】:

我正在使用带有 PDB 技术的 Oracle 18c。我不小心从文件系统中删除了其中一个 .dbf 数据文件。这对我来说没问题,因为我可以通过添加新的 PDB 快照来重新创建数据库。但是,旧的 PDB 在“mounted open read write”状态下仍然可见,我基本上无法对它做任何事情:

  1. 我无法将会话/登录切换到损坏的 PDB
  2. 我无法关闭它
  3. 我无法通过输入 alter pluggable database 来删除它 xx...因为它仍然是开放的。
  4. 我无法恢复旧数据文件 - 没有可用的备份。

是否有任何选项可以强制在这种状态下删除 PDB 而无需关闭整个容器 (CDB)?

【问题讨论】:

  • 您可以尝试以下操作:关闭 CDB,启动挂载,更改文件的所有 pdb 数据文件,打开 cdb,然后删除 pdb。我无法尝试这些步骤,所以不能 100% 确定它们是否足够
  • 我可以尝试在虚拟机上设置类似的配置并测试它是否有效,如果有效 - 在目标环境中执行相同的操作。但是,我认为有更简单的选择来删除某些东西,尤其是我拥有所有 sysdba 特权:D

标签: database oracle pdb oracle18c


【解决方案1】:

您可以试试这个(在删除 SYSTEM 数据文件后在 18.3 上成功测试了 NOARCHIVELOG pdb):

alter session set container=cdb$root;
alter system set "_enable_pdb_close_noarchivelog"=true;
alter pluggable database MYPDB close abort;
drop pluggable database MYPDB including datafiles;

【讨论】:

  • 这真是太棒了!我正是在寻找那个“_enable_pdb_close_noarchivelog”参数。
【解决方案2】:

非常感谢!将“_enable_pdb_close_noarchivelog”更改为 true 后,即使处于损坏状态也可以强制关闭 PDB 数据库。非常感谢大家的回答。

【讨论】:

  • 请记住,_enable_pdb_close_noarchivelog 是一个未记录的参数,理论上只能在与 Oracle 支持达成协议的情况下使用。您应该使用 alter system reset "_enable_pdb_close_noarchivelog" scope=both; 重置它
猜你喜欢
  • 2015-07-25
  • 2011-07-30
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多