【Oracle】Oracle 10g的Data Gaurd环境搭建(备份容灾机制)
2017-03-09 17:31
399 查看
Oracle 10g R2 DG配置
目录
1 安装与配置
2 datagaurd环境搭建
2.1 设置为强制日志模式
2.2 设置为归档日志模式
2.3 拷贝数据文件
2.4 创建备库的控制文件和初始化文件(即pfile文件)
2.5 复制控制文件和初始化文件
2.6 在备库上创建一个Windows服务和密码文件
2.7 备库创建admin目录
2.8 修改备库pfile文件(红色部分)
2.9 备库上创建spfile文件
2.10 重启监听服务
2.11 启动主备服务
3 测试主库、备库是否同步
4 在主库上创建新用户,创建新表,看备库是否同步
5 角色切换
相关说明:
环境:windows 7 32位 ORACLE版本:10.2
注:本文档给出的是datagaurd创建物理standby的过程,默认最大性能模式。
1 安装与配置
安装文档参考《oracle相关基础知识》安装过程中需要注意的:
主库要建立数据库实例,备库不需要建立
主库listener.ora:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORAC) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (SID_NAME = ORAC) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = USER-20151216PL)(PORT = 1521)) ) )
主库tnsnames.ora:
ORAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.73.198.140)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orac) ) ) primary = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.73.198.140)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orac) ) ) standby = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.73.198.134)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orac) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
备库listener.ora:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORAC) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (SID_NAME = ORAC) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = USER-20151216PL)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) )
备库tnsnames.ora:
PRIMARY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.73.198.140)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORAC) ) ) STANDBY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.73.198.134)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORAC) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
2 datagaurd环境搭建
Oracle安装完成之后,环境为:primary(主库):
操作系统 :win7 32位旗舰版 IP:10.73.198.140 数据库:oracle 10.2 企业版 sid:orac
standby (备库):
操作系统:win7 32位旗舰版 IP:10.73.198.14 数据库:oracle 10.2 企业版 SID:无(只安装软件,不安装实例数据库)
要求:数据库的版本最好一致,最好安装路径一致;
2.1设置为强制日志模式
cmd> sqlplus / nolog; SQL> conn / as sysdba; SQL>alter database force logging;
2.2设置为归档日志模式
SQL> archive log list SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> archive log list
2.3拷贝数据文件
数据文件的拷贝可以分为两种模式:rman 和文件的直接拷贝。本文采用的是远程文件拷贝。拷贝主库的数据文件到备库中
在主库上进行如下两条命令获取数据文件的路径
SQL> select name from v$datafile; SQL> select * from v$tempfile;
把主库的以上数据文件(D:\oracle\product\10.2.0\oradata\orac)拷贝到备库上同样目录,如果备库上没
有这个路径,就创建一模一样的路径,然后复制数据文件。
2.4创建备库的控制文件和初始化文件(即pfile文件)
注:pfile文件和spfile文件其实记录的信息可以等价的,pfile是文本文件,spfile是二进制文件
在主库上为从库创建控制文件,然后拷贝到从库D:\oracle\product\10.2.0\db_1\database目录下。
(记住这个目录,在下面备库的spfile 配置中要用到)。
SQL>alter database create standby controlfile as ‘d:\backup\standby.ctl’;(将控制文件暂时存储在d:\backup\路径下,可以自己定,该文件需要复制到备库上)
SQL>create pfile from spfile;
在D:\oracle\product\10.2.0\db_1\database目录下找到pfile(initorac.ora);
修改其参数(红色部分,对于归档路径log_archive_dest_1可以自定义)
orac.__db_cache_size=411041792
orac.__java_pool_size=4194304
orac.__large_pool_size=4194304
orac.__shared_pool_size=155189248
orac.__streams_pool_size=0
*.audit_file_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/adump’
*.background_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/bdump’
*.compatible=’10.2.0.1.0’
*.control_files=’D:\oracle\product\10.2.0\oradata\orac\control01.ctl’,’D:\oracle\product\10.2.0\oradata\orac\control02.ctl’,’D:\oracle\product\10.2.0\oradata\orac\control03.ctl’
*.core_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/cdump’
*.db_block_size=8192
*.db_domain=”
*.db_file_multiblock_read_count=16
*.db_name=’orac’
*.db_recovery_file_dest=’D:\oracle\product\10.2.0\db_1/flash_recovery_area’
*.db_recovery_file_dest_size=2147483648
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=oracXDB)’
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=192937984
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_target=580911104
*.undo_management=’AUTO’
*.undo_tablespace=’UNDOTBS1’
*.user_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/udump’
*.DB_UNIQUE_NAME=’primary’
*.FAL_CLIENT=’primary’
*.FAL_SERVER=’standby’
*.log_archive_config=’DG_CONFIG=(primary,standby)’
*.log_archive_dest_1=’location=D:\oracle\product\10.2.0\archive\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary’
*.log_archive_dest_2=’SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby’
*.LOG_ARCHIVE_DEST_STATE_1=’ENABLE’
*.LOG_ARCHIVE_DEST_STATE_2=’ENABLE’
.log_archive_format=’%T%S%r.ARC’*
然后保存,在主库上执行
SQL> shutdown immediate;
2.5复制控制文件和初始化文件
将主库上的控制文件和初始化文件复制到备库上相应目录,具体目录路径,参考主库的路径。注:控制文件的复制,需要先关掉数据库
其中主库的控制文件的路径为:
D:\oracle\product\10.2.0\oradata\orac\
主库的pfile文件路径为:
D:\oracle\product\10.2.0\db_1\database\
继续(在主库上进行以下两条命令):
SQL>startup pfile=’D:\oracle\product\10.2.0\db_1\database\initorac.ora’
SQL> create spfile from pfile; //创建spfile文件
2.6 在备库上创建一个Windows服务和密码文件
创建服务C:\Documents and Settings\Administrator>oradim -new -sid orac -startmode auto
复制密码文件,将主库上的密码文件复制到备库上,密码文件的路径为D:\oracle\product\10.2.0\db_1\database\PWDorac.ora
注:主备库的密码文件需要相同,所以如果是利用命令创建的密码文件,需要密码一样。
2.7 备库创建admin目录
将主库的d:\oracle\product\10.2.0\admin\orac 目录及文件夹(adump,bdump,cdump,dpdump,pfile,udump)拷贝到备库的相同目录。2.8修改备库pfile文件(红色部分)
修改备库的D:\oracle\product\10.2.0\db_1\database\initorac.ora文件如下orac.__db_cache_size=411041792
orac.__java_pool_size=4194304
orac.__large_pool_size=4194304
orac.__shared_pool_size=155189248
orac.__streams_pool_size=0
*.audit_file_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/adump’
*.background_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/bdump’
*.compatible=’10.2.0.1.0’
*.control_files=’D:\oracle\product\10.2.0\oradata\orac\STANDBY.CTL’
*.core_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/cdump’
*.db_block_size=8192
*.db_domain=”
*.db_file_multiblock_read_count=16
*.db_name=’orac’
*.db_recovery_file_dest=’D:\oracle\product\10.2.0\db_1/flash_recovery_area’
*.db_recovery_file_dest_size=2147483648
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=oracXDB)’
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=192937984
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_target=580911104
*.undo_management=’AUTO’
*.undo_tablespace=’UNDOTBS1’
*.user_dump_dest=’D:\oracle\product\10.2.0\db_1/admin/orac/udump’
*.DB_UNIQUE_NAME=’standby’
*.FAL_CLIENT=’standby’
*.FAL_SERVER=’primary’
*.log_archive_config=’DG_CONFIG=(primary,standby)’
*.log_archive_dest_1=’location=D:\oracle\product\10.2.0\archive\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby’
*.log_archive_dest_2=’SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary’
*.LOG_ARCHIVE_DEST_STATE_1=’ENABLE’
*.LOG_ARCHIVE_DEST_STATE_2=’ENABLE’
*.log_archive_format=’%T%S%r.ARC’
2.9、在备库上创建spfile文件
在备库上执行以下命令:C:\Documents and Settings\Administrator>set oracle_sid=orac;
注:上面创建的数据库实例名称需要与主库相同,具体DB_NAME、DBID、DB_UNIQUE_NAME、SERVICE_NAME、SID、INSTANCE_NAME、GLOBAL_DATABASE_NAME之间的区别,可参考相关的文档。一般情况下,对于单实例数据库,db_name=service_name=sid=instance_name。但是db_unique_name可以不一致。
C:\Documents and Settings\Administrator>sqlplus / as sysdba; SQL> startup pfile='D:\oracle\product\10.2.0\db_1\database\initorac.ora'; SQL> create spfile from pfile='d:\oracle\product\10.2.0\db_1\database\ initorac.ora';
2.10、重启监听服务
在上面配置完成之后,需要在主、备机上重启监听服务CMD> Lsnrctl stop
CMD> lsnrctl start
可以使用lsnrctl status 命令查看监听器状态
2.11、启动主备服务
主库:
CMD> sqlplus /nologSQL> conn / as sysdba;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
备库:
SQL> startup mount;SQL> alter database recover managed standby database disconnect from session;
3 测试主库、备库是否同步
主库上操作:SQL>Alter system switch logfile;
SQL> select max(sequence#) from v$archived_log;//查看最大日志最大序列号
备库上操作:
SQL>alter database recover managed standby database cancel;
SQL>alter database recover managed standby database disconnect from session;
SQL> select max(sequence#) from v$archived_log;//查看最大日志最大序列号
看两者日志最大序列号是否相同,相同说明,主库产生的归档日志传输到了备库上,其实也可以直接在归档路径下查看备库归档日志是否都已接收。如果没有接收日志,需要查看rfs进程是否开启。
查看rfs进程是否开启的sql命令如下:
SQL>select process,status from v$managed_standby;
注:如datagaurd出现异常现象,则可以通过altert.log来查看哪里出了问题。
Altert.log的路径:D:\oracle\product\10.2.0\db_1\admin\orac\bdump。还可以根据alter.log中所说的trace文件中查找问题。
4 在主库上创建新用户,创建新表,看备库是否同步
主库上:SQL>conn / as sysdba;
SQL>create user user_name identified by password;
SQL>grant create session,recource to user_name;
SQL>conn user_name/password;
SQL>create table t1 as select * from dual;
SQL>commit;
SQL>alter system switch logfile;
备库上:
SQL>conn / as sysdba;
SQL>alter database recover managed standby database cancel;
SQL>alter database recover managed standby database disconnect from session;
SQL>alter database open;
SQL>select * from all_users;
SQL>conn user_name/password;
SQL>select * from t1;
在备库上查看是否创建了同样的用户和新表
注:在备库上进行查询的时候,需要将数据库open
5 角色切换
主库
(1) 查看switchover_statusselect database_role, switchover_status from v$database;
如果switchover_status为:to standby 则:
alter database commit to switchover to physical standby
否则用:
alter database commit to switchover to physical standby with session shutdown;
(2)重启数据库
shutdown immediate;
startup nomount;
(3)以备库mount
alter database mount standby database;
(4)查看数据库的角色
select database_role from v$database;
备库
(1) 应用redoalter database recover managed standby database disconnect from session;
(2)查看switchover_status
select database_role, switchover_status from v$database;
如果switchover_status为:to primary 则:
alter database commit to switchover to primary
否则用:
alter database commit to switchover to primary with session shutdown;
(3)重启数据库
shutdown immediate;
startup;
(4)查看数据库的角色
select database_role from v$database;
注:需要尝试的技能
1, 利用rman进行备份数据文件,控制文件,初始化文件
2, 本文档是在windows平台下进行,网上大多数教程是在linux下操作,学会linux操作
3, 对于数据库异常处理的解决办法,例如日志不同步,日志未应用,日志出现gap现象等一系列异常处理
相关文章推荐
- JSP+Oracle 环境搭建3 -- 安装 Oracle 10g
- 搭建Oracle 10g Proc+VS2008开发环境
- Oracle 10g绿色客户端 plus PL/SQL Developer-搭建方便的Oracle客户端使用环境
- 通过VMWARE虚拟机搭建Oracle 10g R2 RAC环境及physical standby数据库
- oracle 10g dg环境的搭建
- 在windows中搭建虚拟ASM环境创建Oracle 10G数据库
- Oracle 10g DG 环境搭建详解
- Linux环境中Oracle数据导入与导出备份创建用户操作
- 企业应当建立容灾备份机制
- Oracle 9i和10g安装后的基本环境与服务
- vs2005下oracle 10g oci编程环境的配置
- J2EE环境的搭建之二—oracle的安装与详解 推荐
- ORACLE测试环境的搭建
- Oracle 9i & 10g编程艺术-深入数据库体系结构——配置环境
- 开发环境基本升级VS 2005 + VS 2008 ,ARCGIS 9.3 ,ORACLE 10g, SQL 2005
- 图解Oracle 10g克隆数据库(冷备份方式)
- Oracle 10g RAC 在HP-UX v3+MC ServiceGuard环境的安装【转】
- Oracle 10g备份指南
- 使用expdp命令备份Oracle 10g数据库【转】
- Linux环境中Oracle数据导入与导出备份操作