• oracle dg安装测试维护


    在我的日常运维当中还没有dg库,趁着最近不是很忙,自己搭建个DG库测试下,我的环境是centos6.5磁盘目录一致,数据库版本是11gR2-11.0.0.4

    首先安装两个虚拟机,设置好网络,也可以安装好一个再克隆过去,然后安装数据库软件不安装实例,下面是我做实验时的笔记,欢迎大家评论交流。

    1.配置主库静态监听及tns
    SID_LIST_LISTENER1 =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = ortest)
    (ORACLE_HOME = /oracle/app/product/11.2.0/dbhome_1)
    (SID_NAME = ortest)
    )
    )

    LISTENER1 =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1522))
    )
    )

    创建静态监听我试了好久才成功。大家可以直接拷贝这块的,根据自己的主机名修改,注意下缩进。
    tns
    PUBLIC =
    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1522))
    )
    利用netmgr创建主库tns
    TNSSTANDBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1522))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ortest)
    )
    )

    TNAMASTER =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1522))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ortest)
    )
    )


    2.配置主库参数
    --查看force_logging 是否打开
    select name,force_logging from v$database;

    alter database force logging;

    alter system set db_unique_name=ortest scope=spfile;
    alter system set db_name=ortest scope=spfile;
    alter system set instance_name=ortest scope=spfile;
    alter system set fal_client='tnsmaster' scope=both;
    alter system set fal_server='tnsstandby' scope=both;
    alter system SET log_archive_config='DG_CONFIG=(ortest,dgstandby)' scope=both;
    alter system SET log_archive_dest_1='LOCATION=/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ortest' scope=both;
    alter system SET log_archive_dest_2='SERVICE=tnsstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgstandby' scope=both;
    ALTER SYSTEM SET db_file_name_convert='/oracle/app/oradata/ortest','/oracle/app/oradata/ortest' scope=spfile;
    ALTER SYSTEM SET log_file_name_convert='/oracle/archive','/oracle/archive' scope=spfile;
    alter system set standby_file_management='auto' scope=both;

    show parameter log_arc --查看归档的文件格式log_archive_format
    alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
    有一个小插曲我将归档日志文件名写错了,数据库必须包括 '%t %s %r的文件名,重启数据库时报错ORA-19905: log_archive_format must contain %s, %t and %r
    create spfile from pfile ='/oracle/app/admin/ortest/pfile/init.ora.013202017522';
    startup后可以正常启动数据库,但是之前设置的一些参数丢失了,该文件是建库时候的参数,重复上述的一些命令即可。

    3.备库参数设置
    拷贝主库的密码文件scp orapwortest 192.168.1.132:/oracle/app/product/11.2.0/dbhome_1/dbs
    修改密码文件名orapwddgstandby:     mv orapwortest orapwddgstandby
    修改环境变量 vi .bash_profile 设置SID=dgstandby 使参数生效 source .bash_profile
    创建参数文件 cd $ORACLE_HOME/dbs touch initdgstandby.ora 插入一行 db_name=ortest
    启动数据库到nomount
    创建静态监听 复制主库的TNS到备库 测试监听
    主库备库分别执行:tnsping tnsmaster sqlplus sys/orcl@tnsmaster as sysdba
    tnsping tnsstandby sqlplus sys/orcl@tnsstandby as sysdba

    4.使用RMAN创建物理standby
    必须使用TNS来登录RMAN
    rman target sys/orcl@tnsmaster
    connect auxiliary sys/orcl@tnsstandby
    run{
    allocate channel c1 type disk;
    allocate auxiliary channel stby type disk;
    duplicate target database for standby nofilenamecheck from active database
    dorecover
    spfile
    set memory_target='5033164800'
    set instance_name='dgstandby'
    set db_unique_name='dgstandby'
    set log_archive_config='DG_CONFIG=(ortest,dgstandby)'
    SET AUDIT_FILE_DEST='/oracle/app/admin/ortest/adump'
    set control_files='/oracle/app/oradata/ortest/control01.ctl','/oracle/app/fast_recovery_area/ortest/control02.ctl'
    set log_archive_dest_1='LOCATION=/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgstandby'
    set log_archive_dest_2='SERVICE=tnsmaster LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ortest'
    SET db_file_name_convert='/oracle/app/oradata/ortest','/oracle/app/oradata/ortest'
    SET log_file_name_convert='/oracle/archive','/oracle/archive'
    set standby_file_management='auto'
    set fal_client='tnsstandby'
    set fal_server='tnsmaster';
    release channel c1;
    release channel stby;
    }


    --设置SGA大小 ?该如何分配,备库跟主库一致即可,本次测试时设置小了,导致备库启动不了,删除备库ORACLE_HOME/dbs/spfile,重新启动备库到nomount状态,并重复上面的操作
    上述操作讲主库的数据文件创建到备库了,但是备库temp文件未有


    5.添加standby日志--需要添加多少呢,数据库日志组+1(如本备库从主库拷贝过来的是3组日志组,本次添加standby日志组则添加4组)
    alter database add standby logfile group 4 '/oracle/app/oradata/ortest/standby04.rdo' size 50m;
    alter database add standby logfile group 5 '/oracle/app/oradata/ortest/standby05.rdo' size 50m;
    alter database add standby logfile group 6 '/oracle/app/oradata/ortest/standby06.rdo' size 50m;
    alter database add standby logfile group 7 '/oracle/app/oradata/ortest/standby07.rdo' size 50m;

    select *from v$log;
    select * from v$standby_log;

    6.查看主备库的状态
    select name,open_mode,database_role,db_unique_name,protection_mode,protection_level from v$database;--数据库状态 : READ ONLY WITH APPLY 实时应用,该状态时才会同步数据
    select *from v$managed_standby;
    select group#,thread#,sequence#,bytes,archived,status from v$standby_log;
    select * from v$archive_dest_status;
    select message from v$dataguard_status;
    select dest_id,sequence#,applied,status from v$archived_log where dest_id=2 order by 2 asc;

    7.开启同步
    停止redo应用
    alter database recover managed standby database cancel;
    开启redo应用(日志切换才会同步)
    alter database recover managed standby database disconnect from session;
    开启redo应用(实时同步,commit即可同步)
    alter database recover managed standby database using current logfile disconnect;
    测试打开备库
    备库上上面的语句执行

    8.DG应用日常维护
    启动数据库:
    1)主备库都在关闭状态,主备都要启动
    a.启动备库监听
    b.启动备库
    c.启动主库监听
    d.启动主库

    2)主库正常运行,启动备库
    a.启动备库监听
    b.启动备库

    关闭数据库
    1)主库正常运行,只关闭备库
    alter database recover managed standby database cancel;
    shutdown immediate
    lsnrctl stop
    lsnrctl stop listener1

    2)主库备库都要关闭:先关主库后关备库
    a)关闭主库
    shutdown immediate
    lsnrctl stop
    b)关闭备库
    alter database recover managed standby database cancel;
    shutdown immediate
    lsnrctl stop
    lsnrctl stop listener1

    注意:备库应用了归档日志才能删除
    configure archivelog deletion policy to applied on standby--rman下设置主库的参数,11G可以不设置,如下测试

    先关闭备库日志应用,关闭数据库,关闭监听注意两个监听都关闭,在主库切换归档,T表插入几条数据,切换归档,这会主库备库会有归档日志差异
    rman下
    list archivelog all;
    delet archivelog all;
    crosscheck archivelog all;
    delet archivelog all;--该步骤不会删除未应用的归档日志
    然后启动备库监听,启动备库数据库,打开日志应用,此时归档已同步,并且主库插入的数据更新到备库了。


    介绍:DG的三种模式
    1最大保护模式
    2最大可用性 commit的应用
    3最大性能,日志归档或者commit。本次试验是该模式

    三种模式的切换顺序,必须按此顺序
    最大性能》最高可用》最高保护
    最高保护》最高可用》最高性能


    主备切换:只有在主备库都正常情况下切换
    主库宕机备库可以正常工作,备库直接切换成主库

  • 相关阅读:
    学习笔记
    博客园css
    linux命令随时添加
    spring注解
    springboot常用注解
    Ubuntu(16.04)安装Redis
    Mac OS 10.15 虚拟机安装(提供镜像,安装VMware tools,更改分辨率)
    SSM-员工管理项目实战-CRUD-增删改查
    蓝桥杯 2014届真题 地宫取宝 动态规划解法
    设计模式-工厂方法模式 实战演习 代码实现
  • 原文地址:https://www.cnblogs.com/magic-dw/p/13675828.html
Copyright © 2020-2023  润新知