ITPub博客

首页 > 数据库 > Oracle > 10g中单机上配置data guard的成功案例

10g中单机上配置data guard的成功案例

原创 Oracle 作者:shiyihai 时间:2007-06-29 16:57:41 0 删除 编辑

在数据库的容灾方案中通常考虑data guard这一技术来实现应用系统的flexibility和usability。
下面是我利用平时空闲时间在pc单机上配置oracle 10g的data guard物理备用数据库整个过程,供大家学习,也希望大家提出宝贵的建议给我。

[@more@]

一、原理
应该说物理备用数据库是主数据库的镜像,事务一致性副本。物理备用数据库通过应用主数据库的重做日志数据来跟主数据库保持同步。当主数据库发生事务变化时,oracle会将重做数据写入重做日志和归档日志中。后台进程MRP0定期将归档日志传送到物理备用数据库后物理备用数据库应用这些事务变化,从而保持与主数据库的同步性。
二、前提条件
主数据库必须处于archivelog模式
三、环境准备
主数据库:sid为ora10g;三类文件(controlfile,datafile和redo logfile)均在H:oradataora10g下,dump类文件(adump,bdump,udump等)在H:adminora10g下;归档日志在H:archora10g下
物理备用数据库:sid为standby,三类文件(controlfile,datafile和redo logfile)均在G:standby下,dump类文件(adump,bdump,udump等)在G:standbyadmin下;归档日志在G:standbyarch下。
主数据库能正常启动
创建对应的目录结构
创建物理备用数据库的例程服务(oradim命令)
四、配置监听程序和网络服务名
listener.ora文件对应如下:
# LISTENER.ORA Network Configuration File: C:oracleora92 etworkadminlistener.ora
# Generated by Oracle configuration tools.

listener =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.19.134)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ora10g)
(ORACLE_HOME = h:oracle10g)
(SID_NAME = ora10g)
)
(SID_DESC =
(GLOBAL_DBNAME = ora10g)
(ORACLE_HOME = h:oracle10g)
(SID_NAME = standby)
)
)

tnsnames.ora文件中相关内容如下:
primary.xxx.xxx.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.19.134)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10g)
)
)

standby.xxx.xxx.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.19.134)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)

C:Documents and Settingsshiyihai>lsnrctl start

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 29-6月 -2007 10:35:22

Copyright (c) 1991, 2005, Oracle. All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为H:oracle10gnetworkadminlistener.ora
写入H:oracle10gnetworkloglistener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.19.134)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.19.134)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 29-6月 -2007 10:35:25
正常运行时间 0 天 0 小时 0 分 3 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 H:oracle10gnetworkadminlistener.ora
监听程序日志文件 H:oracle10gnetworkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.19.134)(PORT=1521)))
服务摘要..
服务 "ora10g" 包含 2 个例程。
例程 "ora10g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
例程 "standby", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
C:Documents and Settingsshiyihai>tnsping standby

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 29-6月 -2007 17:08:20

Copyright (c) 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:
H:oracle10gnetworkadminsqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.
(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = standby)))
OK (10 毫秒)

C:Documents and Settingsshiyihai>

五、配置主数据库参数文件
pfile_ora10g.ora的对应内容如下:
ora10g.__db_cache_size=192937984
ora10g.__java_pool_size=4194304
ora10g.__large_pool_size=4194304
ora10g.__shared_pool_size=96468992
ora10g.__streams_pool_size=0
*.audit_file_dest='H:adminora10gadump'
*.background_dump_dest='H:adminora10gdump'
*.compatible='10.2.0.1.0'
*.control_files='H:oradataora10gCONTROL01.CTL','H:oradataora10gCONTROL02.CTL','H:oradataora10gCONTROL03.CTL'
*.core_dump_dest='H:adminora10gcdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_name='ora10g'
*.instance_name='ora10g'
*.db_recovery_file_dest='h:flash_recovery_area'
*.db_recovery_file_dest_size=500000000
*.job_queue_processes=10
*.log_archive_dest_1='location=H:archora10g valid_for=(all_logfiles,all_roles) db_unique_name=ora10g'
*.log_archive_dest_2='service=standby valid_for=(online_logfiles,primary_role) db_unique_name=standby'
*.log_archive_config='dg_config=(ora10g,standby)'
*.fal_server=standby
*.fal_client=primary
*.standby_file_management=auto
*.log_archive_format='%s_%t_%r.log'
*.open_cursors=300
*.pga_aggregate_target=200000000
*.processes=550
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=610
*.sga_target=300000000
*.star_transformation_enabled='TRUE'
*.fast_start_mttr_target=300
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='H:adminora10gudump'
*.db_unique_name=ora10g
六、配置物理备用数据库的参数文件
pfile_standby.ora的对应内容如下:
ora10g.__db_cache_size=192937984
ora10g.__java_pool_size=4194304
ora10g.__large_pool_size=4194304
ora10g.__shared_pool_size=96468992
ora10g.__streams_pool_size=0
*.audit_file_dest='G:standbyadminora10gadump'
*.compatible='10.2.0.1.0'
*.control_files='G:standbyCONTROL01.CTL'
*.core_dump_dest='G:standbyadminora10gcdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_name='ora10g'
*.db_recovery_file_dest='h:flash_recovery_area'
*.db_recovery_file_dest_size=500000000
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora10gXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=G:standby valid_for=(all_logfiles,all_roles) db_unique_name=standby'
*.log_archive_config='dg_config=(ora10g,standby)'
*.db_file_name_convert='h:oradataora10g','g:standby'
*.log_file_name_convert='h:oradataora10g','g:standby'
*.standby_file_management=auto
*.standby_archive_dest='g:standbyarch'
*.background_dump_dest='g:standbyadmindump'
*.user_dump_dest='g:standbyadminudump'
*.fal_server=primary
*.fal_client=standby
*.standby_file_management=auto
*.log_archive_format='%s_%t_%r.log'
*.open_cursors=300
*.pga_aggregate_target=200000000
*.processes=550
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=610
*.sga_target=300000000
*.star_transformation_enabled='TRUE'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name=standby
*.service_names=standby
*.instance_name=standby
七、将主数据库的数据文件迁到备用库上
SQL> alter database begin backup;

数据库已更改。

SQL> host copy H:oradataora10g*.DBF G:standby
H:oradataora10gSYSAUX01.DBF
H:oradataora10gSYSTEM01.DBF
H:oradataora10gTEMP01.DBF
H:oradataora10gTEST.DBF
H:oradataora10gUNDOTBS01.DBF
已复制 5 个文件。

SQL> alter database end backup;

数据库已更改。

八、将主数据库的控制文件迁到备用库上
SQL> alter database create standby controlfile as 'G:standbycontrol01.ctl';

数据库已更改。
九、启动备用数据库到mount状态
SQL> startup pfile="G:standbypfile_standby.ora" mount;
ORACLE 例程已经启动。

Total System Global Area 301989888 bytes
Fixed Size 1248672 bytes
Variable Size 96469600 bytes
Database Buffers 201326592 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
十、启动主数据库
SQL> startup pfile="G:standbypfile_ora10g.ora";
ORACLE 例程已经启动。

Total System Global Area 301989888 bytes
Fixed Size 1248672 bytes
Variable Size 104858208 bytes
Database Buffers 192937984 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> create table test (name varchar2(24));

表已创建。

SQL> insert into test values('1');

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL>
十一、物理备用数据库开始应用重做机制
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

这里看到备用数据库的alert_standby.log中有如下信息:
Fri Jun 29 15:43:53 2007
alter database recover managed standby database disconnect from session
MRP0 started with pid=19, OS id=2620
Managed Standby Recovery not using Real Time Apply
Media Recovery Log G:STANDBYARCH116_1_623949299.LOG
Fri Jun 29 15:43:59 2007
Completed: alter database recover managed standby database disconnect from session
Fri Jun 29 15:43:59 2007
Media Recovery Log G:STANDBYARCH117_1_623949299.LOG
Media Recovery Log G:STANDBYARCH118_1_623949299.LOG
Media Recovery Log G:STANDBYARCH119_1_623949299.LOG
Media Recovery Log G:STANDBYARCH120_1_623949299.LOG
Media Recovery Log G:STANDBYARCH121_1_623949299.LOG
Media Recovery Waiting for thread 1 sequence 122
Fri Jun 29 15:47:43 2007
查询备用库v$archived_log可看到:
SQL> select name from v$archived_log;

NAME
--------------------------------------------------------------------------------
G:STANDBYARCH110_1_623949299.LOG
G:STANDBYARCH111_1_623949299.LOG
G:STANDBYARCH112_1_623949299.LOG
G:STANDBYARCH113_1_623949299.LOG
G:STANDBYARCH114_1_623949299.LOG
G:STANDBYARCH115_1_623949299.LOG
G:STANDBYARCH116_1_623949299.LOG
G:STANDBYARCH117_1_623949299.LOG
G:STANDBYARCH118_1_623949299.LOG
G:STANDBYARCH119_1_623949299.LOG
G:STANDBYARCH120_1_623949299.LOG

NAME
--------------------------------------------------------------------------------
G:STANDBYARCH121_1_623949299.LOG

已选择12行。

SQL>
将备用库以只读方式打开并查询,得到如下的结果:
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸载


SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select * from test;

NAME
------------------------
1

SQL>
至此,整个data guard的配置完毕,并检验同步机制是成功的!
接下来是怎么切换到备用数据库上并由备用数据库切换回主数据库。待续!

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

上一篇: About quota
请登录后发表评论 登录
全部评论
  • 博文量
    235
  • 访问量
    1707884