zoukankan      html  css  js  c++  java
  • oracle DG搭建方式两种总结

    dg玩了很久了,一直没总结下,每次东拉西扯很多文档拼起来搭,比较麻烦,总结下,节省效率

    一共两种方式,duplicate 和rman 备份恢复

    一、前期准备

    1.开启forcelogging select force_logging from v$database;

    SQL> select force_logging from v$database;

    SQL> alter database force logging;

    2.开启归档(这个就不记说了,百度一堆)

    3. vim /etc/hosts

    加入备库ip 方便拷贝文件 

    4.备份监听文件和tnsnames,参数文件,控制文件

    cp listener.ora listener0527.bak

    cd $ORACLE_HOME/network/admin ;cp tnsnames.ora tnsnames.ora.bak

    create pfile='/home/oracle/pfile.txt' from spfile;

    alter system backup controlfile to trace;   (select * from v$diag_info里找trace就有控制文件文本)

    5. 

    su - grid

    配置静态监听(注意更改ip和服务名)

    主库
    LISTENER_DG =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.**.**)(PORT = 1523))
    )
    )

    SID_LIST_LISTENER_DG=
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = orcl)
    (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/db_1)
    (SID_NAME = orcl2)
    )
    )

    lsnrctl start LISTENER_DG
    ===================备库
    LISTENER_DG=
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.**.**)(PORT = 1523))
    )
    )

    SID_LIST_LISTENER_DG=
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = orcl_dg)
    (ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/dbhome_1)
    (SID_NAME = orcldg1)
    )
    )

    =====将LISTENER_DG加入 crs管理

    su - grid

    srvctl add listener  -l LISTENER_DG -p "TCP:1523" -o $ORACLE_HOME

    srvctl start listener  -l LISTENER_DG

    lsnrctl status LISTENER_DG  (查看监听状态是否有unknow状态的静态监听)

    6. 添加tnsnames
    ###########tnsnames
    orclpri =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.**.**)(PORT = 1523))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)
    )
    )
    orcldg =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.**.**)(PORT = 1523))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl_dg)
    )
    )

    服务名确认配置正确
    tnsping orclpri
    tnsping orcldg

    7.  -----修改sys密码
    orapwd file=$ORACLE_HOME/dbs/orapw${ORACLE_SID} password=Oracle force=y;
    alter user sys identified by Oracle;
    scp $ORACLE_HOME/dbs/orapw${ORACLE_SID} 10.0.**.**:$ORACLE_HOME/dbs/orapw${ORACLE_SID}
    ---test
    sqlplus sys/Oracle@orclpri as sysdba
    sqlplus sys/Oracle@orcldg as sysdba


    8.  ###primary更改参数
    alter system set log_archive_dest_state_2=defer;


    alter system set log_archive_config='dg_config=(orcl,orcldg)';
    alter system set log_archive_dest_2='service=orcldg lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcldg';
    alter system set standby_file_management=auto;
    alter system set fal_server=orcldg;
    alter system set fal_client=orcl;
    alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
    ----都是一样的就不用了
    --alter system set db_file_name_convert='/oracle/app/oracle/oradata/ORCL11G/datafile','/oradata/orcl11gdg' scope=spfile;
    --alter system set log_file_name_convert='/oracle/app/oracle/oradata/ORCL11G/onlinelog','/oradata/orcl11gdg' scope=spfile;

    将之前备份的spfile copy到备库 (然后按需更改,删掉无用参数)

    scp /home/oracle/pfile.txt host03:/home/oracle/pfile.txt

    racdb1.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environment
    racdb2.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environment
    racdb2.__pga_aggregate_target=339738624
    racdb1.__pga_aggregate_target=436207616
    racdb2.__sga_target=503316480
    racdb1.__sga_target=406847488
    *.archive_lag_target=1800
    *.audit_file_dest='/oracle/app/oracle/admin/racdb/adump'
    *.audit_trail='db'
    *.cluster_database=true
    *.compatible='11.2.0.4.0'
    *.log_archive_dest_2='service="orcl11gdg"','LGWR ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="orcl11gdg" net_timeout=30','valid_for=(all_logfiles,primary_role)'
    *.log_archive_dest_state_2='ENABLE'
    *.fal_client='ORCL11G'
    *.fal_server='orcl11gdg'
    *.standby_file_management='AUTO'
    *.log_archive_config='dg_config=(orcl11g,orcl11gdg)'
    *.db_block_size=8192
    *.db_create_file_dest='+DATADG'
    *.db_domain=''
    *.db_name='racdb'
    *.db_securefile='PERMITTED'
    *.diagnostic_dest='/oracle/app/oracle'
    racdb1.instance_number=1
    racdb2.instance_number=2
    *.log_archive_dest_1='location=+DATADG'
    *.memory_target=839909376
    *.open_cursors=300
    *.optimizer_features_enable='11.2.0.4'
    *.processes=150
    *.remote_listener='rac-scan:1521'
    *.remote_login_passwordfile='exclusive'
    racdb1.thread=1
    racdb2.thread=2
    racdb1.undo_tablespace='UNDOTBS1'
    racdb2.undo_tablespace='UNDOTBS2'

    9. ------备库创建目录结构(就是参数文件里audit_file_dest路径得有)

    cd $ORACLE_BASE

    mkdir adump

    10.  启动到 nomount 

    sqlplus / as sysdba

    startup nomount

    上边准备工作都一样,下面两种方法视情况使用

    (duplicate方式)

    11. 在standby节点、主库也可以,确保tnsnames连接对  

    rman target sys/Oracle@orclpri auxiliary sys/Oracle@orcldg

    duplicate target database for standby from active database nofilenamecheck

    没报错等待即可,可以从每次copy完成一个数据文件时间和大小估算总时长需要多久

    完成后数据库就copy完了

    12. 启用实时同步

    sqlplus / as sysdba

    select open_mode from v$database;

    alter database recover managed standby database disconnect;

    alter database open;

    alter database recover managed standby database disconnect using current logfile disconnect from session parallel 8;

     select open_mode from v$database;

    13. 检查内存参数等

    配置归档清理脚本

    检查同步状态

    更改参数文件位置 create spfile='+DATA' from pfile='/home/oracle/pfile.txt';

    (rman 方式)

     第10步完成后,备库启动到nomount后

    1. 主库备份(注意备份存放位置和空间)

    ###primary
    rman target / <<EOF
    run{allocate channel c1 type disk;
    allocate channel c2 type disk;
    backup full database format '/oradata/backup/full_%U.bak' plus archivelog;
    sql 'alter system switch logfile';
    backup current controlfile for standby format '/oradata/backup/c_%U.bak';
    release channel c1;
    release channel c2;
    }
    EOF
     
    2. 将备份好的文件scp到备库
     
    3. 还原standby controlfile

    sqlplus / as sysdba
    修改控制文件位置
    alter system set control_files='/oradata/orcl11ggj/cntrlorcl11ggj.dbf' scope=spfile;
    还原
    restore standby controlfile from '/oradata/backup/c_16v13hnh_1_1.bak';
     
    4. 还原数据库
    restore database;
     
    如果数据文件路径变了的话就需要 set newname再还原
    sql 'alter database mount standby database';
    run
    {set newname for datafile 1 to '/oradata/orcl11ggj/system01.dbf';
    set newname for datafile 2 to '/oradata/orcl11ggj/sysaux01.dbf';
    set newname for datafile 3 to '/oradata/orcl11ggj/undotbs1.dbf';
    set newname for datafile 4 to '/oradata/orcl11ggj/user01.dbf';
    set newname for datafile 5 to '/oradata/orcl11ggj/example01.dbf';
    set newname for datafile 6 to '/oradata/orcl11ggj/tbs2.dbf';
    set newname for datafile 7 to '/oradata/orcl11ggj/tbs3.dbf';
    set newname for datafile 8 to '/oradata/orcl11ggj/ogg.dbf';
    set newname for tempfile 1 to '/oradata/orcl11ggj/temp01.dbf';
    set newname for tempfile 2 to '/oradata/orcl11ggj/temp02.dbf';
    restore database;
    switch datafile all;
    switch tempfile all;
    recover database;
    }
     
    5. 备库添加standby logfile
    alter database add standby logfile '/oradata/orcl11ggj/stdby4.log' size 50M;
    alter database add standby logfile '/oradata/orcl11ggj/stdby5.log' size 50M;
    alter database add standby logfile '/oradata/orcl11ggj/stdby6.log' size 50M;
     
    流年笑掷 未来可期
  • 相关阅读:
    [转]list的交集,差集,并集
    [转]$.post() 和 $.get() 如何同步请求
    [转]Jsoup(一)Jsoup详解(官方)
    [转]Kindeditor图片粘贴上传(chrome)
    [转]kindeditor隐藏上传图片框网络图片或本地上传的功能
    微信公众号平台上传文件返回错误代码:40005 invalid file type
    [转]spring MultipartFile 转 File
    [转]客户端js判断文件类型和文件大小即限制上传大小
    java list排序
    spring security oauth2.0 实现
  • 原文地址:https://www.cnblogs.com/nadian-li/p/14822130.html
Copyright © 2011-2022 走看看