Chinaunix首页 | 论坛 | 博客
  • 博客访问: 655007
  • 博文数量: 70
  • 博客积分: 145
  • 博客等级: 入伍新兵
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-11 08:15
个人简介

没有简介就是最好的简介

文章分类

全部博文(70)

文章存档

2020年(1)

2018年(2)

2017年(3)

2016年(11)

2015年(12)

2014年(16)

2013年(19)

2012年(6)

我的朋友

分类: Oracle

2013-11-21 09:56:30

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.   
  10. 2、环境   
  11.  oracle@bo2dbp:~> cat /etc/issue  
  12.   
  13.  Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l).  
  14.   
  15.  oracle@bo2dbp:~> sqlplus -v  
  16.   
  17.  SQL*Plus: Release 10.2.0.3.0 - Production  
  18.    
  19.  使用asm存储方式存放归档日志  
  20.   
  21. 3、修改集群数据库到归档模式  
  22.  oracle@bo2dbp:~> export ORACLE_SID=ora10g1  
  23.  oracle@bo2dbp:~> sqlplus / as sysdba  
  24.   
  25.  SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 24 16:53:18 2012  
  26.   
  27.  Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.  
  28.   
  29.  Connected to:  
  30.  Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  31.  With the Real Application Clusters option  
  32.   
  33.  SQL> archive log list;    -->查看当前数据库的归档模式  
  34.  Database log mode              No Archive Mode          -->非归档模式  
  35.  Automatic archival             Disabled  
  36.  Archive destination            USE_DB_RECOVERY_FILE_DEST  
  37.  Oldest online log sequence     59  
  38.  Current log sequence           60  
  39.   
  40.  SQL> select instance_name,host_name,status from gv$instance;  
  41.   
  42.  INSTANCE_NAME    HOST_NAME            STATUS  
  43.  ---------------- -------------------- ------------  
  44.  ora10g1          bo2dbp               OPEN  
  45.  ora10g2          bo2dbs               OPEN  
  46.   
  47.  SQL> show parameter cluster      -->查看集群的参数,cluster_database为true表示为集群数据库,否则,非集群数据库  
  48.   
  49.  NAME                                 TYPE        VALUE  
  50.  ------------------------------------ ----------- ------------------------------  
  51.  cluster_database                     boolean     TRUE  
  52.  cluster_database_instances           integer     2  
  53.  cluster_interconnects                string  
  54.   
  55.  SQL> create pfile='/u01/oracle/db/dbs/ora10g_robin.ora' from spfile;  -->先备份spfile  
  56.   
  57.  File created.  
  58.   
  59.  SQL> alter system set cluster_database=false scope=spfile sid='*';  -->修改为非集群数据库,该参数为静态参数,需要使用scope=spfile  
  60.   
  61.  System altered.  
  62.   
  63.  oracle@bo2dbp:~> srvctl stop database -d ora10g                        -->关闭数据库  
  64.  oracle@bo2dbp:~> srvctl start instance -d ora10g -i ora10g1 -o mount   -->启动单个实例到mount状态  
  65.  oracle@bo2dbp:~> sqlplus / as sysdba  
  66.  SQL> select instance_name,status from v$instance;  
  67.   
  68.  INSTANCE_NAME    STATUS  
  69.  ---------------- ------------  
  70.           MOUNTED  
  71.   
  72.  SQL> alter database archivelog;                                       -->改变数据库到归档模式  
  73.   
  74.  Database altered. 
  75. alter system set log_archive_dest_1='location=/oracle/app/ora10g1' scope=spfile sid='ora10g1';
  76. alter system set log_archive_dest_1='location=/oracle/app/ora10g2' scope=spfile sid='ora10g2';
  77.   
  78.  SQL> alter system set cluster_database=true scope=spfile sid='*';    -->在将数据库改为集群模式  
  79.   
  80.  System altered.  
  81.   
  82.  SQL> ho srvctl stop instance -d ora10g -i ora10g1                     -->关闭当前实例  
  83.   
  84.  SQL> ho srvctl start database -d ora10g                               -->启动集群数据库  
  85.     
  86.  SQL> archive log list;  
  87.  ORA-03135: connection lost contact  
  88.  SQL> conn / as sysdba  
  89.  Connected.  
  90.  SQL> archive log list;                                                -->查看归档模式  
  91.  Database log mode              Archive Mode                           -->已经处于归档模式  
  92.  Automatic archival             Enabled                                -->自动归档  
  93.  Archive destination            USE_DB_RECOVERY_FILE_DEST              -->归档位置为参数DB_RECOVERY_FILE_DEST的值  
  94.  Oldest online log sequence     60                                     -->下面是sequence相关信息     
  95.  Next log sequence to archive   61  
  96.  Current log sequence           61  
  97.   
  98.  SQL> show parameter db_recovery_file  
  99.   
  100.  NAME                                 TYPE        VALUE  
  101.  ------------------------------------ ----------- ------------------------------  
  102.  db_recovery_file_dest                string      +REV  
  103.  db_recovery_file_dest_size           big integer 2G  
  104.   
  105. 4、归档验证   
  106.  SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;  -->当前无任何归档日志  
  107.   
  108.  no rows selected  
  109.   
  110.  SQL> alter system switch logfile;        -->在实例1上进行归档  
  111.   
  112.  System altered.  
  113.   
  114.  SQL> col name format a65  
  115.  SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;   -->查看到sequence为61的日志已经归档  
  116.   
  117.     INST_ID NAME                                                                 THREAD#  SEQUENCE# S  
  118.  ---------- ----------------------------------------------------------------- ---------- ---------- -  
  119.     1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61   
  120.   
  121.  SQL> select name,thread#,sequence#,status from v$archived_log;  -->下面是从实例级别的视图来查看  
  122.   
  123.  NAME                                                                 THREAD#  SEQUENCE# S  
  124.  ----------------------------------------------------------------- ---------- ---------- -  
  125.  +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A  
  126.   
  127.  SQL> conn system/oracle@ora10g2    -->连接到实例2  
  128.  Connected.     
  129.  SQL> show parameter instance_name;  
  130.   
  131.  NAME                                 TYPE        VALUE  
  132.  ------------------------------------ ----------- ------------------------------  
  133.  instance_name                        string      ora10g2  
  134.  SQL> alter system switch logfile;   -->在实例2上进行归档  
  135.   
  136.  System altered.  
  137.  SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;    
  138.  -->可以看到sequence为43的日志已经归档  
  139.  -->注意这个视图查询时同一个归档日志除了出现在自身实例中外,对另外的实例也是可见的  
  140.     INST_ID NAME                                                                 THREAD#  SEQUENCE# S  
  141.  ---------- ----------------------------------------------------------------- ---------- ---------- -  
  142.     1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A  
  143.     1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A  
  144.     2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A  
  145.     2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A  
  146.   
  147.  -->查看日志的状态  
  148.  -->注意这个v$log视图将两个实例上的组及状态都显示出来了  
  149.  -->在这里用thread#来区分,thread#为1表示实例1上的日志组有1,2,且1处于current状态.thread#2类似.     
  150.  SQL> select * from v$log;  
  151.   
  152.   GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM  
  153.  ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------  
  154.     1          1         62   52428800          2 NO  CURRENT                4314741 24-DEC-12  
  155.     2          1         61   52428800          2 YES ACTIVE                 4312116 24-DEC-12  
  156.     3          2         43   52428800          2 YES ACTIVE                 4312300 24-DEC-12  
  157.     4          2         44   52428800          2 NO  CURRENT                4315097 24-DEC-12  
  158.   
  159.  -->Author: Robinson  
  160.  -->Blog  : http://blog.csdn.net/robinson_0612  
  161.  -->归档当前日志,注意该命令在单实例下等同于alter system switch logfile  
  162.  -->在rac环境下则不同,那就是所有实例上的current日志都将会被归档     
  163.  SQL> alter system archive log current;  
  164.   
  165.  System altered.  
  166.   
  167.  -->下面的查询正好验证了上面的描述  
  168.  -->日志62与44正是刚刚上面的命令同时产生的归档日志     
  169.  SQL> select inst_id,name,thread#,sequence#,status from gv$archived_log;  
  170.   
  171.     INST_ID NAME                                                                 THREAD#  SEQUENCE# S  
  172.  ---------- ----------------------------------------------------------------- ---------- ---------- -  
  173.     2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A  
  174.     2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A  
  175.     2 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343            2         44 A  
  176.     2 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341            1         62 A  
  177.     1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_61.459.802892953            1         61 A  
  178.     1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_43.458.802893283            2         43 A  
  179.     1 +REV/ora10g/archivelog/2012_12_24/thread_2_seq_44.456.802894343            2         44 A  
  180.     1 +REV/ora10g/archivelog/2012_12_24/thread_1_seq_62.457.802894341            1         62 A  
  181.   
  182.  8 rows selected. 
阅读(1312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~