创建 oracle data gurd 以及三种保护模式

本文详细介绍如何使用 Oracle 11g RAC 版本搭建主备数据库的过程,包括设置归档模式、添加 standby 日志组、配置参数文件及监听器等关键步骤,并介绍了不同保护模式的特点。
 数据库版本:11.2.0.3.0       操作系统  Linux 5.5      备库有数据库软件  没有建库  
一:在主库开归档,将主库设置为  force  logging  
SYS@ENMOEDU> alter database force logging; 

Database altered. 
二:对主库添加standby 日志组   添加的组数=原来日志组数*线程数+1  (一个实例就是一个线程  一对一的关系)  
所以先查看主库的日志组数   
YS@ENMOEDU> select * from v$log;                     #共有三组  所以要添加四组 

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC 
---------- ---------- ---------- ---------- ---------- ---------- --- 
STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME 
---------------- ------------- --------- ------------ --------- 
1 1 91 52428800 512 1 NO 
CURRENT 1310685 02-SEP-14 2.8147E+14 

2 1 89 52428800 512 1 YES 
INACTIVE 1310028 02-SEP-14 1310034 02-SEP-14 

3 1 90 52428800 512 1 YES 
INACTIVE 1310034 02-SEP-14 1310685 02-SEP-14 
用下面的方法添加  免得一条一条执行  提高效率,
DEFINE _EDITOR=vi
ed1   然后再编辑以下内容,注意成员要和原来的成员路径最好一致。
 alter database add standby logfile group4('/u01/app/oracle/oradata/ENMOEDU/redo05.log') size 50M;
alter database add standby logfile group 5('/u01/app/oracle/oradata/ENMOEDU/redo06.log') size 50M;
alter database add standby logfile group6('/u01/app/oracle/oradata/ENMOEDU/redo07.log') size 50M;
alter database add standby logfile group7('/u01/app/oracle/oradata/ENMOEDU/redo08.log') size 50M;
三:在主库配置参数文件  编辑  initENMOEDU.ora   添加内容内容(11g官方手册 book list --DAT-- Data Guard Concepts and Administration--3.1 Preparing the Primary Database for Standby Database Creation--3.1.4  中的例子)
example 3-1和3-2   再修改:把Chicago 是主库的数据库名ENMOEDU  改成你自己的 主库 名,Boston改成你的standby数据库名ENMOEDU1,  (可以用全局替换:%s#old_name#new_name#g)   再把该修改的路径修改掉,
DB_NAME=chicago
DB_UNIQUE_NAME=chicago
LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'
CONTROL_FILES='/arch1/chicago/control1.ctl', '/arch2/chicago/control2.ctl' #改成你自己的控制文件的位置 LOG_ARCHIVE_DEST_1=
 'LOCATION=/arch1/chicago/ 
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_2=
 'SERVICE=boston ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
  DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

FAL_SERVER=boston
DB_FILE_NAME_CONVERT='boston','chicago'
LOG_FILE_NAME_CONVERT=
 '/arch1/boston/','/arch1/chicago/','/arch2/boston/','/arch2/chicago/'  #改成LOG_FILE_NAME_CONVERT='ENMOEDU1','ENMOEDU'  
STANDBY_FILE_MANAGEMENT=AUTO
四:   在主库 SYS@ENMOEDU > create spfile from pfile; 
五;主库配置监听  用netca 配置    在客户端配置tnsname.ora  ,它内容中的host=主机名或它的IP       这个ip是你想连接谁  就写谁,
在服务器端配置listener.ora   内容中的host=它自己的IP。当客户端要连接服务器时,首先解析客户端的tnsname.ora文件的内容,然后找到要连接的服务器,服务器上的监听正在那等着呢,监听通过listener.ora 文件的内容与之对应上了(端口,协议,服务名,IP)就能连接上  
[ oracle@ENMOEDU admin]$ pwd          监听文件路径
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin 
listener.ora文件具体内容:
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=ENMOEDU)
      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=ENMOEDU)))


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.10)(PORT = 1521))              #主机IP
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
ADR_BASE_LISTENER1 = /u01/app/oracle
tnsname.ora 文件具体内容:
ENMOEDU1 =          #这个是连接备库的时候 解析的tnsname.ora 内容           
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.11)(PORT = 1521))        #因为要连接备库  所以填写备库的IP
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ENMOEDU1)
    )
  )

ENMOEDU =                #这个连接主库自己的时候  要解析的文件内容     因为一个虚拟机既可以做客户端  也可以做服务端
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.10)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ENMOEDU)
    )
  )
六:用scp命令给备库传 参数文件,口令文件, tnsnames.ora listener.ora 文件,
[ oracle@ENMOEDU admin]$ scp listener.ora tnsnames.ora  oracle@192.168.80.11:`pwd`;      #冒号后面的pwd 意思是说要把文件传到备库的当前路径下(也就是此时在主机上 pwd 显示的路径)
Address 192.168.80.11 maps to enmoedu, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! 
oracle@192.168.80.11's password: 
listener.ora 100% 544 0.5KB/s 00:00 
tnsnames.ora 100% 526 0.5KB/s 00:00
七:在备库上操作:修改刚传过来的参数文件、口令文件、 的名字 (因为备库的实例名为ENMOEDU1) 
[ oracle@ENMOEDU1 admin]$ mv    initENMOEDU.ora     initENMOEDU1.ora    
然后  修改 刚传过来的  listener.ora  把IP换成备库的ip,服务名也改过来。  最后 还要修改传过来的参数文件内容,
主库的参数文件内容
DB_NAME=ENMOEDU           #因为就一个库  所以这里主备库一样,
DB_UNIQUE_NAME=ENMOEDU    #改成备库的数据库名
LOG_ARCHIVE_CONFIG='DG_CONFIG=( ENMOEDU,ENMOEDU1)'         #括号里面的两个名字换位置
LOG_ARCHIVE_DEST_1=                                      
 'LOCATION=/u01/app/oracle/oradata/ENMOEDU                                #改成ENMOEDU1
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=ENMOEDU'
LOG_ARCHIVE_DEST_2=
 'SERVICE=ENMOEDU1 ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=ENMOEDU1'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_SERVER=ENMOEDU1
DB_FILE_NAME_CONVERT='ENMOEDU1','ENMOEDU'                        #换位置
LOG_FILE_NAME_CONVERT='ENMOEDU1','ENMOEDU'                               #换位置
STANDBY_FILE_MANAGEMENT=AUTO
八:把主备库的监听打开    关闭防火墙   把 主库启动到mount状态, 再启动备库实例(nomount)
lsnrctl  start   
service iptables stop 
然后 在主库  输入命令  
[ oracle@ENMOEDU dbs]$ rman target sys/ oracle@ENMOEDU auxiliary sys/ oracle@ENMOEDU1 

Recovery Manager: Release 11.2.0.3.0 - Production on Tue Sep 2 22:07:39 2014 

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 

connected to target database: ENMOEDU (DBID=87396644) 
connected to auxiliary database: ENMOEDU (DBID=87396644) 

RMAN>  
九;在主库执行duplicate命令  这条命令所做的事情:(  RMAN automatically copies the server parameter file to the standby host, starts the auxiliary instance with the server parameter file, restores a backup control file, and copies all necessary database files and archived redo logs over the network to the standby host. RMAN recovers the standby database, but does not place it in manual or managed recovery mode )
RMAN>  DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK; 
十:在备库上操作,
打开MRP 进程  (应用归档  重演变化)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
以只读方式打开数据库(但是要先关掉之前打开的 MRP进程:alter database recover managed standby database cancel)
alter database open read only;
注意 :11g    standby 数据库只能是read only 的方式打开,而且打开之前  要先取消MRP进程,打开之后  还可以打开MRP进程  应用日志,重演变化,
10g standby数据库只能在mount模式下  应用日志,11g可以在打开的模式下应用   这就导致11g数据库可以用standby 数据库来分担主库的查询负担,而不仅仅是做备份,这是一大进步。


中途的一些报错,
(1)口令文件 没有 改名导致  没有权限
connected to target database: ENMOEDU (DBID=87396644)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04006: error from auxiliary database: ORA-01031: insufficient privileges
(2)监听没配好  无法连接rman 
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04006: error from auxiliary database: ORA-12541: TNS:no listener

.最大保护模式
1)这种模式提供了最高级别的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库会自动关闭,防止未受保护的数据出现;
4)优点:该模式可以保证备库没有数据丢失;
5)缺点:主库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对网络等客观条件要求非常的高,主库的性能会因此受到非常大的冲击。


2.最大可用性模式
1)该模式提供了仅次于“最大保护模式”的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库不会关闭,而是临时降低到“最大性能模式”模式,直到问题得到处理;
4)优点:该模式可以在没有问题出现的情况下,保证备库没有数据丢失,是一种折中的方法;
5)缺点:在正常运行的过程中缺点是主库的性能受到诸多因素的影响。


3.最大性能模式
1)该模式是默认模式,可以保证主数据库的最高可用性;
2)保证主库运行过程中不受备库的影响,主库事务正常提交,不因备库的任何问题影响到主库的运行;
4)优点:避免了备库对主数据库的性能和可用性影响;
5)缺点:如果与主库提交的事务相关的恢复数据没有发送到备库,这些事务数据将被丢失,不能保证数据无损失;









来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29654823/viewspace-1262417/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29654823/viewspace-1262417/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值