(1)将所有节点的实例都关闭
[root@rac1 ~]# srvctl stop database -d oradb
[root@rac1 ~]# srvctl status database -d oradb
Instance oradb1 is not running on node rac1
Instance oradb2 is not running on node rac2
(2)将所有实例启动到mount状态
[root@rac1 ~]# srvctl start database -d oradb -o mount
(3)开启归档需要设置两个参数,一个是归档路径log_archive_dest_1,另外一个是归档的格式log_archive_format,默认是%t_%s_%r.dbf,要设置为%t_%s_%r.arc
设置归档格式 需要重启数据库生效
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile; --这个参数不支持内存修改生效,要使用scope=spfile
System altered.
设置归档路径 不需要重启生效
如果所有节点归档路径在一个目录下面使用
SQL> alter system set log_archive_dest_1='LOCATION=+ARCHIVE' scope=both sid=’*’;
这样在配置文件里面是*. log_archive_dest_1=
如果每个节点都有自己的归档目录使用
SQL> alter system set log_archive_dest_1='LOCATION=+ARCHIVE' scope=both sid=’oradb1’
SQL> alter system set log_archive_dest_1='LOCATION=+DATA' scope=both sid=’oradb2’
这样在配置文件里面是oradb1. log_archive_dest_1= oradb2. log_archive_dest_1=
修改完可以查看该参数
SQL> show parameter log_archive_dest_1;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string LOCATION=+ARCHIVE
在RAC环境下,归档路径的选择是值得斟酌的,如果使用共享的归档目录作为归档路径,则可以减少备份时的复杂性。如果使用独立的目录,则备份时需要进行特殊处理。
(4)因为log_archive_format需要重启才能生效所以需要重启
[root@rac1 ~]# srvctl stop database -d oradb
[root@rac1 ~]# srvctl start database -d oradb -o mount --所有实例启动到mount状态
(5)开启归档模式,开启归档的命令在任一节点执行都可以
SQL> alter database archivelog;
Database altered.
SQL> archive log list; --在其余节点查看一下
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +ARCHIVE
Oldest online log sequence 38
Next log sequence to archive 40
Current log sequence 40
SQL> show parameter log_archive_format;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.arc
归档已经开启,归档路径和格式已经设置好了,最后别忘记将实例启动到open状态。
SQL> alter system switch logfile; --节点1上切换日志,产生归档
System altered.
SQL> select NAME,THREAD# from v$archived_log; --可以看到修改的log_archive_format格式并不生效,asm采用自己的命名规则
NAME THREAD#
-------------------------------------------------------------------------------- ------------------------
+ARCHIVE/oradb/archivelog/2020_03_03/thread_1_seq_40.270.1034098609 1
最后说一下,归档路径如果没有设置,默认和db_recovery_file_dest有关,需要设置db_recovery_file_dest_size参数的大小,建议不要设置这个值,假如设置10G,如果归档达到这个值就满了,产生不了归档,还是使用log_archive_dest_1来设置归档路径,这样归档最大值就是磁盘组容量最大值
SQL> show parameter db_r;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +DATA
db_recovery_file_dest_size big integer 4407M