ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Oracle数据库DBA高级工程师培训视频
Oracle数据库培训-备份恢复-性能优化-集群容灾
mysql数据库视频教程

oracle 11g dataguard 配置管理

内容发布:dutloving| 发布时间:2014-1-22 15:30:00
目录
1.      DataGuard配置条件... 2
2.      实施计划... 2
3.      判断DataGuard是否安装... 2
2. 网络配置:主库和备库... 2
4.      配置hosts文件:主库和备库... 3
5.      监听配置:主库和备库... 3
6.      修改主库备库到归档模式... 4
5. 创建主库口令文件... 5
7.      修改主库初始化参数pfile. 5
8.      创建备份库需要的控制文件... 7
9.      创建主库的spfile. 7
10.        备份生产数据库... 7
11.        修改备库初始化参数pfile. 8
12.        复制备库控制文件... 9
13.        在备库上创建口令文件... 9
14.        创建备库的spfile. 9
15.        启动物理备用数据库... 9
16.        配置Standby Redo Log. 9
17.        Redo Apply的启动和停止... 10
1.   DataGuard配置条件
DataGuard的备库有物理standby和逻辑standby两种,由于逻辑standby的局限性,生产环境选择物理standby作为DataGuard的备库。
实现物理standby需要具备以下条件:
1、  oralce数据库必须是企业版,企业版才支持DataGuard;
2、  DataGuard中的数据库运行的平台必须相同;
3、  DataGuard中的主库和备库必须运行于归档模式;
4、  DataGuard中的主库和备库的db_name必须相同、db_unique_name必须不同;
5、  使用具有相关sysdba权限的用户管理primary和standby数据库。
2.   实施计划
对于在DataGuard实施的第一步的实施计划如下:
   
日期
  
工作内容
备注
2013-11-18
检查数据库是否满足配置要求

2013-11-19
配置DataGuard,并进行相关验证

2013-11-20
进行DataGuard管理,验证主备库切换


3.   判断DataGuard是否安装
Sql>select* from v$option where parameter = 'Oracle Data Guard';
返回结果为空,DG没有配置。
2. 网络配置:主库和备库
   
主库
  
操作系统版本:centos5.4
   
数据库版本: Database 11g Enterprise Edition Release 11.2.0.1.0
   
Ip地址:172.24.141.102
   
Db_namestandbyd
   
Db_unique_namestandbyd
   
instance_nameprimary
   
service_namesstandbyd
备库
操作系统版本:centos5.4
   
数据库版本: Database 11g Enterprise Edition Release 11.2.0.1.0  
   
Ip地址:172.24.141.103
   
Db_namestandbyd
   
Db_unique_namestandbydb
   
instance_namestandby
   
service_namesstandbydb
4.   配置hosts文件:主库和备库
vi  /etc/hosts
# Do not remove the following line, orvarious programs
# that require network functionality willfail.
127.0.0.1               hlht-db1 localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
10.52.151.102  hlht-db1
10.52.151.103  hlht-db2
5.   监听配置:主库和备库
主库:配置主库监听和tns:
[oracle@ hlht-db1~]$ cd $ORACLE_HOME/network/admin
[oracle@ hlht-db1admin]$ cat listener.ora

#listener.ora Network Configuration File:/opt/oracle/112/network/admin/listener.ora
#Generated by Oracle configuration tools.
#add
SID_LIST_LISTENER=
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/112)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = primary)
      (ORACLE_HOME = /opt/oracle/112)
      (SID_NAME = primary)
    )
  )
#add
LISTENER=
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST =10.52.151.102)(PORT = 11731))
      #(ADDRESS = (PROTOCOL = TCP)(HOST =172.24.141.102)(PORT = 11731))
    )
  )

[oracle@hlht-db1admin]$ cat tnsnames.ora
# tnsnames.oraNetwork Configuration File: /opt/oracle/112/network/admin/tnsnames.ora
#Generated by Oracle configuration tools.

STANDBYD =
(DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.52.151.102)(PORT = 11731))
   #(ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.141.102)(PORT = 11731))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = primary)
    )
  )

STANDBYDB =
(DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.52.151.103)(PORT = 11731))
   #(ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.141.103)(PORT = 11731))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = standby)
    )
  )
备库:配置备库监听和tns:
[oracle@ hlht-db2~]$ cd $ORACLE_HOME/network/admin
[oracle@hlht-db2 admin]$ cat listener.ora
# listener.ora Network Configuration File:/opt/oracle/112/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
   (SID_DESC =
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = /opt/oracle/112)
     (PROGRAM = extproc)
    )
   (SID_DESC =
     (GLOBAL_DBNAME = standby)
     (ORACLE_HOME = /opt/oracle/112)
     (SID_NAME = standby)
    )
  )

LISTENER =
(DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.52.151.103)(PORT = 11731))
     #(ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.141.103)(PORT = 11731))
)
[oracle@hlht-db2admin]$ cat tnsnames.ora
#tnsnames.ora Network Configuration File: /opt/oracle/112/network/admin/tnsnames.ora
#Generated by Oracle configuration tools.

STANDBYDB =
(DESCRIPTION =
   #(ADDRESS = (PROTOCOL = TCP)(HOST = hlht-db2)(PORT = 1521))
   #(ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.141.103)(PORT = 11731))
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.52.151.103)(PORT = 11731))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = standby)
    )
  )

STANDBYD =
(DESCRIPTION =
   #(ADDRESS = (PROTOCOL = TCP)(HOST = hlht-db2)(PORT = 1521))
   #(ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.141.102)(PORT = 11731))
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.52.151.102)(PORT = 11731))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = primary)
    )
  )
6.   修改主库备库到归档模式
检查归档情况:
Archive log list;

修改归档路径、归档文件夹大小、归档文件格式:
sqlplus / as sysdba
SQL> alter system setlog_archive_dest_1='location=/data/archlog';
     altersystem set db_recovery_file_dest_size = 10G;
     altersystem set log_archive_format='archivelog_%t_%s_%r' scope=spfile;
修改归档
SQL>shutdown immediate;
    startupmount;
   alterdatabase archivelog;
启动数据库
SQL> alter database open;

设置强制写日志:
SQL>  select  FORCE_LOGGING  from  v$database;
NO
SQL>alter  database  force  logging;
SQL>select  FORCE_LOGGING  from  v$database;
YES              
5. 创建主库口令文件
orapwd file=$ORACLE_HOME/dbs/orapwprimary password=XXXentries=10
注:这里的file命名规则在unix/linux下orapw<ORACLE_SID>,在windows下为pwd<SID>.ora。主备库的sys用户密码相同
7.   修改主库初始化参数pfile
创建主库pfile
sql > create  pfile    from spfile;
使用 createpfile from spfile创建的都放在默认的位置和默认的命名:
Pfile:init<sid>.ora  
与spfile相同路径。
修改pfile
DB_UNIQUE_NAME=standby
# DB_UNIQUE_NAME主备数据库不能相同
LOG_ARCHIVE_CONFIG='DG_CONFIG=(standby,standbydb)'
#DataGuard专用配置,主备数据库相同,为两个库的db_unique_name
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME= standby’
#主数据库归档地址
LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC  AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME= standbydb’
#备用数据库归档地址,由该配置指定向备用数据库写归档日志
# SERVICE=standby LGWRASYNC AFFIRM:这3个参数影响dg的保护模式,一般这3个参数都配置
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
#归档日志文件名格式
LOG_ARCHIVE_MAX_PROCESSES=30
#默认是4,可以不修改
#以下是主库作为备用数据库的配置:用于主备切换
FAL_SERVER=standby# FAL_SERVER是另一个数据库的service_name
FAL_CLIENT=orcl  #当前数据库的service_name
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/orcl'
# 配置主备库的数据文件位置,远程的目录写在前面,
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/orcl'
# 配置主备库的在线日志和standby日志文件位置,远程的目录写在前面STANDBY_FILE_MANAGEMENT=AUTO
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
修改成功后进行启动验证:
1、Startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
2、如果可以启动成功,就创建spfile:
Createspfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
3、如果不成功,查看pfile是否修改错误。
备库的pfile可以是主库复制过来的,也可以由备库是spfile生成后进行修改,但是备库的控制文件一定是主库创建的。
Pfile 拷贝到备库上:
scp –rp/u01/app/product/11.2.0/db_1/dbs/initorcl.ora node2:/u01/app/product/11.2.0/db_1/dbs/
8.   创建备份库需要的控制文件
创建控制文件
Shutdownimmediate
STARTUP MOUNT;
ALTER  DATABASE  CREATE  STANDBY  CONTROLFILE  AS  '/tmp/orcl.ctl';
ALTER  DATABASE OPEN;
这个就是standbycontrolfile,备库的控制文件一定要使用这个控制文件。
9.   创建主库的spfile
修改主库pfile成功后进行启动验证:
1、Startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
2、如果可以启动成功,先进行spfile的备份,然后创建spfile:
Createspfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
3、如果不成功,查看pfile是否修改错误。
4、穿件spfile成功后进行spfile启动数据库进行验证。
Shutdownimmediate
startuppfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora'
sql>  create spfile from  pfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora'
;
(先把原来的干掉)
shutdownimmediate;
startup
startupfrom pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'
10.备份生产数据库
至此主库已经配置完毕,需要复制主库的数据文件、standby 控制文件、归档日志、参数文件pfile到备库。
1、 停止数据库
2、 直接复制数据文件、归档日志文件、standby 控制文件、参数文件pfile到备库相应目录

scp -rp /u01/oradata/ORCL node2:/u01/oradata/
scp –rp  /u01/app/admin/orcl  node2:/u01/app/admin(记得在备库创建admin)


11.修改备库初始化参数pfile
修改备库参数文件pfile,这个备库pfile参数文件可以是备库由spfile生成。也可以是主库复制过来的,但是要修改正确。
Pfile指定的控制文件路径:修改成主库复制过来的standby控制文件,该控制文件复制三份,在pfile文件指定路径。
control_files='E:\Oracle\oradata\DGMAIN\control01.ctl','E:\Oracle\oradata\DGMAIN\control02.ctl','E:\Oracle\oradata\DGMAIN\control03.ctl'
#控制文件
DB_UNIQUE_NAME=standby
# DB_UNIQUE_NAME主备数据库不能相同
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,standby)'
#DataGuard专用配置,主备数据库相同
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby’
#主数据库归档地址
LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl’
#备用数据库归档地址,由该配置指定向备用数据库写归档日志
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
#归档日志文件名格式
LOG_ARCHIVE_MAX_PROCESSES=30
#默认是4,可以不修改
#以下是主库作为备用数据库的配置:用于主备切换
FAL_SERVER=orcl# FAL_SERVER是另一个数据库的service_name
FAL_CLIENT=standby  #当前数据库的service_name
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/standby'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/standby'
#如果主库与备库安装目录不一样需要配置CONVERT,远程的数据库目录写在前面
STANDBY_FILE_MANAGEMENT=AUTO
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
修改成功后进行启动验证:
1、Startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
2、如果可以启动成功,就创建spfile:
Createspfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
3、如果不成功,查看pfile是否修改错误。
12.复制备库控制文件
备库的控制文件是主库的standby控制文件复制过来的,不需要修改,直接复制三份。
scp  -rp  /tmp/dg.ctl node2:/u01/oradata/ORCL/controlfile/
scp  -rp  /tmp/dg.ctl node2:/u01/flash_recovery_area/orcl/controlfile/
13.在备库上创建口令文件
orapwd file=$ORACLE_HOME/dbs/orapwdb1  password=XXXX entries=10
14.创建备库的spfile
修改成功后进行启动验证:
1、Startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
2、如果可以启动成功,就创建spfile:
Createspfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora’;
3、如果不成功,查看pfile是否修改错误。
4、创建成功后进行spfile方式启动数据库进行验证。
Shutdownimmediate
startuppfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora'

CREATE SPFILE  FROM  PFILE;
15.启动物理备用数据库
STARTUP MOUNT;
16.配置Standby Redo Log
主库和备库都配置standby  redo log,
在主库查看日志组的数量和每个日志文件的大小
SQL>SELECT GROUP#, BYTES FROM V$LOG;
在备库库查看日志组的数量和每个日志文件的大小,standby日志文件组文件大小和redo log大小一样,需要比redo log多一组或者几组。
SQL>SELECT GROUP#, BYTES/1024/1024 FROM V$STANDBY_LOG;
创建日志组和redolog文件
SQL> ALTER DATABASE ADDSTANDBY LOGFILE group 4('/oracle/dbs/slog1.rdo') SIZE 50M;
SQL> ALTER DATABASE ADDSTANDBY LOGFILE group 5 ('/oracle/dbs/slog2.rdo') SIZE 50M;
SQL>ALTER DATABASE ADDSTANDBY LOGFILE group 6 ('/oracle/dbs/slog3.rdo') SIZE 50M;
SQL> ALTER DATABASE ADDSTANDBY LOGFILE group 7('/oracle/dbs/slog4.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBYLOGFILE group 7('/u01/app/oracle/oradata/standby/sredo07.log') SIZE 50M;
ALTER DATABASE ADD STANDBYLOGFILE group 7('/u01/app/oracle/oradata/orcl/sredo07.log') SIZE 50M;
ALTERDATABASE ADD STANDBY LOGFILE group 7('/u01/app/oracle/product/10.2.0/db_1/oradata/standby/sredo07.log')size 50M;  
17.Redo Apply的启动和停止
启动日志恢复:
ALTERDATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROMSESSION;
Alterdatabase recover managed standby database disconnect from session;
关闭日志恢复:
alter database recover managed standbydatabase cancel;
对于物理备库(physicalstandby)来说,处于日志恢复模式的时候数据库是不能打开的。如果要打开只能先关闭日志恢复模式,然后以readonly (只读方式)打开。(oracle11G版本可以在read only下应用归档日志)
SQL>alterdatabase recover managed standby database cancel;
停止日志恢复模式
SQL>alterdatabase open read only;
打开数据库。
物理备库在只读模式下可以增加临时文件。
SQL> alter database temp add tempfile '/opt/oradata/orcl/temp02.dbf' size 100m reuse;
这个时候备库还是可以接收主库传输过来的归档日志文件,只是不能应用日志而已。
当用read only 方式打开备库后只有重新启动才能使备库重新回到备用模式。
进行主备库验证:
在备库
SELECT SEQUENCE#,APPLIED  FROM  V$ARCHIVED_LOG ORDER  BY  SEQUENCE#;
在主库强制日志切换到当前的online redo log file.
ALTER  SYSTEM  ARCHIVE LOG  CURRENT;
在备库查看新的被归档的redodata
SELECTSEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
在备库查看接收到的被应用的redo
SQL>SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
查看数据库的角色
selectdatabase_role,protection_mode,protection_level from v$database;
l  主备库切换
1.查看主库的状态
SQL> SELECTSWITCHOVER_STATUS FROM V$DATABASE;
2.将主库切换至备用模式
SQL> ALTER DATABASECOMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH -
> SESSION SHUTDOWN;
3.关闭、装载主数据库
SQL> SHUTDOWN ABORT;
SQL> STARTUP MOUNT;
4.查看备库准备向主库模式切换
SQL>SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY
1 rowselected
5.切换备库至主库模式
SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
6.打开新的主数据库
SQL> ALTER DATABASE OPEN;
7. 在新的备库服务器上启动 REDO apply。
SQL> ALTER DATABASE RECOVER MANAGED STANDBYDATABASE USING CURRENT LOGFILE -
> DISCONNECT FROMSESSION;
l  灾难恢复(failover)
Step 1 Flush anyunsent redo from the primary database to the target standby
database
SQL> ALTER SYSTEM FLUSHREDO TO target_db_name;
Step 2 Verify thatthe standby database has the most recently archived redo log
file for each primarydatabase redo thread.
SQL> SELECT UNIQUETHREAD# AS THREAD, MAX(SEQUENCE#) -
> OVER (PARTITION BYthread#) AS LAST from V$ARCHIVED_LOG;
SQL> ALTER DATABASEREGISTER PHYSICAL LOGFILE 'filespec1';
Step 3 Identify andresolve any archived redo log gaps.
SQL> SELECT THREAD#,LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
SQL> ALTER DATABASEREGISTER PHYSICAL LOGFILE 'filespec1';
Step 4 Repeat Step 3until all gaps are resolved.
Step 5 Stop RedoApply.
Issue the followingSQL statement on the target standby database:
SQL> ALTER DATABASERECOVER MANAGED STANDBY DATABASE CANCEL;
Step 6 Finishapplying all received redo data.
Issue the followingSQL statement on the target standby database:
SQL> ALTER DATABASERECOVER MANAGED STANDBY DATABASE FINISH;
Step 7 Verify thatthe target standby database is ready to become a primary
database.
Step 8 Switch thephysical standby database to the primary role.
Issue the followingSQL statement on the target standby database:
SQL> ALTER DATABASECOMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
Step 9 Open the newprimary database.
SQL> ALTER DATABASE OPEN;
Step 10 Back up thenew primary database.
Oracle recommendsthat a full backup be taken of the new primary database.
Step 11 Restart RedoApply if it has stopped at any of the other physical standby
databases in yourData Guard configuration.
For example:
SQL> ALTER DATABASERECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE -
> DISCONNECT FROMSESSION;
附:
1.  启动到管理模式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect fromsession;
2.启动到只读方式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database open read only;
3如果在管理恢复模式下到只读模式
SQL> recover managed standby database cancel;
SQL> alter database open read only;

彩票销售系统数据库DataGuard方案配置实施步骤.docx

41.96 KB, 下载次数: 1, 下载积分: IT币 -1

oracle dg 彩票



上一篇:关于ORACLE RAC集群私网网卡用直接还是交换机连接的问题
下一篇:Oracle数据库出现出ORA-00600[qertbFetchByRowID]报错处理
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表