更新时间:2024-06-14 10:25:56

Oracle备份恢复的归档模式有以下要求:

  • 数据库必须开启归档模式。
  • 支持数据库归档日志在闪回区环境下进行实时复制,但由于闪回区空间有限,请确保闪回区空间足够并能够实时监控闪回区空间利用率。
  • 请确保归档路径所在目录有足够的空间用于承载用户的数据库应用。

检查归档模式是否开启

  1. 登录数据库所在客户端后,进入SQL命令行。

  2. 执行archive log list;命令,查看归档日志状态。

    • 未开启归档模式的数据库,回显为“非存档模式”或“No Archived Mode”。示例如下所示:

      SQL> archive log list;
      数据库日志模式				非存档模式
      自动存档					禁用
      存档终点					USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列			321
      当前日志序列				326
      
    • 开启归档模式的数据库,回显为“存档模式”或“Archived Mode”,同时显示具体的归档路径。示例如下所示:

      数据库日志模式				存档模式
      自动存档					启用
      存档终点					/u01/arch
      最早的联机日志序列			321
      下一个存档日志序列			326
      当前日志序列				326
      

如数据库未开启归档模式,请按照以下步骤开启归档模式。

开启归档模式

下面以Linux 环境为例说明操作步骤。

Linux环境_单/双机

  1. 登录数据库所在客户端,进入SQL命令行。

  2. 执行shutdown immediate;命令,立即关闭数据库。回显示例如下所示:

    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    Oracle例程已经关闭。
    
  3. 执行startup mount;命令,启动数据库至MOUNTED状态。回显示例如下所示:

    SQL> startup mount;
    Oracle例程已经启动。
    数据库装载完毕。
    
  4. 执行alter system set log_archive_dest_1='location=/u01/app/arch' scope =both;命令,设置归档路径。回显示例如下所示:

    SQL> alter system set log_archive_dest_1='location=/u01/app/arch' scope =both;
    数据库已更改。
    

    注意:此处若使用闪回区,且闪回区路径已设置,此步骤可忽略。

  5. 执行alter database archivelog;命令,启动数据库归档模式。

  6. 执行alter database open;命令,更改数据库状态至OPEN。回显示例如下所示:

    SQL> alter database open;
    数据库已更改。
    
  7. 执行archive log list;命令,查看归档路径是否修改成功。回显实例如下所示,表示修改成功:

    SQL> archive log list;
    数据库日志模式				存档模式
    自动存档					启用
    存档终点					/u01/app/arch
    最早的联机日志序列			321
    下一个存档日志序列			326
    当前日志序列				326
    
  8. 执行alter system switch logfile;命令,检查是否可以正常归档。

    注意:

    • 若已经开启归档日志模式,您需要将归档路径由闪回区修改为本地路径,同样需要重启数据库实例至MOUNTED状态进行修改。
    • 同理,归档路径也可以在共享存储上,将第4步中的本地路径“/xx/xx”修改为“+xx/xx”即可。
    • 归档模式已开启,仅需要更改日志归档路径,不需要重启数据库。

Linux环境_RAC

您可以在Oracle数据库安装用户下执行如下操作。

注意:若Oracle RAC环境的归档路径设置在本地文件系统上,则代表日志存储在节点上。

  1. 登录数据库所在客户端,进入SQL命令行。

  2. 执行srvctl stop database -d db_name;命令,关闭数据库。

  3. 执行srvctl start database -d db_name -o mount;命令,启动数据库至MOUNTED状态。

  4. 执行alter system set log_archive_dest_1='location=/u01/app/arch' scope =both;命令,设置归档路径。回显示例如下所示:

    SQL> alter system set log_archive_dest_1='location=/u01/app/arch' scope =both;
    数据库已更改。
    

    注意:此处若使用闪回区,且闪回区路径已设置,此步骤可忽略。

  5. 执行alter database archivelog;命令,开启数据库归档模式。

    注意:Oracle RAC环境仅需要在一个节点上开启归档模式。

  6. 执行alter database open;命令,更改数据库状态至OPEN。回显示例如下所示:

    SQL> alter database open;
    数据库已更改。
    

    注意:Oracle RAC环境下,每个节点均需要更改数据库状态至OPEN。

  7. 执行archive log list;命令,查看归档路径是否修改成功。回显实例如下所示,表示修改成功:

    SQL> archive log list;
    数据库日志模式				存档模式
    自动存档					启用
    存档终点					+data/rac/arch
    最早的联机日志序列			321
    下一个存档日志序列			326
    当前日志序列				326
    
  8. 执行alter system switch logfile;命令,检查是否可以正常归档。

    注意:

    • 若已经开启归档日志,您需要将归档路径由闪回区修改为本地路径,同样需要重启数据库实例至MOUNTED状态进行修改。
    • 同理,归档路径也可以在共享存储上,将第4步中的本地路径“/xx/xx”修改为“+xx/xx”即可。
    • 归档模式已开启,仅需要更改日志归档路径,不需要重启数据库。