oracle 11gdata guard,Oracle 11g Data Guard配置

操作环境说明:

两台服务器使用相同的Redhat 5.5

内核版本为:2.6.18-194.el5

在主库(primary database)中提前安装好了Oracle 11gR2软件,通过DBCA创建了数据库,实例名为PRIMARY

备库(standby database)中只安装了Oracle 11gR2软件,未创建数据库。

本文完整记录基于11g的DG配置

主库配置

1、确认主库开启了archivelog模式,并设置为force logging模式

SYS@PRIMARY>alter database force logging ;

alter database force logging

*

ERROR at line 1:

ORA-12920: database is already in force logging mode

复制代码

2、创建standby controlfile

SYS@PRIMARY>alter database create standby controlfile as '/u01/data/primary/primary/standby.ctl';

Database altered.

复制代码

3、登录到主库,可以了解一下数据文件的信息,之后安全关闭数据库,将全部数据文件拷贝到备库的相应目录下,直接复制目录最简单

SYS@PRIMARY>select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/data/primary/system01.dbf

/u01/data/primary/sysaux01.dbf

/u01/data/primary/undotbs01.dbf

/u01/data/primary/users.dbf

SYS@PRIMARY>show parameter control_files

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files                        string      /u01/data/primary/primary/cont

rol01.ctl, /u01/data/primary/p

rimary/control02.ctl

SYS@PRIMARY>select group#,member from v$logfile;

GROUP# MEMBER

---------- ------------------------------

1 /u01/data/primary/redo01a.rdo

1 /u01/data/primary/redo01b.rdo

2 /u01/data/primary/redo02a.rdo

2 /u01/data/primary/redo02b.rdo

3 /u01/data/primary/redo03a.rdo

3 /u01/data/primary/redo03b.rdo

6 rows selected.

SYS@PRIMARY>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@PRIMARY>quit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@localhost ~]$ cd /u01/data/

[oracle@localhost data]$ scp -r primary/ 172.26.29.4:/u01/data

oracle@172.26.29.4's password:

system01.dbf                                                                               100%  172MB  34.4MB/s   00:05

redo01b.rdo                                                                                100%  100MB  33.3MB/s   00:03

sysaux01.dbf                                                                               100%  100MB  50.0MB/s   00:02

undotbs01.dbf                                                                              100%  133MB  44.3MB/s   00:03

.......

[oracle@localhost data]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 21 20:54:47 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@PRIMARY>startup

ORACLE instance started.

Total System Global Area 1603411968 bytes

Fixed Size                  2213776 bytes

Variable Size             402655344 bytes

Database Buffers         1191182336 bytes

Redo Buffers                7360512 bytes

Database mounted.

Database opened.

复制代码

4、主库修改初始化参数文件

SYS@PRIMARY>create pfile from spfile;

File created.

SYS@PRIMARY>!

复制代码

在pfile后面追加如下这些参数:

参数的含义请查看联机文档。

log_archive_config='dg_config=(primary,standby)'

log_archive_dest_1='location=/u01/data/primary/arc'

log_archive_dest_2='service=standby async valid_for=(all_logfiles,all_roles) db_unique_name=STANDBY'

log_archive_dest_state_1='enable'

log_archive_dest_state_2='enable'

log_archive_format='%t_%s_%r.arc'

log_archive_max_processes=10

log_file_name_convert='/u01/data/primary/arc','/u01/data/primary/arc'

fal_client='PRIMARY'

fal_server='STANDBY'

standby_file_management='auto'

remote_login_passwordfile='exclusive'

这里要注意:

log_archive_dest_2这个参数中db_unique_name的值为备库的db_unique_name,最好完全与备库一致,包括大小写

log_file_name_convert的值中,第一个值为主库的归档日志目录,第二个为备库的归档日志目录

[oracle@localhost dbs]$ cat initPRIMARY.ora

PRIMARY.__db_cache_size=1191182336

PRIMARY.__java_pool_size=16777216

PRIMARY.__large_pool_size=16777216

PRIMARY.__oracle_base='/u01/app'#ORACLE_BASE set from environment

PRIMARY.__pga_aggregate_target=1677721600

PRIMARY.__sga_target=1610612736

PRIMARY.__shared_io_pool_size=0

PRIMARY.__shared_pool_size=369098752

PRIMARY.__streams_pool_size=0

*.compatible='11.2.0'

*.control_files='/u01/data/primary/primary/control01.ctl','/u01/data/primary/primary/control02.ctl'

*.core_dump_dest='/u01/app/oracle/admin/primary/cdump'

*.db_block_size=8192

*.db_name='PRIMARY'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=53687091200

*.db_unique_name='PRIMARY'

*.fal_client='PRIMARY'

*.fal_server='STANDBY'

*.log_archive_config='dg_config=(primary,standby)'

*.log_archive_dest_1='location=/u01/data/primary/arc'

*.log_archive_dest_2='service=standby async valid_for=(all_logfiles,all_roles) db_unique_name=STANDBY'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

*.log_archive_format='%t_%s_%r.arc'

*.log_archive_max_processes=10

*.log_file_name_convert='/u01/data/primary/arc','/u01/data/primary/arc'

*.nls_date_format='YYYY-MM-DD hh24:mi:ss'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=1669332992

*.processes=1000

*.remote_login_passwordfile='exclusive'

*.sessions=1105

*.sga_target=1610612736

*.standby_file_management='auto'

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS01'

复制代码

5、主库创建pfile和passwordfile后,拷贝到备库的相同路径下

注意,使用orapwd创建口令文件时,一定要使用ignorecase选项。否则启动备库后,可能会在alert文件中提示ORA-16191错误。这个问题有可能是Oracle 11g中的一个bug,我被他困扰折磨了老半天...

[oracle@localhost data]$ cd $ORACLE_HOME/dbs

[oracle@localhost dbs]$ orapwd file=orapwPRIMARY password=sys force=y ignorecase=y

[oracle@localhost dbs]$ ls

hc_PRIMARY.dat  init.ora         lkPRAMARY  lkTDB1  orapwPRIMARY      orapwtdb1          spfiletdb1.ora

hc_tdb1.dat     initPRIMARY.ora  lkPRIMARY  lkTEST  orapwPRIMARY.bak  spfilePRIMARY.ora

[oracle@localhost dbs]$ scp -r orapwPRIMARY initPRIMARY.ora 172.26.29.4:/u01/app/oracle/product/11.2.0/db_1/dbs

oracle@172.26.29.4's password:

orapwPRIMARY                                                                               100% 1536     1.5KB/s   00:00

initPRIMARY.ora                                                                            100% 1496     1.5KB/s   00:00

复制代码

5、备库获取数据文件,初始化参数文件和口令文件后,对初始化参数文件进行相应修改

需要修改的参数如下:

db_unique_name=STANDBY

log_archive_dest_2='service=primary async valid_for=(all_logfiles,all_roles) db_unique_name=PRIMARY'

fal_server=primary

fal_client=standby

control_files='/u01/data/primary/primary/standby.ctl' 此处使用standby controlfile

简单来说,就是将这几个参数依据备库,与主库做一个映像般的调换

[oracle@tam dbs]$ cat initPRIMARY.ora

PRIMARY.__db_cache_size=1191182336

PRIMARY.__java_pool_size=16777216

PRIMARY.__large_pool_size=16777216

PRIMARY.__oracle_base='/u01/app'#ORACLE_BASE set from environment

PRIMARY.__pga_aggregate_target=1677721600

PRIMARY.__sga_target=1610612736

PRIMARY.__shared_io_pool_size=0

PRIMARY.__shared_pool_size=369098752

PRIMARY.__streams_pool_size=0

*.compatible='11.2.0'

*.control_files='/u01/data/primary/primary/standby.ctl'

*.core_dump_dest='/u01/app/oracle/admin/primary/cdump'

*.db_block_size=8192

*.db_name='PRIMARY'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=53687091200

*.db_unique_name='STANDBY'

*.fal_client='STANDBY'

*.fal_server='PRIMARY'

*.log_archive_config='dg_config=(primary,standby)'

*.log_archive_dest_1='location=/u01/data/primary/arc'

*.log_archive_dest_2='service=primary async valid_for=(all_logfiles,all_roles) db_unique_name=PRIMARY'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

*.log_archive_format='%t_%s_%r.arc'

*.log_archive_max_processes=10

*.log_file_name_convert='/u01/data/primary/arc','/u01/data/primary/arc'

*.nls_date_format='YYYY-MM-DD hh24:mi:ss'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=1669332992

*.processes=1000

*.remote_login_passwordfile='exclusive'

*.sessions=1105

*.sga_target=1610612736

*.standby_file_management='auto'

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS01'

复制代码

6、配置主库和备库中的监听服务和tnsnames.ora

主库:注意listener.ora文件中的SID_NAME是大小写敏感的,笔者因为忽略了这个问题,导致配置监听和启动监听成功后,一致不能远程登录...

[oracle@localhost admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0.5/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(SID_NAME = PRIMARY)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(GLOBAL_DBNAME = primary)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.29.2)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

[oracle@localhost admin]$ cat tnsnames.ora

names.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

STANDBY =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.29.4)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = primary)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

复制代码

备库

[oracle@tam admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0.5/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(SID_NAME = PRIMARY)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(GLOBAL_DBNAME = primary)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.29.4)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

[oracle@tam admin]$ cat tnsnames.ora

# Generated by Oracle configuration tools.

PRIMARY =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.26.29.2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = primary)

)

)

复制代码

配置完成后,尝试从两台服务器以sysdba身份互相访问

主库:

[oracle@localhost admin]$ sqlplus sys/sys@standby as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 22 10:16:26 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

复制代码

备库:

[oracle@tam admin]$ sqlplus sys/sys@primary as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 22 10:15:17 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

复制代码

7、启动备库

[oracle@tam dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 22 10:19:00 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@PRIMARY>startup nomount

ORACLE instance started.

Total System Global Area 1603411968 bytes

Fixed Size                  2213776 bytes

Variable Size             402655344 bytes

Database Buffers         1191182336 bytes

Redo Buffers                7360512 bytes

SYS@PRIMARY>alter database mount standby database;

Database altered.

SYS@PRIMARY>alter database recover managed standby database disconnect from session;

Database altered.

复制代码

8、验证

主库中创建一个表,并插入若凡数据后,备库中能够同步出这些数据,则认为DG实施成功

主库:

[oracle@localhost admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 22 10:28:14 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYS@PRIMARY>create table test(id number);

Table created.

SYS@PRIMARY>for i in 1..10 loop

SP2-0734: unknown command beginning "for i in 1..." - rest of line ignored.

SYS@PRIMARY>begin

2  for i in 1..10 loop

3  insert into test values(i);

4  end loop;

5  commit;

6  end;

7  /

PL/SQL procedure successfully completed.

SYS@PRIMARY>select * from test;

ID

----------

1

2

3

4

5

6

7

8

9

10

10 rows selected.

SYS@PRIMARY>alter system switch logfile;

System altered.

SYS@PRIMARY>/

System altered.

复制代码

备库:

SYS@PRIMARY>select name,database_role from v$database;

NAME      DATABASE_ROLE

--------- ----------------

PRIMARY   PHYSICAL STANDBY

SYS@PRIMARY>select sequence#,first_time,next_time from v$archived_log;

SEQUENCE# FIRST_TIME   NEXT_TIME

---------- ------------ ------------

15 20-FEB-12    20-FEB-12

8 20-FEB-12    20-FEB-12

10 20-FEB-12    20-FEB-12

9 20-FEB-12    20-FEB-12

11 20-FEB-12    20-FEB-12

13 20-FEB-12    20-FEB-12

7 20-FEB-12    20-FEB-12

14 20-FEB-12    20-FEB-12

12 20-FEB-12    20-FEB-12

18 21-FEB-12    21-FEB-12

20 21-FEB-12    21-FEB-12

......

SYS@PRIMARY>alter database recover managed standby database cancel;

Database altered.

SYS@PRIMARY>alter database open read only;

Database altered.

SYS@PRIMARY>select * from test;

ID

----------

1

2

3

4

5

6

7

8

9

10

10 rows selected.

复制代码

至此,配置完毕

总结

想要玩好oracle的Data Guard、RAC、Golden Gate等高端软件,主要在于细心与耐心。

所谓细心,就是认真读取文档,认真配置各项参数和文件;所谓耐心,就是出现错误后,要认真预读alert log好trace文件,找到错误原因,即使去网上求助,一项一项排除。笔者首次不是DG时,确实遇到不少问题,就是靠逐步啃日志文件解决的

摘自 所好者道也

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值