Oracle RAC开启数据库归档模式-使用ASM磁盘组方案

2026年5月9日 作者 XiaofeiHuangfu

适用范围

适用于Oracle 11g,12c,19c RAC环境

方案概述

在Oracle RAC中数据库开启归档模式,使用ASM磁盘组存储归档日志。

实施步骤

1、前置准备

(1)检查数据库和集群状态。确保数据库及集群状态正常。

$crsctl stat res -t
(2) 检查ASM磁盘组空间。确保ASM空间足够,如果空间不足先进行ASM磁盘组扩容。

su – grid

asmcmd lsdg

本文以+ARCH磁盘组为归档目录。

说明:ASM磁盘组中没有归档目录,先进行创建。

su – grid

asmcmd

cd ARCH

mkdir dbname (可以用数据库名称)

归档目录路径为+ARCH/dbname

(3)备份数据库参数

su – oracle

SQL>create pfile=’/tmp/pfile20250607.ora’ from spfile;

cat /tmp/pfile20250607.ora

2、开启归档模式

2.1确认数据库当前归档模式

使用oracle用户登录数据库

su – oracle

sqlplus / as sysdba

SQL>archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /u01/app/oracle/product/19.3.0.0/db_1/dbs/arch

Oldest online log sequence 11

Current log sequence 13

当前数据库为非归档模式

2.2修改归档路径到ASM磁盘组

su – oracle

sqlplus / as sysdba

SQL> alter system set log_archive_dest_1=‘location=+ARCH/dbname’ scope=spfile sid=‘*’;

2.3修改归档文件格式

su – oracle

sqlplus / as sysdba

SQL> alter system set log_archive_format=’%t_%s_%r.arc’ scope=spfile sid=’*’;

2.4关闭所有节点数据库

grid$srvctl stop database -d DB_UNIQUE_NAME

DB_UNIQUE_NAME根据实际名称进行替换。

2.5将节点1启动到mount状态

grid$srvctl start instance -d DB_UNIQUE_NAME -i instnce1 -o mount

DB_UNIQUE_NAME根据实际名称进行替换。

在节点1开启归档模式

su – oracle

sqlplus / as sysdba

SQL> alter database archivelog;

2.6 OPEN两个节点数据库

节点1:

su – oracle

sqlplus / as sysdba

SQL>alter database open;

节点2:

SQL>startup

或者

grid$srvctl start instance -dDB_UNIQUE_NAME -i instnce2

DB_UNIQUE_NAME和instnce2根据实际名称进行替换。

2.7进行验证

在两个节点分别执行

su – oracle

sqlplus / as sysdba

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination +ARCH

Oldest online log sequence 601

Next log sequence to archive 602

Current log sequence 602

手工切换归档

SQL> alter system archive log current;
System altered.

ASM磁盘组中已经产生归档
[grid@ ~]$ asmcmd
ASMCMD> cd arch
ASMCMD> ls

3 回退方案-关闭归档模式

3.1确认数据库当前归档模式

su – oracle

sqlplus / as sysdba

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination +ARCH

Oldest online log sequence 601

Next log sequence to archive 602

Current log sequence 602

当前数据库为归档模式

3.2还原归档路径

su – oracle

sqlplus / as sysdba

SQL> alter system set log_archive_dest_1=‘’ scope=spfile sid=‘*’;

3.3还原归档文件格式

su – oracle

sqlplus / as sysdba

SQL> alter system set log_archive_format=’%t_%s_%r.dbf’ scope=spfile sid=’*’;

说明:该参数可以参数文件变更前的值

3.4关闭所有节点数据库

grid$srvctl stop database -d DB_UNIQUE_NAME

DB_UNIQUE_NAME根据实际名称进行替换。

3.5将节点1启动到mount状态

grid$srvctl start instance -d DB_UNIQUE_NAME -i instnce1 -o mount

DB_UNIQUE_NAME和instnce2根据实际名称进行替换。

在节点1关闭归档模式

su – oracle

sqlplus / as sysdba

SQL> alter database noarchivelog;

3.6 OPEN两个节点数据库

节点1:

su – oracle

sqlplus / as sysdba

SQL>alter database open;

节点2:

SQL>startup

或者

grid$srvctl start instance -d DB_UNIQUE_NAME -i instnce2

DB_UNIQUE_NAME和instnce2根据实际名称进行替换。

3.7进行验证

使用oracle用户登录数据库

su – oracle

sqlplus / as sysdba

SQL>archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /u01/app/oracle/product/19.3.0.0/db_1/dbs/arch

Oldest online log sequence 11

Current log sequence 13

数据库已运行在非归档模式。