您的位置:首页 > 数据库 > Oracle

【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 /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现象等一系列异常处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle DG Data-Gaurd 10g 备份