大卫博客--breath
9i data guard实践文档(物理方式)
07月09日(星期六)

一、实施环境:

主数据库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 logstandby 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.oralistener.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 databasetnsname.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 databasepfile

Ø 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 databasepfile参数,crontrol file,standby_archive_destfal_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 databaseOS上建立与pfile中对应的standby database归档路径D:oracleoradatawyf59archive

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

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 databasealert.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

19fail 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 controfilecontrolfile里的内容会变掉)。也可以将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

将主库IP10.103.41.127 与备库IP10.103.41.247对换 (127 247对换即可)


文章分类: Oracle 爬爬
前篇(04-11-21): 恭喜!您的Blog已经建立。
后篇(05-07-11): 房子70年后怎么办?

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

引用链接
您可以按照以下步骤引用本文.本站收到您的引用通知后, 将自动链接您的文章, 以方便别人阅览 .
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 30 31      


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(肥猫猫).