Oracle RAC开启数据库归档模式-使用ASM磁盘组方案
适用于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
数据库已运行在非归档模式。