当前位置:Gxlcms > mysql > oracle10gdgmgrl主从搭建

oracle10gdgmgrl主从搭建

时间:2021-07-01 10:21:17 帮助过:41人阅读

dgmrl oracle 10G ?dg配置 1、安装数据库版本,这里直接clone的方式进行安装 http://www.itopers.com/?p=722 2、进行一次全备,使用rman进行,如下提供下备份脚本: #!/bin/bash## oracle full backup#date="$(date "+%F")"# backup dirdir="/home/oracle/ba

dgmrl oracle 10G ?dg配置
1、安装数据库版本,这里直接clone的方式进行安装

http://www.itopers.com/?p=722
2、进行一次全备,使用rman进行,如下提供下备份脚本:

  1. #!/bin/bash
  2. #
  3. # oracle full backup
  4. #
  5. date="$(date "+%F")"
  6. # backup dir
  7. dir="/home/oracle/backup_stage/${date}"
  8. if [ -d "$dir" ];then
  9. for i in `seq 10`
  10. do
  11. if [ ! -d "${dir}_${i}" ];then
  12. dir="${dir}_${i}"
  13. break;
  14. else
  15. continue;
  16. fi
  17. done
  18. fi
  19. #create backup dir
  20. [ ! -d $dir ] && mkdir $dir -p
  21. chown -R oracle.oinstall $dir
  22. # check user
  23. if [ "$USER" != "oracle" ];then
  24. echo "please execute this shell to oracle"
  25. echo ""
  26. exit 1
  27. fi
  28. # begin backup
  29. rman target / log=$dir/incre_$date.log append <<!--
  30. run {
  31. allocate channel c1 device type disk;
  32. allocate channel c2 device type disk;
  33. allocate channel c3 device type disk;
  34. set command id to "rman_$date";
  35. backup incremental level 0 format '$dir/incre_0_%U' tag 'incre_0_${date}_bak' database;
  36. release channel c1;
  37. release channel c2;
  38. release channel c3;
  39. }
  40. run {
  41. allocate channel c4 device type disk;
  42. allocate channel c5 device type disk;
  43. backup archivelog all format '$dir/archive_0_%U' tag 'archivelog_$date' delete all input;
  44. backup current controlfile for standby format '$dir/ctl_%U';
  45. release channel c4;
  46. release channel c5;
  47. }
  48. exit
  49. !
  50. # backup init.ora and controlfile
  51. rm -rf /tmp/init.ora /tmp/otl.ctl
  52. sqlplus /nolog<<!
  53. conn / as sysdba;
  54. create pfile='/tmp/init.ora' from spfile;
  55. alter database backup controlfile to trace as '/tmp/otl.ctl';
  56. exit;
  57. !
  58. # copy backup to backup dir
  59. cp $ORACLE_HOME/dbs/orapw* /tmp/init.ora /tmp/otl.ctl $dir
  60. # backup end</script-->

将备份拷到从库服务器上,我这里就是是nfs的方式,直接挂载就行。

3、修改下初始化文件,需要修改下db_unique_name,log_archive_dest_*,fal_server/fal_client参数

  1. SQL> create spfile from pfile='/home/oracle/backup_stage/2014-11-04/init.ora';
  2. File created.
  3. SQL> startup nomount;
  4. ORACLE instance started.
  5. Total System Global Area 1.0737E+10 bytes
  6. Fixed Size 2114144 bytes
  7. Variable Size 2298482080 bytes
  8. Database Buffers 8422162432 bytes
  9. Redo Buffers 14659584 bytes

4、启到nomount后,进入rman进行恢复备份。

先恢复控制文件,然后启到mount状态

  1. [oracle@statdb 2014-11-04]$ rman target /
  2. RMAN> restore controlfile from '/home/oracle/backup_stage/2014-11-04/ctl_2ppmpuql_1_1';
  3. Starting restore at 2014-11-04 22:35:41
  4. using channel ORA_DISK_1
  5. channel ORA_DISK_1: restoring control file
  6. channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
  7. output filename=/U01/app/oracle/oradata/nstatdb/control01.ctl
  8. output filename=/U01/app/oracle/oradata/nstatdb/control02.ctl
  9. output filename=/U01/app/oracle/oradata/nstatdb/control03.ctl
  10. Finished restore at 2014-11-04 22:35:46
  11. RMAN> alter database mount;
  12. database mounted
  13. released channel: ORA_DISK_1

5、查看下备份。

  1. RMAN>list backup;

6、恢复数据库

  1. RMAN>restore database;

8、开始配置dg,将已经存在的configuration配置删除,remove configuration;配置好网络,tnsname,使用tnsping测试连通性。

在主从将dg_broker开启来

  1. alter system set dg_broker_start =true;

9、进入dgmgrl管理,创建dg

  1. [oracle@statnew backup_stage]$ dgmgrl /
  2. DGMGRL> show configuration;
  3. Error: ORA-16532: Data Guard broker configuration does not exist
  4. Configuration details cannot be determined by DGMGRL
  5. DGMGRL>
  6. DGMGRL> CREATE CONFIGURATION statdb_dg AS PRIMARY DATABASE IS nstatdb CONNECT IDENTIFIER IS nstatdb;
  7. Configuration "statdb_dg" created with primary database "nstatdb"
  8. DGMGRL> ADD DATABASE snstatdb2 AS CONNECT IDENTIFIER IS snstatdb2 MAINTAINED AS PHYSICAL;
  9. Database "snstatdb2" added
  10. DGMGRL> show configuration;
  11. Configuration
  12. Name: statdb_dg
  13. Enabled: NO
  14. Protection Mode: MaxPerformance
  15. Fast-Start Failover: DISABLED
  16. Databases:
  17. nstatdb - Primary database
  18. snstatdb2 - Physical standby database
  19. Current status for "statdb_dg":
  20. DISABLED
  21. DGMGRL> enable configuration;
  22. Enabled.
  23. DGMGRL> show configuration;
  24. Configuration
  25. Name: statdb_dg
  26. Enabled: YES
  27. Protection Mode: MaxPerformance
  28. Fast-Start Failover: DISABLED
  29. Databases:
  30. nstatdb - Primary database
  31. snstatdb2 - Physical standby database
  32. Current status for "statdb_dg":
  33. SUCCESS

看到success已经创建成功。

附下其它查询常用查询语句:

查看数据库状态:

  1. select db_unique_name,database_role,open_mode,switchover_status from v$database;

查看日志应用情况

  1. select sequence#,applied from v$archived_log order by sequence# desc;

查询日志是否存在gap

  1. select * from v$archive_gap;

手动应用日志

  1. alter database register physical logfile '/home/oracle/backup_stage/arch/1_31026_742841399.dbf';

查看从服务器上日志应用情况

  1. SQL> select process,pid,status,thread#,group#,sequence#,delay_mins from v$managed_standby;
  2. PROCESS PID STATUS THREAD# GROUP# SEQUENCE# DELAY_MINS
  3. --------- ---------- ------------ ---------- ---------------------------------------- ---------- ----------
  4. ARCH 2045 CONNECTED 0 N/A 0 0
  5. ARCH 2047 CONNECTED 0 N/A 0 0
  6. MRP0 2306 WAIT_FOR_GAP 1 N/A 31011 0

出现的问题

1、在主上添加dg后,dg_broker_config_file2配置文件没有同步,日志提示文件没有找到,后来将主从的dg_broker_start参数设置成false后,再设置成true,重新创建dg后正常

2、dg中show configuration;查看dg状态时,显示是success,无任务报错日志,但是没有同步日志。

  1. Waiting for all non-current ORLs to be archived...
  2. Media Recovery Waiting for thread 1 sequence 31028
  3. Thu Nov 06 11:22:10 CST 2014
  4. Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE THROUGH ALL SWITCHOVER DISCONNECT NODELAY
  5. Thu Nov 06 11:36:38 CST 2014

在主要alter system switch logfile;也没有反应。

问题解决:

不知道为什么,之前是把从日志放到闪回里的,后面指定了一个目录,就可以了。

StandbyArchiveLocation ? ? ? ? ?= ‘/U01/app/oracle/admin/nstatdb/arch’

然后就能正常传输日志了,由于之前的日志没有传输过来,重新手动进行传

  1. FAL[client]: Failed to request gap sequence
  2. GAP - thread 1 sequence 31028-31068
  3. DBID 1351766453 branch 742841399
  4. FAL[client]: All defined FAL servers have been attempted.
  5. -------------------------------------------------------------
  6. Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
  7. parameter is defined to a value that is sufficiently large
  8. enough to maintain adequate log switch information to resolve
  9. archivelog gaps.

生成应用日志语句。

  1. [oracle@statnew arch]$ for i in `seq 31028 31068`
  2. > do
  3. > echo "alter database register physical logfile '/home/oracle/backup_stage/arch/1_${i}_742841399.dbf';"
  4. > done

人气教程排行