【Oracle】Oracle 10g的Data Gaurd环境搭建(备份容灾机制)

    xiaoxiao2021-03-25  115

    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 /nolog SQL> 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_status

    select 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) 应用redo

    alter 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现象等一系列异常处理

    转载请注明原文地址: https://ju.6miu.com/read-14320.html

    最新回复(0)