zoukankan      html  css  js  c++  java
  • ORACLE10g R2【单实例 FS→单实例FS】

    ORACLE10g R2【单实例FS→单实例FS】

    本演示案例所用环境:

     

    primary

    standby

    OS Hostname

    pry

    std

    OS Version

    RHEL5.8

    RHEL5.8

    DB Version

    10.2.0.5

    10.2.0.5

    db_name

    stephen

    stephen

    db_unique_name

    stephen

    standby

    service_names

    stephen

    standby

    instance_name

    stephen

    standby

    Primary database configure

    1.启用primary force logging

    SQL> select force_logging from v$database;

    SQL> alter database force logging;

    2.配置redo传输认证

    (1) tnsnames.ora

    STEPHEN =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = pry)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = stephen)

        )

      )

    STANDBY =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = std)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = standby)

        )

      )

     

    (2)tnsping命令解析网络服务名,命令须返回OK.

    此时,standby端未配置监听,无法解析,可以standby配置后再测试。

    $ tnsping standby

     

    (3) 密码文件

    若无密码文件,则创建密码文件。格式:orapw<ORACLE_SID>

    cd $ORACLE_HOME/dbs

    orapwd file=orapwstephen password=oracle force=y

    3.添加standby logfiles

    添加standby logfile 的要求:

    (1) 确保主和备数据库上的日志文件大小是相同的

    (2) 确定备库重做日志文件组的适当数目

    Standby logfile数 = (每个线程的logfile数+1)* 线程数

    (3) 检查create database时指定的MAXLOGFILES和MAXLOGMEMBERS参数,可以通过trace controlfile出来查看

    (4) RAC环境创建standby logfile,指定thread#创建

    每个thread的standby logfile数 = 每个thread的logfile数 + 1

    检查当前环境的logfile:

    set lines 200 pages 300

    col member for a60

    select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#

    union all

    select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;

    根据查询的logfile 信息上文添加standby logfile的要求,添加合理的standby logfile,然后用上面的sql再次查看当前环境的logfile:

    SQL> alter database add standby logfile

         group 4 '/u01/oradata/stephen/redo04.log' size 50M,

         group 5 '/u01/oradata/stephen/redo05.log' size 50M,

         group 6 '/u01/oradata/stephen/redo06.log' size 50M,

         group 7 '/u01/oradata/stephen/redo07.log' size 50M;

    4.修改primary参数文件

    备份spfile:

    create pfile='/tmp/pfile.bak' from spfile;

    修改以下参数,其中stephen,standby分别为primary,standby的db_unqiue_name/TNS-Alias,详见参数详解部分:

    alter system set log_archive_config='dg_config=(stephen,standby)';

    alter system set log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=stephen';

    alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=standby';

    alter system set log_archive_max_processes=30; #根据需求调整个数

    确认以下参数默认值,如不为以下参数值,则修改:

    alter system set remote_login_passwordfile=exclusive scope=spfile; #exclusive/shared

    alter system set log_archive_dest_state_1=enable;

    alter system set log_archive_dest_state_2=enable;

    log_archive_format参数控制归档文件名称格式,默认值以.dbf结尾,为了与datafile区分,建议修改为.arc结尾:

    alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;

    当primary切换为standby角色后,需要增加修改以下参数,建议配置:

    alter system set fal_server=standby;

    alter system set fal_client=stephen;

    alter system set standby_file_management=auto;

    # primary和standby的datafile和logfile存储路径不一样时,设定以下参数:

    alter system set db_file_name_convert='/oradata/standby','/u01/oradata/stephen' scope=spfile;

    alter system set log_file_name_convert='/oradata/standby','/u01/oradata/stephen' scope=spfile;

    注:以上参数,指定spfile修改的,实例重启后生效。

    5.打开归档模式

    首先确认当前数据库是否是归档模式,如果不是,则打开归档模式。

    archive log list;

    shutdown immediate;

    startup mount;

    alter database archivelog;

    archive log list;

    alter database open;

    6.备份primary database

    可以使用之前的备份,但需要确保备份以来的归档没有丢失。

    rman target / <<EOF

    run{allocate channel c1 type disk;

    allocate channel c2 type disk;

    backup full database format '/backup/full_%U.bak' plus archivelog;

    sql 'alter system switch logfile';

    backup current controlfile for standby format '/backup/c_%U.bak';

    release channel c1;

    release channel c2;

    }

    EOF

    Standby database configure

    1.配置环境变量

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1

    export ORACLE_SID=standby

    export PATH=$ORACLE_HOME/bin:$PATH

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib #不同平台变量名不一样

    2.配置redo传输认证

    (1) listener.ora

    配置静态监听:

    LISTENER =

      (ADDRESS_LIST=

        (ADDRESS=(PROTOCOL=tcp)(HOST=std)(PORT=1521))

      )   

    SID_LIST_LISTENER=

      (SID_LIST=

        (SID_DESC=

          (GLOBAL_DBNAME=standby)

          (SID_NAME=standby)           

          (ORACLE_HOME=/u01/app/oracle/product/10.2/db_1)

          )

        )

    启用监听:

    lsnrctl start

    lsnrctl status

     

    (2) tnsnames.ora

    STEPHEN =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = pry)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = stephen)

        )

      )

    STANDBY =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = std)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = standby)

        )

      )

     

    (3) tnsping命令解析网络服务名,命令须返回OK.

    $ tnsping stephen

    ...

    OK (0 msec)

     

    (4) 密码文件

    使用主库的密码文件:

    scp pry:$ORACLE_HOME/dbs/orapwstephen $ORACLE_HOME/dbs/orapwstandby

    3.创建相关目录

    mkdir -p $ORACLE_BASE/admin/standby/{adump,bdump,cdump,dpdump,pfile,udump,hdump}

    mkdir -p /oradata/{standby,arch}

    4.参数文件

    用primary的pfile加以修改,以保证某些参数与primary保持一致,注意主备库内存的大小适当的调整内存相关参数。

    scp pry:/tmp/pfile.bak $ORACLE_HOME/dbs/initstandby.ora

    修改pfile为需要的standby pfile,并创建spfile.特别注意以下事例的参数设定:

    *.audit_file_dest='/u01/app/oracle/admin/standby/adump'

    *.background_dump_dest='/u01/app/oracle/admin/standby/bdump'

    *.core_dump_dest='/u01/app/oracle/admin/standby/cdump'

    *.user_dump_dest='/u01/app/oracle/admin/standby/udump'

    *.control_files='/oradata/standby/control01.ctl'

    *.log_archive_format='%t_%s_%r.arc'

    *.log_archive_config='dg_config=(standby,stephen)'

    *.log_a rchive_dest_1='location=/oradata/arch valid_for=(all_logfiles,all_roles) db_unique_name=standby'

    *.log_a rchive_dest_2='service=stephen lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=stephen'

    *.log_archive_dest_state_1='enable'

    *.log_archive_dest_state_2='enable'

    *.log_archive_max_processes=30  #根据需求调整个数

    *.db_name='stephen'

    *.db_unique_name='standby'

    *.instance_name='standby'

    *.service_names='standby'

    *.fal_server='stephen'

    *.fal_client='standby'

    *.standby_file_management=auto

    *.remote_login_passwordfile='EXCLUSIVE' #exclusive/shared

    #主、备库日志文件和数据文件存放路径不一致,设定以下参数:

    *.db_file_name_convert='/u01/oradata/stephen','/oradata/standby'

    *.log_file_name_convert='/u01/oradata/stephen','/oradata/standby'

    创建spfile:

    create spfile from pfile;

    5.恢复standby controlfile

    SQL> startup nomount;

    RMAN> restore standby controlfile from '/backup/c_05qlbira_1_1.bak';

    6.恢复数据文件

    (1)standby 与primary数据文件存放路径一致:

    RMAN> sql 'alter database mount standby database';

    run

    {allocate channel c1 type disk;

    allocate channel c2 type disk;

    resotore database;

    recover database;

    release channel c1;

    release channel c2;

    }

    (2) standby 与primary数据文件存放路径不一致:

    查询primary database的数据文件信息:

    set lines 300 pages 300

    col name for a60

    col member for a60

    select file#,name from v$datafile

    union all

    select file#,name from v$tempfile;

    启动standby到mount阶段,恢复数据文件:

    RMAN> sql 'alter database mount standby database';

    run

    {set newname for datafile 1 to '/oradata/standby/system01.dbf';

    set newname for datafile 2 to '/oradata/standby/sysaux01.dbf';

    set newname for datafile 3 to '/oradata/standby/undotbs1.dbf';

    set newname for datafile 4 to '/oradata/standby/user01.dbf';

    set newname for tempfile 1 to '/oradata/standby/temp01.dbf';

    restore database;

    switch datafile all;

    switch tempfile all;

    recover database;

    }

    查看standby database log file:

    set lines 200 pages 300

    col member for a60

    select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#

    union all

    select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;

    7.应用日志

    应用archive log:

    recover managed standby database disconnect;

    应用redo logfile:

    recover managed standby database using current logfile disconnect;

    取消应用日志:

    recover managed standby database cancel;

    8.观察日志传输

    跟踪primary,standby database的alert log,观察是否有错误发生,也可以看到应用日志的相关信息。

    确认standby是否应用日志:

    --primary端多切几次日志,观察alert log信息。

    alter system switch logfile;

    alter system switch logfile;

    --观察主备库日志序列号

    archive log list;

    --primary端查询v$archived_log视图,确认日志是否被应用:

    set lines 300 pages 300

    col name for a20

    select name,dest_id,thread#,sequence#,standby_dest,applied,registrar,completion_time from v$archived_log

    where standby_dest='YES'

    order by thread#,sequence#;

    --primary端查询primary,standby的最大日志序列号是否一致:

    select 'Primary :' "DB Role",thread#,max(sequence#)

    from v$archived_log

    where standby_dest='NO'

    group by thread#

    union

    select 'Standby :' "DB Role",thread#,max(sequence#)

    from v$archived_log

    where standby_dest='YES' and applied='YES'

    group by thread#

    order by thread#;

  • 相关阅读:
    Log4Net详解(2)结构篇
    vs2012中使用Spring.NET报错:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常
    vs2010无法打开项目文件的解决方法
    Spring.NET使用assembly方式设置配置文件
    WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
    [转贴]如何做好一个垂直搜索引擎
    怎样预防RSI呢?
    推荐一个打折的站点
    五子棋程序
    共享两本C++的好书
  • 原文地址:https://www.cnblogs.com/liang545621/p/9407034.html
Copyright © 2011-2022 走看看