前面整理过Oracle物理备库的配置文档,数据文件是存储在文件系统上的,在生产环境中的DBA,往往都是面对几十上百G的数据,甚至可能是T级别的,文件系统存储数据文件在这些场合下的I/O问题就会逐渐暴露,因而在生产环境中的数据存储一般都使用ASM,或者裸设备,oracle11g开始就不支持裸设备存储数据了,因而本讲主要介绍在ASM环境下配置Dataguard物理备库!
环境介绍:
主库IP:192.168.227.20/24
主库SID: orcl
主库DB_NAME:orcl
主库DB_UNIQUE_NAME:primary
主库SERVICES_NAME: primary.yang.com
备库IP:192.168.227.30/24
备库SID: orcl
备库DB_NAME:orcl
备库DB_UNIQUE_NAME:physical
备库SERVICES_NAME: physical.yang.com
一:主库准备工作
1:配置ASM环境 exec/u01/app/oracle/product/10.2.0/db_1/bin/ocssd ' [root@primary ~]#cd /u01/app/oracle/product/10.2.0/db_1/bin/ [oracle@primary~]# ps -ef |grep -i asm [oracle@primary~]$ export ORACLE_SID=+ASM INSTANCE_NSTATUS SQL> creatediskgroup data normal redundancy SQL> creatediskgroup fra external redundancy SQL> selectname,path,failgroup from v$asm_disk; NAME PATH FAILGROUP SQL> selectname,total_mb,free_mb,usable_file_mb fromv$asm_diskgroup; NAME TOTAL_MB FREE_MB USABLE_FILE_MB
SQL> select file_name fromdba_data_files; FILE_NAME SQL> select member fromv$logfile; MEMBER SQL> show parameterspfile; NAME TYPE VALUE NAME TYPE VALUE SQL> archive log list;
NAME TYPE VALUE
SQL> select member,type fromv$logfile; MEMBER TYPE MEMBER TYPE 4:配置Data guard相关参数 SQL> alter system setdb_unique_name='primary' scope=spfile; SQL> alter system setlog_archive_config='DG_CONFIG=(primary,physical)'; SQL> show parameterremote_login; NAME TYPE VALUE
SQL> alter system setlog_archive_dest_2='service=physical lgwr asyncvalid_for=(online_logfile,primary_role) db_unique_name=physical'scope=spfile; SQL> alter system setlog_archive_dest_state_2=enable; SQL> alter systemset log_archive_format='%t_%s_%r.arc' scope=spfile; SQL> alter system setfal_server='physical'; SQL> alter system setfal_client='primary'; SQL> alter database forcelogging; [oracle@primary ~]$ cat$ORACLE_HOME/network/admin/tnsnames.ora [oracle@primary ~]$ sqlplus/nolog [oracle@primary ~]$ lsnrctlstop [oracle@primary ~]$ sqlplus/nolog SQL>conn sys/123456@primary assysdba NAME TYPE VALUE 6:备份主库相关文件 [oracle@primary ~]$ rman target/ total 670M -rw-r----- 1 oracle oinstall 6.8M Oct 31 15:32ctl_asm_05mqg6vt_1_1 -rw-r----- 1 oracle oinstall 64M Oct 31 15:28dg_01mqg6o9_1_1 -rw-r----- 1 oracle oinstall 592M Oct 31 15:29dg_02mqg6oj_1_1 -rw-r----- 1 oracle oinstall 6.9M Oct 31 15:29dg_03mqg6qa_1_1 -rw-r----- 1 oracle oinstall 25K Oct 31 15:29dg_04mqg6qh_1_1 -rw-r--r-- 1 oracle oinstall 1.5K Oct 31 15:24initorcl.ora |
二:备库上的配置
1:配置ASM NAME PATH FAILGROUP 2:复制主库上的备份数据 [oracle@physical~]$ cp dg_backup/initorcl.ora $ORACLE_HOME/dbs OPEN_MODE NAME SQL> alterdatabase recover managed standby database disconnect fromsession; Total SystemGlobal Area 167772160 bytes [oracle@physical~]$ rman target sys/123456@primary auxiliary/ SQL> alterdatabase recover managed standby database disconnect fromsession; 验证: SQL> selectsequence#,first_time,next_time,applied from v$archived_log order by1; SEQUENCE#FIRST_TIME NEXT_TIME APP 查看日志信息: 主库上切换日志: SQL> altersystem switch logfile; 备库上再次查询: SEQUENCE#FIRST_TIME NEXT_TIME APP 查看日志信息: |
三:排错
1:数据不同步问题排错 SQL> archivelog list; SQL> select *from v$archive_gap; [oracle@physical~]$ cd /u01/app/oracle/admin/orcl/bdump/ 主库上查看归档日志信息 在备库上还原归档日志 RMAN-00571:=========================================================== [oracle@physicaldg_backup]$ export ORACLE_SID=+ASM RMAN> restorearchivelog all; 2:关闭主库后,重启物理备库,报错如下,找不到控制文件 [oracle@physicaldbs]$ grep -i control_files initorcl.ora//该路径需要和asmcmd命令找到的控制文件路径一致 SQL> conn /assysdba Total SystemGlobal Area 167772160 bytes SQL> alterdatabase recover managed standby database disconnect fromsession; 配置物理备库以spfile方式启动,spfile不使用ASM管理 SQL> alterdatabase recover managed standby database cancel; SQL> shutdownimmediate SQL> alterdatabase recover managed standby database disconnect fromsession; SQL> showparameter spfile; NAME TYPE VALUE 3:配置ASM报错如下 Adding toinittab [root@physical~]# /etc/init.d/init.cssd run >/dev/null 2>&1 [1]16323 [root@physical~]# cd /u01/app/oracle/product/10.2.0/db_1/bin/ [root@physicalbin]# ./crsctl check crs
MEMBER TYPE |