大卫博客--breath
恭喜!您的Blog已经建立。
11月21日(星期日)

您已经成功注册ITPUB Blog帐号。请进入http://blog.itpub.net/admin.php管理您的Blog站点。建议先修改Blog的名称并建立文档分类,系统已经默认建立了【初始分类】。如果您的登陆ID包含中文字符,请记录您现在的地址。如果您的登陆ID里未包含任何中文字符,还可以使用“http://blog.itpub.net/您的ID”这种链接形式访问。登陆密码与itpub论坛帐号的密码相同。如有问题请在斑竹区发贴。谢谢。

文章分类: Oracle 爬爬
后篇(05-07-09): 9i data guard实践文档(物理方式)

最新回复(4件)
主题/内容 作者/日时
呵呵

还在摸索

breath
05-07-09 01:35
呵呵

摸索中

david
05-07-09 01:34
9i Data guard实践(物理方式)

ORACLE 9.2.0.1 DATA GUARD实施手册(物理方法)
一、实施环境:
主数据库OS : WINXP
备数据库OS : WIN2K ADS
主机oracle版本: oracle 9201
备机oracle版本: oracle 9201
主数据库服务器IP:10.103.41.127
备数据库服务器IP:10.103.41.247
oracle_home=D:/oracle/ora92
oracle_sid=wyf59
nls_lang= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(注:
1. 两台server的防火墙要关闭;
2. 主机对standby归档的路径要允许访问;
3. )

二、实施步骤:
1.安装主、备数据库:最好是目录对应一样,方便参数设定和日后管理。主数据库安装软件,并创建数据库;备数据库只安装软件,不用创建数据库。
2.主、备数据库的环境变量:
oracle_home=d:/oracle/ora92
oracle_sid=wyf59
nls_lang= SIMPLIFIED CHINESE_CHINA.ZHS16GBK


3. 将primary database 设置为archive log模式:
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 177805976 bytes
Fixed Size 453272 bytes
Variable Size 167772160 bytes
Database Buffers 8388608 bytes
Redo Buffers 1191936 bytes
数据库装载完毕。
SQL> archive log list
数据库日志模式 非归档模式
自动存档 关闭
存档终点 D:oracleoradatawyf59archive
最早的概要日志序列 87
下一个存档日志序列 89
当前日志序列 89

SQL> alter database archivelog;
数据库已更改。

SQL> archive log list
数据库日志模式 归档模式
自动存档 启用
存档终点 D:oracleoradatawyf59archive
最早的概要日志序列 87
下一个存档日志序列 89
当前日志序列 89

SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=D:oracleoradatawyf59archive' scope=spfile;
系統已更改。

SQL> alter system set log_archive_format='arch%t_%s.arc' scope=spfile;
系統已更改。

SQL> alter system set log_archive_start=true scope=spfile;
系統已更改。

SQL> shutdown immediate;
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 177805976 bytes
Fixed Size 453272 bytes
Variable Size 167772160 bytes
Database Buffers 8388608 bytes
Redo Buffers 1191936 bytes
数据库装载完毕。
数据库已经打开。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 D:oracleoradatawyf59archive
最早的概要日志序列 87
下一个存档日志序列 89
当前日志序列 89

4.确定数据文件及redo log:
Ø 必须通过数据字典确认数据文件,防止遗漏多处存储的文件,给后面配置带来不必要麻烦,甚至重做;

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
D:ORACLEORADATAORCLSYSTEM01.DBF
D:ORACLEORADATAORCLUNDOTBS01.DBF
D:ORACLEORADATAORCLCWMLITE01.DBF
D:ORACLEORADATAORCLDRSYS01.DBF
D:ORACLEORADATAORCLEXAMPLE01.DBF
D:ORACLEORADATAORCLINDX01.DBF
D:ORACLEORADATAORCLODM01.DBF
D:ORACLEORADATAORCLTOOLS01.DBF
D:ORACLEORADATAORCLUSERS01.DBF
D:ORACLEORADATAORCLXDB01.DBF
D:ORACLEORADATAORCLOEM_REPOSITORY.DBF
D:ORACLEORADATAORCLPERF.ORA

已选择12行。

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
D:ORACLEORADATAORCLLOG6.ORA
D:ORACLEORADATAORCLLOG4.ORA
D:ORACLEORADATAORCLLOG5.ORA

SQL> select name from v$tempfile;

NAME
------------------------------------ --------------------------------------------
D:ORACLEORADATAORCLTEMP01.DBF

5.备份数据文件、redo log到standby database相应目录:
Ø 主数据库shutdown后才能复制主数据库文件;
Ø 备份数据库目录最好与主数据库对应一样,若不一样在参数设定和日后管理时要有目录对照表,以方便管理;
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

Copy d:oracleoradata*.* 备机 d:oracleoradata
6.在primary database上创建standby database control file:
Ø 注意创建standby controlfile时,名字和primary database的要一样;
Ø 将controlfile复制到备机的相应控制文件存放位置。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 177805976 bytes
Fixed Size 453272 bytes
Variable Size 167772160 bytes
Database Buffers 8388608 bytes
Redo Buffers 1191936 bytes
数据库装载完毕。
数据库已经打开。

SQL>alter database create standby controlfile as ‘d:oraclecontrol01.ctl’;
数据库已更改。

Copy ‘d:oraclecontrol01.ctl’ 到standby database相应目录 ‘d:oracle…’

7.配置主库tnsname.ora和listener.ora文件:
# TNSNAMES.ORA Network Configuration File: D:oracleora92networkadmintnsnames.ora
# Generated by Oracle configuration tools.

PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.127)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wyf59)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.247)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wyf59)
)
)

# LISTENER.ORA Network Configuration File: D:oracleora92networkadminlistener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.127)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wyf59)
(ORACLE_HOME = D:oracleora92)
(SID_NAME = wyf59)
)
)

8.配置standby database的tnsname.ora,listener.ora文件:

# TNSNAMES.ORA Network Configuration File: D:oracleora92networkadmintnsnames.ora
# Generated by Oracle configuration tools.

PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.127)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wyf59)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.247)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wyf59)
)
)

# LISTENER.ORA Network Configuration File: D:oracleora92networkadminlistener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.247)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wyf59)
(ORACLE_HOME = D:oracleora92)
(SID_NAME = wyf59)
)
)

9.启动主、备数据库的listener:
primary database上:
D:>lsnrctl start

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2005 21:35:51

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

启动tnslsnr:请稍候...

TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
系统参数文件为D:oracleora92networkadminlistener.ora
写入d:oracleora92networkloglistener.log的日志信息
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DELL)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期 30-6月 -2005 21:35:53
正常运行时间 0 天 0 小时 0 分 2 秒
跟踪级别 off
安全性 OFF
SNMP OFF
监听器参数文件 D:oracleora92networkadminlistener.ora
监听器日志文件 d:oracleora92networkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DELL)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "wyf59" 包含 1 个例程。
例程 "wyf59", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

standby database上:
D:>lsnrctl start

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2005 21:35:51

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

启动tnslsnr:请稍候...

TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
系统参数文件为D:oracleora92networkadminlistener.ora
写入d:oracleora92networkloglistener.log的日志信息
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DELL)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期 30-6月 -2005 21:35:53
正常运行时间 0 天 0 小时 0 分 2 秒
跟踪级别 off
安全性 OFF
SNMP OFF
监听器参数文件 D:oracleora92networkadminlistener.ora
监听器日志文件 d:oracleora92networkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DELL)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "wyf59" 包含 1 个例程。
例程 "wyf59", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

10.检查主数据库的tnsname.ora的配置:

primary databse上:

D:>tnsping standby

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2005 21:42:40

Copyright (c) 1997 Oracle Corporation. All rights reserved.

已使用的参数文件:

D:oracleora92networkadminsqlnet.ora
使用 TNSNAMES 程序来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.247)(PORT=1521)
ECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = wyf59)))
OK (90 msec)

standby database上:

D:>tnsping primary

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2005 21:43:09

Copyright (c) 1997 Oracle Corporation. All rights reserved.

已使用的参数文件:

D:oracleora92networkadminsqlnet.ora
使用 TNSNAMES 程序来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.41.127)(PORT=1521)
ECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = wyf59)))
OK (100 msec)

10.建立standby database的pfile:
Ø 9i一般都是用spfile,所以要在primary database上生成文本pfile后再复制到standby database相应位置;
D:>sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 6月 30 21:55:20 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> create pfile= 'd:oracleinit.ora' from spfile;

文件已创建。

Copy到相应位置

Ø 修改standby database的pfile参数,crontrol file,standby_archive_dest,fal_server, fal_client,standby_file_management几个参数,其中standby_file_management不是必须的,设为true时,如果primary database以后增加数据文件等,standby database能自己处理,避免麻烦。
修改pfile为:
*.aq_tm_processes=1
*.background_dump_dest='D:oracleadminwyf59bdump'
*.compatible='9.2.0.0.0'
*.control_files='D:oracleoradatawyf59control01.ctl'
*.core_dump_dest='D:oracleadminwyf59cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='wyf59'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=wyf59XDB)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='wyf59'
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_dest_1='LOCATION=D:oracleoradatawyf59archive'
*.log_archive_format='arch%t_%s.arc'
*.log_archive_start=TRUE
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=33554432
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:oracleadminwyf59udump'
*.STANDBY_ARCHIVE_DEST='D:oracleoradatawyf59archive'
*.fal_server='PRIMARY'
*.fal_client='STANDBY'
*.standby_file_management ='AUTO'

Ø 在standby database的OS上建立与pfile中对应的standby database归档路径D:oracleoradatawyf59archive

11.将primary database上的口令文件复制到standby database的OS的相应位置上:

12.在standby database上通过Oradim -new -sid wyf59建立OracleServicewyf59服务并启动:

13.启动standby database:

将数据库启动到NOMOUNT状态,并使用指定的pfile:
D:sqlplus /nolog
SQL> startup nomount pfile='D:oracleadminwyf59pfileinit.ora';
Oracle instance started.

Total System Global Area 177805976 bytes
Fixed Size 453272 bytes
Variable Size 167772160 bytes
Database Buffers 8388608 bytes
Redo Buffers 1191936 bytes

把standby database MOUNT起来:
SQL>ALTER DATABASE MOUNT STA NDBY DATABASE;

将standby database置于恢复状态下:
SQL>alter database recover managed standby database disconnect from session;

如果出现如下error:
d:>sqlplus "/as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 6月 30 22:36:05 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

ERROR:
ORA-12560: TNS:监听程序错误
请检查oracle服务是否已经被启动,监听有否启动,查看环境变量oracle_sid是否有设定了。

14.在primary database上设定到standby database的归档路径:

SQL> alter system set log_archive_dest_2='SERVICE=standby MANDATORY REOPEN=60';
系统已更改。

其中reopen表示了如果如果发生归档失败后,第二次重复归档的时间间隔是多少秒,这是8i以来就采用的方式,具有比较稳定,不影响资料库的性能,如果发生网络连接失败等原因,主资料库不会因为standby database端归档不成功而停下来。

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
4 1 90 10485760 1 YES ACTIVE
3222566 30-6月 -05

5 1 89 10485760 1 YES INACTIVE
3198756 30-6月 -05

6 1 91 10485760 1 NO CURRENT
3230193 30-6月 -05

SQL> alter system switch logfile;

系统已更改。

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
4 1 90 10485760 1 YES INACTIVE
3222566 30-6月 -05

5 1 92 10485760 1 NO CURRENT
3230277 30-6月 -05

6 1 91 10485760 1 YES INACTIVE
3230193 30-6月 -05

查看standby database的alert.log
如出现
Media Recovery log
D:oracleoradataarchivearch1_12.arc
Completed:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DI即说明这个归档日志已经由primary database正常写到standby database的路径下,并在standby database上恢复完成。也就是说Data guard可以正常使用了,接下来就是测试了^_^。

15.测试:
primary database上:
SQL>create user test identified by test;

SQL>grant connect ,resource to test;

SQL>conn test/test@primary

SQL>create table test(name vrchar2(20));

SQL>insert into test values('hi,dalin');

SQL>commit;

SQL>conn /as sysdba

SQL>alter system switch logfile;

16.查看standby database的日志,如归档日志已正常完成恢复,就用只读方式(read only)打开standby database查看:

standby database:
SQL> conn /as sysdba;

SQL> alter database recover managed standby database cancel;

SQL>alter database open read only;

SQL> conn test/test
已連線.
SQL> select * from test;

NAME
--------------------
hi,dalin

说明data guard完全配置完成,并已经正常工作了。

备用数据库的相关试图:
V$ARCHIVED_LOG
V$MANAGED_STANDBY
(Physical Standby Databases Only) 会记录当前备库的一些进程情况和进程的process id,如rfs,mrp等
V$ARCHIVE_GAP这里会记录当前备库mrp进程恢复需要的但还没传到备库的日志
V$DATAGUARD_STATUS备库的状态与信息
V$STANDBY_LOG备库的备用日志的数量与当前状态等信息

17.将standby database 置于恢复模式:
SQL>alter database recover managed standby database disconnect from session;

18.查看当前data guard处于何种保护模式:
SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

19.fail over

一般指主伺服器已经不能使用,必須切换到备用伺服器,所以,只操作备用伺服器這一端
SQL>sqlplus /nolog
SQL>connect / as sysdba

取消Standby database恢复模式:
如果standby 有 Standby redo logfile
SQL>alter database recover managed standby database finish;
没有的话
SQl>alter database recover managed standby database finish skip standby logfile;

注意:此命令将把此standby database切换为primary database,且无法再切换回来,只能重新配置才能改为standby database。因为此命令执行后,standby database会将其使用的原primary database建立的standby controfile改变为非standby controfile(controlfile里的内容会变掉)。也可以将standby database重新配置成备机。
SQL>alter database commit to switchover to primary;

打开数据库
SQL>shutdown immediate
SQL>startup pfile='D:oracleadminwyf59pfileinit.ora'

重起listener
D:/>lsnrctl stop
D:/>lsnrctl start

修改tnsnames.ora
将主库IP:10.103.41.127 与备库IP:10.103.41.247对换 (即127 与247对换即可)

說明:
1、如果在備用端有活動的未歸檔的日誌,或者有從主資料庫拷貝過來的聯機日誌,可以采
用如下的辦法註冊並恢復
SQL> ALTER DATABASE REGISTER LOGFILE 'D:toolsoracleoradatatestarchive%t_%s.dbf';
SQL>recover standby database;
2、如果有活動日誌,必須用
alter database recover managed standby database finish;
否則用
alter database recover managed standby database finish skip standby logfile;
這樣切換的備用伺服器可以避免最小的資料丟失和不用resetlogs,特別是對於用多個備
用伺服器的時候,該伺服器可以馬上作為主伺服器而不用重新創建備用伺服器。

david
05-07-09 01:23
恭喜blog建立!!

欢迎欢迎,热烈欢迎!

过客
05-06-30 09:39

发表评论
标题:
称呼:
内容:

引用链接
您可以按照以下步骤引用本文.本站收到您的引用通知后, 将自动链接您的文章, 以方便别人阅览 .
1. 启动您自己的博客管理页面, 并进入发表新文章的画面, 输入文章的内容. (如果您是ITPUB的博客请点这里.)
2. 复制下面虚线框里的连接字串, 把它们粘贴到您的文章中, 按照您的喜好修改一下表示文字.
3. 确认您选择了"发送引用通知"的选项.
4. 发表您的文章.
好啦, 您的文章就可以被自动链接到本站啦.

« 二月 2012 »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        


Creative Commons License 本站全部著作均采用CC授权. Plog 1.0 is powered by: plogworld.net.
Itpub BLOG is provided by: itpub.net.
This temlate(named Happy-Life's SunShine) is designed by lodge@itpub(肥猫猫).