RAC 环境下修改归档模式

本文详细介绍了在Oracle RAC环境中将数据库从非归档模式切换到归档模式的过程,包括关键步骤、环境配置、验证归档模式、归档日志验证等内容。通过实际操作演示,确保数据库的高可用性和数据保护。
RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异。在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题。本文主要描述了由非归档模式切换到归档模式,而由非归档切换的归档步骤相同,不再赘述。
  1. 1、主要步骤:
  2. 备份spfile,以防止参数修改失败导致数据库无法启动
  3. 修改集群参数cluster_database为false
  4. 启动单实例到mount状态
  5. 将数据库置于归档模式(alter database archivelog/noarchivelog)
  6. 修改集群参数cluster_database为true
  7. 关闭单实例
  8. 启动集群数据库
  9. 2、环境
  10. oracle@bo2dbp:~> cat /etc/issue
  11. Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l).
  12. oracle@bo2dbp:~> sqlplus -v
  13. SQL*Plus: Release 10.2.0.3.0 - Production
  14. 使用asm存储方式存放归档日志
  15. 3、修改集群数据库到归档模式
  16. oracle@bo2dbp:~> export ORACLE_SID=ora10g1
  17. oracle@bo2dbp:~> sqlplus / as sysdba
  18. SQL*Plus: Release 10.2.0.3.0 - Production on MonDec 24 16:53:18 2012
  19. Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
  20. Connected to:
  21. Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
  22. With the Real Application Clustersoption
  23. SQL> archive log list; -->查看当前数据库的归档模式
  24. Database log mode No Archive Mode-->非归档模式
  25. Automatic archival Disabled
  26. Archive destination USE_DB_RECOVERY_FILE_DEST
  27. Oldest online log sequence 59
  28. Current log sequence 60
  29. SQL> select instance_name,host_name,statusfrom gv$instance;
  30. INSTANCE_NAME HOST_NAME STATUS
  31. ---------------- -------------------- ------------
  32. ora10g1 bo2dbp OPEN
  33. ora10g2 bo2dbs OPEN
  34. SQL> show parameter cluster -->查看集群的参数,cluster_database为true表示为集群数据库,否则,非集群数据库
  35. NAME TYPE VALUE
  36. ------------------------------------ ----------- ------------------------------
  37. cluster_database boolean TRUE
  38. cluster_database_instances integer 2
  39. cluster_interconnects string
  40. SQL> create pfile='/u01/oracle/db/dbs/ora10g_robin.ora'from spfile; -->先备份spfile
  41. File created.
  42. SQL> alter systemset cluster_database=false scope=spfile sid='*';-->修改为非集群数据库,该参数为静态参数,需要使用scope=spfile
  43. System altered.
  44. oracle@bo2dbp:~> srvctl stop database -d ora10g-->关闭数据库
  45. oracle@bo2dbp:~> srvctl start instance -d ora10g -i ora10g1 -o mount -->启动单个实例到mount状态
  46. oracle@bo2dbp:~> sqlplus / as sysdba
  47. SQL> select instance_name,statusfrom v$instance;
  48. INSTANCE_NAME STATUS
  49. ---------------- ------------
  50. ora10g1 MOUNTED
  51. SQL> alter database archivelog;-->改变数据库到归档模式
  52. Database altered.
  53. SQL> alter system set cluster_database=true scope=spfile sid='*';-->在将数据库改为集群模式
  54. System altered.
  55. SQL> ho srvctl stop instance -d ora10g -i ora10g1 -->关闭当前实例
  56. SQL> ho srvctl start database -d ora10g-->启动集群数据库
  57. SQL> archive log list;
  58. ORA-03135: connection lost contact
  59. SQL> conn / as sysdba
  60. Connected.
  61. SQL> archive log list; -->查看归档模式
  62. Database log mode Archive Mode-->已经处于归档模式
  63. Automatic archival Enabled -->自动归档
  64. Archive destination USE_DB_RECOVERY_FILE_DEST -->归档位置为参数DB_RECOVERY_FILE_DEST的值
  65. Oldest online log sequence 60-->下面是sequence相关信息
  66. Next log sequenceto archive 61
  67. Current log sequence 61
  68. SQL> show parameter db_recovery_file
  69. NAME TYPE VALUE
  70. ------------------------------------ ----------- ------------------------------
  71. db_recovery_file_dest string +REV
  72. db_recovery_file_dest_size big integer 2G
  73. 4、归档验证
  74. SQL> select inst_id,name,thread#,sequence#,statusfrom gv$archived_log; -->当前无任何归档日志
  75. no rows selected
  76. SQL> alter system switch logfile;-->在实例1上进行归档
  77. System altered.
  78. SQL> col name format a65
  79. SQL> select inst_id,name,thread#,sequence#,statusfrom gv$archived_log; -->查看到sequence为61的日志已经归档
  80. INST_ID NAME THREAD#SEQUENCE# S
  81. ---------- ----------------------------------------------------------------- ---------- ---------- -
  82. 1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61
  83. SQL> select name,thread#,sequence#,statusfrom v$archived_log; -->下面是从实例级别的视图来查看
  84. NAME THREAD# SEQUENCE# S
  85. ----------------------------------------------------------------- ---------- ---------- -
  86. +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61 A
  87. SQL> conn system/oracle@ora10g2 -->连接到实例2
  88. Connected.
  89. SQL> show parameter instance_name;
  90. NAME TYPE VALUE
  91. ------------------------------------ ----------- ------------------------------
  92. instance_name string ora10g2
  93. SQL> alter system switch logfile;-->在实例2上进行归档
  94. System altered.
  95. SQL> select inst_id,name,thread#,sequence#,statusfrom gv$archived_log;
  96. -->可以看到sequence为43的日志已经归档
  97. -->注意这个视图查询时同一个归档日志除了出现在自身实例中外,对另外的实例也是可见的
  98. INST_ID NAME THREAD# SEQUENCE# S
  99. ---------- ----------------------------------------------------------------- ---------- ---------- -
  100. 1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61 A
  101. 1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283 2 43 A
  102. 2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61 A
  103. 2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283 2 43 A
  104. -->查看日志的状态
  105. -->注意这个v$log视图将两个实例上的组及状态都显示出来了
  106. -->在这里用thread#来区分,thread#为1表示实例1上的日志组有1,2,且1处于current状态.thread#2类似.
  107. SQL> select * from v$log;
  108. GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
  109. ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
  110. 1 1 62 52428800 2 NO CURRENT 4314741 24-DEC-12
  111. 2 1 61 52428800 2 YES ACTIVE 4312116 24-DEC-12
  112. 3 2 43 52428800 2 YES ACTIVE 4312300 24-DEC-12
  113. 4 2 44 52428800 2 NOCURRENT 4315097 24-DEC-12
  114. -->Author: Robinson
  115. -->Blog : http://blog.csdn.net/robinson_0612
  116. -->归档当前日志,注意该命令在单实例下等同于alter system switch logfile
  117. -->在rac环境下则不同,那就是所有实例上的current日志都将会被归档
  118. SQL> alter system archive logcurrent;
  119. System altered.
  120. -->下面的查询正好验证了上面的描述
  121. -->日志62与44正是刚刚上面的命令同时产生的归档日志
  122. SQL> select inst_id,name,thread#,sequence#,statusfrom gv$archived_log;
  123. INST_ID NAME THREAD#SEQUENCE# S
  124. ---------- ----------------------------------------------------------------- ---------- ---------- -
  125. 2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61 A
  126. 2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283 2 43 A
  127. 2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343 2 44 A
  128. 2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341 1 62 A
  129. 1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953 1 61 A
  130. 1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283 2 43 A
  131. 1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343 2 44 A
  132. 1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341 1 62 A
  133. 8 rows selected.
<span style="font-family:KaiTi_GB2312;font-size:18px;">1、主要步骤:
 备份spfile,以防止参数修改失败导致数据库无法启动
 修改集群参数cluster_database为false
 启动单实例到mount状态
 将数据库置于归档模式(alter database archivelog/noarchivelog)
 修改集群参数cluster_database为true
 关闭单实例
 启动集群数据库

2、环境 
 oracle@bo2dbp:~> cat /etc/issue

 Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l).

 oracle@bo2dbp:~> sqlplus -v

 SQL*Plus: Release 10.2.0.3.0 - Production
 
 使用asm存储方式存放归档日志

3、修改集群数据库到归档模式
 oracle@bo2dbp:~> export ORACLE_SID=ora10g1
 oracle@bo2dbp:~> sqlplus / as sysdba

 SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 24 16:53:18 2012

 Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

 Connected to:
 Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
 With the Real Application Clusters option

 SQL> archive log list;    -->查看当前数据库的归档模式
 Database log mode              No Archive Mode          -->非归档模式
 Automatic archival             Disabled
 Archive destination            USE_DB_RECOVERY_FILE_DEST
 Oldest online log sequence     59
 Current log sequence           60

 SQL> select instance_name,host_name,status from gv$instance;

 INSTANCE_NAME    HOST_NAME            STATUS
 ---------------- -------------------- ------------
 ora10g1          bo2dbp               OPEN
 ora10g2          bo2dbs               OPEN

 SQL> show parameter cluster      -->查看集群的参数,cluster_database为true表示为集群数据库,否则,非集群数据库

 NAME                                 TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 cluster_database                     boolean     TRUE
 cluster_database_instances           integer     2
 cluster_interconnects                string

 SQL> create pfile='/u01/oracle/db/dbs/ora10g_robin.ora' from spfile;  -->先备份spfile

 File created.

 SQL> alter system set cluster_database=false scope=spfile sid='*';  -->修改为非集群数据库,该参数为静态参数,需要使用scope=spfile

 System altered.

 oracle@bo2dbp:~> srvctl stop database -d ora10g                        -->关闭数据库
 oracle@bo2dbp:~> srvctl start instance -d ora10g -i ora10g1 -o mount   -->启动单个实例到mount状态
 oracle@bo2dbp:~> sqlplus / as sysdba
 SQL> select instance_name,status from v$instance;

 INSTANCE_NAME    STATUS
 ---------------- ------------
 ora10g1          MOUNTED

 SQL> alter database archivelog;                                       -->改变数据库到归档模式

 Database altered.

 SQL> alter system set cluster_database=true scope=spfile sid='*';    -->在将数据库改为集群模式

 System altered.

 SQL> ho srvctl stop instance -d ora10g -i ora10g1                     -->关闭当前实例

 SQL> ho srvctl start database -d ora10g                               -->启动集群数据库
  
 SQL> archive log list;
 ORA-03135: connection lost contact
 SQL> conn / as sysdba
 Connected.
 SQL> archive log list;                                                -->查看归档模式
 Database log mode              Archive Mode                           -->已经处于归档模式
 Automatic archival             Enabled                                -->自动归档
 Archive destination            USE_DB_RECOVERY_FILE_DEST              -->归档位置为参数DB_RECOVERY_FILE_DEST的值
 Oldest online log sequence     60                                     -->下面是sequence相关信息   
 Next log sequence to archive   61
 Current log sequence           61

 SQL> show parameter db_recovery_file

 NAME                                 TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 db_recovery_file_dest                string      +REV
 db_recovery_file_dest_size           big integer 2G

4、归档验证 
 SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;  -->当前无任何归档日志

 no rows selected

 SQL> alter system switch logfile;        -->在实例1上进行归档

 System altered.

 SQL> col name format a65
 SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;   -->查看到sequence为61的日志已经归档

    INST_ID NAME                                                                 THREAD#  SEQUENCE# S
 ---------- ----------------------------------------------------------------- ---------- ---------- -
    1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 

 SQL> select name,thread#,sequence#,status from v$archived_log;  -->下面是从实例级别的视图来查看

 NAME                                                                 THREAD#  SEQUENCE# S
 ----------------------------------------------------------------- ---------- ---------- -
 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A

 SQL> conn system/oracle@ora10g2    -->连接到实例2
 Connected.   
 SQL> show parameter instance_name;

 NAME                                 TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 instance_name                        string      ora10g2
 SQL> alter system switch logfile;   -->在实例2上进行归档

 System altered.
 SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;  
 -->可以看到sequence为43的日志已经归档
 -->注意这个视图查询时同一个归档日志除了出现在自身实例中外,对另外的实例也是可见的
    INST_ID NAME                                                                 THREAD#  SEQUENCE# S
 ---------- ----------------------------------------------------------------- ---------- ---------- -
    1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A
    1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A
    2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A
    2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A

 -->查看日志的状态
 -->注意这个v$log视图将两个实例上的组及状态都显示出来了
 -->在这里用thread#来区分,thread#为1表示实例1上的日志组有1,2,且1处于current状态.thread#2类似.   
 SQL> select * from v$log;

  GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
 ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
    1          1         62   52428800          2 NO  CURRENT                4314741 24-DEC-12
    2          1         61   52428800          2 YES ACTIVE                 4312116 24-DEC-12
    3          2         43   52428800          2 YES ACTIVE                 4312300 24-DEC-12
    4          2         44   52428800          2 NO  CURRENT                4315097 24-DEC-12

 -->Author: Robinson
 -->Blog  : http://blog.csdn.net/robinson_0612
 -->归档当前日志,注意该命令在单实例下等同于alter system switch logfile
 -->在rac环境下则不同,那就是所有实例上的current日志都将会被归档   
 SQL> alter system archive log current;

 System altered.

 -->下面的查询正好验证了上面的描述
 -->日志62与44正是刚刚上面的命令同时产生的归档日志   
 SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;

    INST_ID NAME                                                                 THREAD#  SEQUENCE# S
 ---------- ----------------------------------------------------------------- ---------- ---------- -
    2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A
    2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A
    2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343            2         44 A
    2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341            1         62 A
    1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A
    1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A
    1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343            2         44 A
    1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341            1         62 A

 8 rows selected.
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值