跳转到主内容
Waters China

如何在快速恢复区 (FRA) 已满并且无法登录数据库时重新启动 Oracle 数据库 - WKB55931

目的

当 FRA 已满且数据库关闭时,重新启动 Oracle 数据库。(无法以“mount”状态重新启动数据库,并且无法使用 SQL*Plus 登录数据库。)

环境

  • 所有使用 Oracle 数据库的 Waters 产品

步骤

  1. 修改数据库初始化参数,使其大小为快速恢复区的两倍。
    1. 查看 alert_sdms.log 文件中的错误信息。
      • 如果警报日志太大而无法在“记事本”中打开,请将警报日志重命名
      • 重现启动错误,以便 Oracle 重新创建警报日志
    2. 错误信息指出快速恢复区已满。它给出了该区域的路径,参数名称和值。
    3. 查找数据库中的 init.ora 文件。通常情况下该文件不存在,但可以通过 SQL*Plus 提示符下的“从 spfile 创建 pfile”或驱动器:\oracle\product\11.2.0\admin\sdms\pfile 中的备份副本创建
    4. 复制该文件。编辑副本,使 db_recovery_file_dest_size 为当前值的两倍
      • 确保 pfile 中的 db_recovery_file_dest 参数与激活的 flash_recovery_area 中的 db_recovery_file_dest 参数相同!pfile 可能具有该参数的旧值。
      • 确保 init.ora 中的 control_files 参数与 spfile 中的相匹配。在“记事本”中打开 spfile 文件,获取 control_files 的当前值。将此值复制到 init.ora 中,匹配 init 文件的语法规则。这样操作可使数据库在启动时,使用当前的控制文件,而不是废弃的或不存在的控制文件
    5. 将文件重命名为 initServiceName.ora,其中 ServiceName 是受影响的数据库实例的服务名称。这些是 Waters 产品的缺省服务名称:
      • NuGenesis LMS 和 SDMS:SDMS
      • NuGenesis Stability:SLIM
      • Empower 3:WAT12
    6. 将 initServiceName.ora 文件复制到:
      • NuGenesis 8:Drive:\oracle\product\11.2.0\SDMS\database
      • NuGenesis 9:Drive:\oracle\product\12.2.0\Oracle12cR2\database
      • Empower 3:Drive:\Empower\Oracle12c\database
    7. 将现有的 SP * .ORA 文件重命名为 .OLD;如果存在 spfile,ORacle 将不使用 init 文件
    8. 重新为数据库实例启动 Oracle 服务
    9. 在 sqlplus 的“idle>”提示符下,运行命令(或指定 initServiceName.ora 的完整路径):
      • startup pfile = initServiceName.ora
      • 鉴于恢复区域限度加倍,数据库将使用新参数启动,现在应可以打开
      • 使用命令使更改的参数成为永久参数:
        • 从 pfile 创建 spfile
      • 关闭、启动数据库,确保数据库使用 spfile 启动
  2. 从 FRA 中删除旧的备份组。
  3. 登录 RMAN 并发出 crosscheck archivelog all 命令。
  4. 确保标准 NuGenesis 或 Empower 数据库备份程序到位。

附加信息

如果无法登录到数据库 - 例如,如果数据库实例由于 FRA 错误而关闭,且未使用 TNS 监听器注册 - 则上述步骤 1.7 将无法执行。在这种情况下,首先使用以下命令确认哪些实例已使用 TNS 注册:

  • lsnrctl status

如果实例不在该列表中:

  1. 删除 \database 文件夹的文件 spfileServiceName.ora。
  2. 将 initServiceName.ora 文件复制到 \database 文件夹中。
  3. 重新启动该实例。

在没有 spfile 的情况下,Oracle 会在启动该实例时使用 init 文件,而无需在命令行中指定任何内容。该实例应该使用 TNS 注册,并可以通过 tnsping 和 sqlplus 使用。使用 sqlplus 以 SYSDBA 身份登录到该实例,继续执行上述步骤中的其余步骤。

id55931, TNS listener