20309 发表于 2018-9-24 13:09:53

Oracle-DG配置灾备数据库

  1.   在主库进行下面配置
  1.1确认主数据库运行在归档模式下
            使用下面命令确定主数据库处于归档模式下:
                     SQL> archive log list;
            如果主数据库未处于归档模式下,使用下面命令设置主数据库:
                     SQL> shutdown immediate;--立即关闭数据库
                     SQL> startup mount;                     --开启数据库到mount状态
                     SQL>>
                     SQL>>
1.2确认主库强制写日志
                     SQL> select force_logging from v$database;--查看数据库是否处于归档模式
                     SQL>>
1.3配置主数据库的监听文件与传输文件
            配置监听文件
                     $ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/listener.ora
                     SID_LIST_LISTENER =
                                 (SID_LIST =
                                          (SID_DESC =
                                                 (GLOBAL_DBNAME = TEST)
                                                 (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)
                                 (SID_NAME = TEST)
                                          )
                                 )

                            LISTENER =
                                 (DESCRIPTION =
                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.101)(PORT = 1521))
                            )
            配置传输文件
                     $ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/tnsnames.ora
                            DB102 =
                                 (DESCRIPTION =
                                          (ADDRESS_LIST =
                                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.102)(PORT = 1521))
                                          )
                                 (CONNECT_DATA =
                                          (SERVICE_NAME = TEST)
                                 )
                            )
            启动监听服务
                     $ lsnrctl status       //查看监听服务状态
                     $ lsnrctl start//开启监听服务
  1.4修改主数据库的参数文件(spfile)
            建立pfile文件
                     SQL> create pfile from spfile
            在pfile中加入下面内容
                     vim /oracle/app/oracle/product/10.2.0/db_1/dbs/initTEST.ora
                            DB_UNIQUE_NAME=TEST      --show parameter DB_UNIQUE_NAME确认主库名称
                            LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB101,DB102)' --此处为主库网络连接串(tnsnames.ora)
                            LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'--主库的归档日志路径
                            LOG_ARCHIVE_DEST_2='SERVICE=DB102 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
                            FAL_SERVER=DB101 --网络异常恢复后自动将延迟的归档日志传输到备库,此处为主库网络连接串(tnsnames.ora)
                            FAL_CLIENT=DB102
                            STANDBY_FILE_MANAGEMENT=AUTO       --默认只传递数据,此作用主库把新创建的数据文件也传到备库
            重启数据库
                     SQL> shutdown immediate
                     SQL> startup pfile='/oracle/app/oracle/praoduct/10.2.0/db_1/dbs/initTEST.ora'
                     或模拟spfile失效
                     $ mv /oracle/app/oracle/praoduct/10.2.0/db_1/dbs/spfileTEST.ora spfile.TEST.ora.bak
                     SQL> startup
            查看建立的pfile文件是否生效
                     SQL> show parameter fal
            如果生效,pfile生效,使用pfile重建spfile。
                     create spfile from pfile
  1.5全库备份主数据库(应该在从库配置完成(2.4)后进行)
            备份主数据库
                     RMAN> backup full database format='/home/oracle/db_bak/%U' include current controlfile for standby;
            还原从数据库(需要先执行2.5操作)
                     RMAN> connect auxiliary sys/123456@DB102       --连接从库
                     RMAN> duplicate target database for standby nofilenamecheck;   --还原从数据库
  2.   配置灾备数据库
  2.1在灾备数据库服务器中安装Oracle软件,保证服务器的环境变量、数据库的实例名、数据库的字符集与主数据库相同。
            在主数据库中使用下面命令查看主数据库的字符集:
                     SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
  2.2配置从库监听服务与传输文件
            配置监听文件
                     $ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/listener.ora
                            SID_LIST_LISTENER =
                                 (SID_LIST =
                                          (SID_DESC =
                                                 (GLOBAL_DBNAME = TEST)
                                                 (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)
                                 (SID_NAME = TEST)
                                          )
                                 )

                            LISTENER =
                                 (DESCRIPTION =
                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.102)(PORT = 1521))
                            )
            配置传输文件
                     $ vim /oracle/app/oracle/praduct/10.2.0/db_1/network/admin/tnsnames.ora
                            DB101 =
                                 (DESCRIPTION =
                                          (ADDRESS_LIST =
                                                 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.101)(PORT = 1521))
                                          )
                                 (CONNECT_DATA =
                                          (SERVICE_NAME = TEST)
                                 )
                            )
            开启监听
                     $ lsnrctl start
  2.3配置从库的spfile,追加下面内容
                     DB_UNIQUE_NAME=TEST      --show parameter DB_UNIQUE_NAME
                     LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB101,DB102)'
                     LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'
                     LOG_ARCHIVE_DEST_2='SERVICE=DB101 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
                     FAL_SERVER=DB102
                     FAL_CLIENT=DB101
                     STANDBY_FILE_MANAGEMENT=AUTO
  2.4关闭数据库并重新开启到nomount状态
                     SQL> startup nomount force;
  2.5还原从库,使从库与主库数据保持一致
            复制密码文件
                     $ scp oralce@192.168.101.101:/$ORACLE_HOME/dbs/orapwTEST $ORACLE_HOME/dbs/
            将主库备份的文件拷贝到从库
                     $ mkdir -pv /home/oracle/db_bak/
                     $ scp oralce@192.168.101.101:/home/oracle/db_bak/*/home/oracle/db_bak/
            回复完成,从数据库自动开启到mount状态
                     SQL> select open_mode from v$database;      --查看数据库状态

  3.   测试主数据库与灾备数据库之间的通讯
3.1在主数据库上切换日志组并查询进程
            当查询结果含有LNS,说明主数据库能够像灾备数据库传递日志文件
                     SQL>>
                     SQL> select process from v$managed_standby;   --查看进程
                            PROCESS
                            ---------
                            ARCH
                            ARCH
                            LNS
3.2在灾备数据库中查看是否能够正常开启RFS进程
                     SQL> SQL> select process from v$managed_standby;
                            PROCESS
                            ---------
                            ARCH
                            ARCH
                            RFS
                            RFS
3.3开启灾备数据库的MRP恢复进程
                     SQL>>

  4.   验证灾备
4.1在主数据库中建立表或插入数据
4.2切换主数据库的在线日志组
4.3关闭备份库的MRP进程并将备份库更改为open状态,验证
            关闭Mrp进程
                     SQL>>
PS.
=================================================
(1)备用数据库在日志恢复过程中(MRP进程存在期间)数据库处于MOUNTED状态,此时备用数据库无法打开供读取使用
(2)打开备用数据库
   停止备用库的日志恢复进程MRP
    >
   open备用数据库,备用数据库默认打开为只读方式
    >
(3)重新启动备用数据库的MRP进程,数据库自动从OPEN状态转换到MOUNT 状态
    >
(4)mrp进程停止期间,只要RFS进程存在,那么不影响日志的接收
====================================================

页: [1]
查看完整版本: Oracle-DG配置灾备数据库