使用RMAN 配置Oracle9i DataGuard
目 录
第一章 运行Data Guard的条件及配置环境
运行Data Guard的条件
1、 在主库和从库的所有机器上必须安装同一个版本的Oracle企业版。
2、 主库必须运行在归档模式下。
3、 主库和从库的操作系统必须一样(允许版本不同),从库可以使用与主库不同的目录结构。
4、 主从库硬件系统的体系结构必须相同。比如:主库运行在64位的Sun Sparc系统上,如果从库是32 位的Linux Intel系统就不允许。主从库硬件的配置可以不同,如:CPU数量、内存大小、存储配置等。
5、 主从库可以是单实例的数据库,也可以是多实例的RAC数据库。
6、 每个主从库必须有它自己的控制文件。
7、 如果把主从库放在了一个系统里,则必须调整初始化参数。
8、 只要使用Data Guard就要保持主库是FORCE LOGGING模式,如果在主库上使用了no logging操作不生成日志,因此数据也不会传递到从库。
9、 管理主从库的用户必须具有SYSDBA权限。
Dataguard配置环境
1、 主库环境已经配置好
2、 备库需要重新搭建
3、 备份服务器已经配置好
4、 主/从数据库版本:oracle9.2.0.1.0
5、 主库的操作系统:windowns 2000 adv
6、 主库IP地址:192.168.1.15
7、 备库的操作系统:Windows 2003 server
8、 备库IP地址:192.168.1.21(与文档中的截图IP不同)
9、 备份服务器:192.168.100.104
10、备份软件:Symantec Backup Exec 11d for Windows Servers (简称SBE 11D)
第二章 主库操作
主库环境已经搭建好。
如果是新搭建的主库,需要做如下修改:
1、设置主数据库为force logging 模式
SQL> alter database force logging;
2、设置主数据库为归档模式
SQL> startup mount;
SQL> alter database archivelog;
3、创建主库的初始化参数给备库用
SQL> Create pfile from spfile;
产生的文件名为initorcl.ora 存放目录默认放在D:oracleora92database。
或create pfile='c:initqfyy.ora' from spfile;
4、拷贝主库的参数文件和密码文件到备用服务器的D:oracleora92database。
5、主库的tnsnames.ora里面指向的备库名称为:QFYYSTANDBY。与参数文件中的名称一致。
第三章 备份服务器操作
1、执行备份脚本,见附录B。2009年3月7日,磁带备份需要四个小时。
2、修改D:oracleora92networkadmintnsnames.ora,新增一段,指向备用服务器:
21=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = qfyy)
)
)
第四章 备库操作
1、 安装Windows 2003 server。
2、 安装oracle数据库(版本和主库一样),只安装软件,不创建数据库。
3、从备份服务器远程安装Remote Agent
4、创建standby服务器相应的Oracle目录,
D:oracleadminqfyybdump
D:oracleadminqfyycdump
D:oracleadminqfyycreate
D:oracleadminqfyypfile
D:oracleadminqfyyscripts
D:oracleadminqfyyudump
D:oracleoradataqfyy
5、创建qfyy的window服务
C:>oradim -new -sid qfyy -startmode m -pfile 'D:oracleora92databaseinitqfyy.ini'
备用数据库参数文件,见附件B。
6、配置备份库的listener.ora
开始——程序——Oracle - OraHome92——Configuration and Migration Tools——Net Manager
a、增加“监听程序”,需要配置“监听位置”、“数据库服务”
b、增加“服务命名”
上图左边绿色的“+”是用来增加项目,点击“文件”——“保存网络配置”,保存修改。
7、在D:oracleora92networkadmin下有tnsnames.ora(对应“服务命名”)
listener.ora(对应“监听程序”)
可以直接对tnsnames.ora、listener.ora文件进行修改。
8、修改tnsnames.ora,增加一项连接到备份服务器(192.168.100.104),添加内容如下:
104=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.104)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = qfyy)
)
)
9、在我的电脑上面点击“右键”——“管理”,找到服务项,检查看看有没有一下两个服务:
OracleOraHome92TNSListener(如果没有这个服务,可以在DOS窗口执行:lsnrctl start)
OracleServiceqfyy
确定上面两个服务已经启动。
10、启动备用库到nomount状态
如果监听程序报错,可以重启监听服务和数据库服务或重启计算机。
SQL> conn sys/xxx@21 as sysdba
SQL> startup mount;
11、配置Remote Agent(在开始——程序菜单里面找Symantec Backup Exec for Windows Servers)
上图的用户名:ch-03it-yinhyinhui 要和备份服务器上SBE 11D设置的用户名一致。IP为本机IP。
12、SBE 11D软件设置oracle连接帐号:工具——选项——oracle——修改列表。在这里新建,不做详解。
13、备用服务器上的硬盘空间要足够,依据参数文件,数据恢复到M:oradataqfyy,目录要先建立。
2009年3月7日,数据恢复需要130G。
14、登录备份服务器,执行恢复脚本,见附录B。
脚本的执行方法:先建一个bat文件,内容:rman log=clone_qfyy.log cmdfile=clone_qfyy.rcv
在当前目录先建clone_qfyy.log,把恢复脚本复制到clone_qfyy.rcv
connect catalog rman92/xxx@qfyytape /*磁带备份库
connect target sys/xxx@QFYY15 /*主库
connect auxiliary sys/xxx@21 /*备库
RUN {
allocate auxiliary channel t1 type 'sbt_tape';
SEND 'NBBSA_SOURCE_MACHINE_NAME=192.168.1.15';
set until scn 1384956743; SCN号查找方法见附录
duplicate target database to qfyy nofilenamecheck;
}
15、数据库恢复后。把主库的部分日志复制到备库,从那个日志序号开始复制,根据备库执行:alter database mount standby database后,recover standby database命令的提示,把主库的日志复制到从库的D:archive。
16、再执行recover standby database,输入:auto,执行相关的日志文件。
17、执行完日志恢复后,关闭数据,重新启动。
执行如下命令,测试备用数据库能否正常开启。
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database RECOVER MANAGED STANDBY DATABASE disconnect from session;
SQL>alter database RECOVER MANAGED STANDBY DATABASE cancel;
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database open read only;
如果数据能够正常open,说明备库端配置成功。
18、登录主库,执行如下命令,开启日志传输:
ALTER SYSTEM SET log_archive_dest_state_3 = enable;
需要等待6~10分钟,日志会传输到备用服务器的M:archive。
19、在备库执行:alter database RECOVER MANAGED STANDBY DATABASE disconnect from session后,
检查传输过来的归档日志文件是否被应用,可以查看日志:D:oracleadminqfyybdumpalert_qfyy.log
如果日志能够正常传到备用服务器,归档日志能够应用,那么环境就搭建好了。
20、可以在备用服务器上见计划任务,定时执行“同步脚本”、“只读查询脚本”,见附件B。
附录A 常用命令
开启主库传送/关闭日志命令:
ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE;
ALTER SYSTEM SET log_archive_dest_state_3 = DEFER;
在备库上执行的相关查询命令:
SQL>SELECT STATUS,APPLIED,name from v$archived_log;
SQL>select status,error from v$archive_dest where dest_id=2;
SQL>select process,status from v$managed_standby;
SQL>SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SQL> startup mount;
SQL> alter database archivelog;
创建控制文件
SQL> alter system set log_archive_dest_1='location=c:arc_primary' scope=both;
SQL> alter system set log_archive_dest_2='service=standby' scope=both;
SQL> alter system archive log current;
附录B 脚本
备份脚本:
connect catalog rman92/rman@qfyytape
connect target sys/xxx@qfyy15
run{
allocate channel c1 type sbt;
backup
incremental level 0
database
format 'db0_%d_%s_%p_%T'
tag = 'WHOLE_INC0'
include current controlfile for standby;
sql "alter system archive log current";
backup archivelog
from time 'sysdate-1/24'
format 'ar_%d_%s_%p_%T';
release channel c1;
}
恢复脚本:
connect catalog rman92/rman@qfyytape
connect target sys/xxx@QFYY15
connect auxiliary sys/xxx@202
RUN {
allocate auxiliary channel t1 type 'sbt_tape';
SEND 'NBBSA_SOURCE_MACHINE_NAME=192.168.1.15';
set until scn 1384956743;
duplicate target database to qfyy nofilenamecheck;
}
备用数据库参数文件
*.background_dump_dest='d:oracleadminQFYYbdump'
*.compatible='9.2.0.0.0'
*.control_files='m:oradataQFYYcontrol01.ctl','m:oradataQFYYcontrol02.ctl','m:oradataQFYYcontrol03.ctl'
*.core_dump_dest='d:oracleadminQFYYcdump'
*.db_block_buffers=100000
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='QFYY'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='QFYY'
*.java_pool_size=0
*.job_queue_processes=10
*.large_pool_size=12582912
*.log_archive_dest_1='location=m:archive'
*.log_archive_dest_2='location=d:archive'
*.log_archive_dest_3='SERVICE=QFYYSTANDBY'
*.log_archive_start=TRUE
*.log_buffer=1024000
*.open_cursors=300
*.pga_aggregate_target=419430400
*.processes=500
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names='QFYY'
*.shared_pool_size=350000000
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='d:oracleadminQFYYudump'
*.db_file_name_convert='M:oradataqfyy','M:oradataqfyy'
*.log_file_name_convert='M:oradataqfyy','M:oradataqfyy'
*.standby_archive_dest='m:archive'
*.log_archive_format = 'ARC%S.%T'
*.standby_file_management='AUTO'
*.remote_archive_enable='TRUE'
同步脚本:
set echo on
conn /as sysdba;
shutdown immediate;
startup nomount;
alter database mount standby database;
alter database RECOVER MANAGED STANDBY DATABASE disconnect from session;
disconnect;
set echo off
quit;
只读查询脚本:
set echo on
conn /as sysdba;
alter database RECOVER MANAGED STANDBY DATABASE cancel;
shutdown immediate;
startup nomount;
alter database mount standby database;
alter database open read only;
disconnect;
set echo off
quit;
附录C SCN号查找方法
运行rman
connect catalog rman92/xxx@qfyytape 记录备份信息的数据库
connect target sys/xxx@qfyy15 生产服务器
list backup summary completed after '2008-12-16'
list backupset 备份集号 查看SCN号,取最后一次日志记录的SCN结束号。
list backup summary completed after '2008-11-10'
查询最后一个日志备份记录的备份集号。
list backupset 备份集号 找最后一行的记录,去SCN的结束号。下图中红色圈内。
以上为Oracle9i DataGuard配置的方法,下次将写主、备数据库的切换。
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13080775/viewspace-1024396/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13080775/viewspace-1024396/