主 XE 数据库损坏后,Oracle 18c XE 无法备份 PDB 数据库

主 XE 数据库损坏后,Oracle 18c XE 无法备份 PDB 数据库

我有一台 Oracle 18c XE 服务器,其中主 XE 数据库的 system01.dbf 文件损坏。

所有用户数据都在 PDB 数据库中,幸运的是,该数据库看起来没问题(PDB 现在正在生产中运行)。

问题是我无法使用 备份 PDB expdp,因为expdp出现以下错误:

UDE-00604: operation generated ORACLE error 604
ORA-00604: errore riscontrato in SQL ricorsivo livello 2
ORA-01578: blocco dati ORACLE danneggiato (file # 1, blocco # 636)
ORA-01110: file di dati 1: '/opt/oracle/oradata/XE/system01.dbf'

同样,我无法连接 RMAN,因为出现同样的错误:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-00604: errore riscontrato in SQL ricorsivo livello 2
ORA-01578: blocco dati ORACLE danneggiato (file # 1, blocco # 636)
ORA-01110: file di dati 1: '/opt/oracle/oradata/XE/system01.dbf'
RMAN-04015: error setting target database character set to US7ASCII

为了简单起见,我只想备份 PDB,然后从头开始删除并重新安装整个 18c XE 数据库,然后恢复 PDB(不需要恢复任何内容,因为损坏发生在主 XE 数据库中,而 PDB 没问题)。

有没有办法做到这一点?

我没有以前的 RMAN 备份,因为我一直用进行所有备份expdp,但是备份现在已经很旧了,因为expdp几天前可能发生损坏时它就停止工作了。

更新

最终唯一可行的解​​决方案是:

  • 在另一台机器上安装 Oracle 18c XE
  • expdp从旧转储中恢复新机器上没有行的数据库模式
  • 创建从新机器到正在运行的 PDB 的原始服务器的数据库链接
  • 手动将INSERT INTO ... SELECT所有表从原始链接服务器迁移到新机器
  • expdp用新机器转储
  • 在原始服务器上重新安装 Oracle 并导入新创建的转储

答案1

系统表空间 (system01.dbf) 包含由容器和可插拔数据库共享的数据字典对象。您无法备份 PDB,在 CDB 未运行的情况下无法打开它进行访问。我认为您需要从较早的 RMAN 备份中恢复系统表空间,然后才能对 PDB 进行新的备份或将其拔出。

请参阅此处了解更多指导:https://oracle-base.com/articles/12c/multitenant-rman-backup-recovery-cdb-and-pdb-12cr1#cdb-recovery

相关内容