ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10g data guard创建物理standby数据库的例子

oracle10g data guard创建物理standby数据库的例子

原创 Linux操作系统 作者:eric0435 时间:2012-12-03 21:20:04 0 删除 编辑

data guard主备数据库是在不现的机器上

主数据库的db_name=jytest db_unique_name=jytest

备份数据库db_name=jytest db_unique_name=jyrac1

演示用的示例足够了,我们分两阶段配置,分别是配置primary 数据库和配置standby 数据库,如下:

一、Primary

数据库配置及相关操作

1、确认主库处于归档模式

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/app/oracle/arch/jytest

Oldest online log sequence     124

Next log sequence to archive   126

Current log sequence           126

2、将primary 数据库置为FORCE LOGGING 模式。通过下列语句:

SQL> alter database force  logging;

数据库已更改。

3、创建standby 数据库控制文件

SQL> alter database create standby controlfile as  '/u01/app/oracle/jyrac1_01.ctl';

 

Database altered.

 

SQL>。

4、创建primary 数据库客户端初始化参数文件

注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile 重建spfile,你当

然也可以通过alter system set 命令直接修改spfile 内容。

SQL> create pfile from spfile;

文件已创建。

将该初始化参数文件复制一份,做为standby 数据库的客户端初始化参数文件

SQL> host copy /u01/app/oracle/product/10.2.0/db/dbs/initjytest.ora  

/u01/app/oracle/product/10.2.0/db/dbs/initjytest01.ora

已复制1 个文件。

SQL>

修改客户端初始化参数文件,增加下列内容

DB_UNIQUE_NAME='jytest'

 

LOG_ARCHIVE_CONFIG='DG_CONFIG=(jytest,jyrac1)'

 

LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch/jytest VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jytest'

 

LOG_ARCHIVE_DEST_2='SERVICE=jyrac1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyrac1'

 

LOG_ARCHIVE_DEST_STATE_1='ENABLE'

 

LOG_ARCHIVE_DEST_STATE_2='ENABLE'

 

REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'

#--------配置standby 角色的参数用于角色转换

FAL_CLIENT='jytest'

FAL_SERVER='jyrac1'

DB_FILE_NAME_CONVERT=/u01/app/oracle/oradata/jytest','/u01/app/oracle/oradata/jytest'

在备位置后面指定主数据库文件的路径名和文件名位置。这

个参数将主数据库的数据文件路径名转换成备数据文件路

径名。如果备数据库与主数据库处于同一系统上或如果数据

文件在备站点上的目录结构与主站点不同,则需要这个参

数。注意这个参数只是用于转换物理备数据库的路径名。这

个参数可以指定多对路径。(我这里主备数据库目录路径相同也可以不配置)

 

LOG_FILE_NAME_CONVERT=’/u01/app/oracle/oradata/jytest',' /u01/app/oracle/oradata/jytest'

在备位置后面指定主数据库联机重做日志文件的位置。这个

参数将主数据库日志文件的路径名转换成备数据库上的路

径名。如果备数据库与主数据库处于同一系统上或如果数据

文件在备站点上的目录结构与主站点不同,则需要这个参

数。这个参数可以指定多对路径(我这里主备数据库目录路径相同也可以不配置)

 

STANDBY_FILE_MANAGEMENT='AUTO'

 

通过pfile 重建spfile

SQL> shutdown immediate

...

SQL> create spfile from pfile

文件已创建。

5、复制数据文件到standby 服务器(方式多样,不详述)

将adump,bdump,cdump,dpdump,pfile,udump目录复制到weblogic29机器上来

[root@weblogic28 ~]# scp -r /u01/app/oracle/admin/* root@10.138.130.29:/u01/app/oracle/admin

root@10.138.130.29's password:

 

将数据文件,控制文件和重做日志文件复制到weblogic29这台机器上

[root@weblogic28 ~]# scp -r /u01/app/oracle/oradata/* root@10.138.130.29:/u01/app/oracle/oradata

root@10.138.130.29's password:

redo07a.log                                   100%   50MB  25.0MB/s   00:02

hygeia01.dbf                                  100%   20GB  42.9MB/s   07:57

redo04a.log                                   100%   50MB  50.0MB/s   00:01

control02.ctl                                 100% 6896KB   6.7MB/s   00:00

temp01.dbf                                    100% 5120MB  43.4MB/s   01:58

redo06b.log                                   100%   50MB  25.0MB/s   00:02

users01.dbf                                   100% 5128KB   5.0MB/s   00:00

control03.ctl                                 100% 6896KB   6.7MB/s   00:00

redo06a.log                                   100%   50MB  25.0MB/s   00:02

control01.ctl                                 100% 6896KB   6.7MB/s   00:00

redo05a.log                                   100%   50MB  50.0MB/s   00:01

redo07b.log                                   100%   50MB  50.0MB/s   00:01

redo05b.log                                   100%   50MB  50.0MB/s   00:01

sysaux01.dbf                                  100% 5120MB  43.0MB/s   01:59

redo04b.log                                   100%   50MB  50.0MB/s   00:01

redo01.log                                    100%   50MB  50.0MB/s   00:01

redo03.log                                    100%   50MB  25.0MB/s   00:02

redo02.log                                    100%   50MB  50.0MB/s   00:01

system01.dbf                                  100% 5120MB  41.0MB/s   02:05

undotbs01.dbf                                 100% 5120MB  34.1MB/s   02:30

[root@weblogic28 ~]#

还要将参数文件和口令文件复制过来

[root@weblogic28 ~]# scp -r /u01/app/oracle/product/10.2.0/db/dbs/* root@10.138.130.29:/u01/app/oracle/product/10.2.0/db/dbs

root@10.138.130.29's password:

alert_jytest.log                              100%  435     0.4KB/s   00:00

hc_jytest.dat                                 100% 1552     1.5KB/s   00:00

initdw.ora                                    100%   13KB  12.6KB/s   00:00

initjytest.ora                                100% 1753     1.7KB/s   00:00

init.ora                                      100% 8385     8.2KB/s   00:00

lkJYTEST                                      100%   24     0.0KB/s   00:00

orapwjytest                                   100% 1536     1.5KB/s   00:00

spfilejytest.ora                              100% 4608     4.5KB/s   00:00

[root@weblogic28 ~]#

 

注意需要复制所有数据文件,备份的控制文件及客户端初始化参数文件

6、配置listener 及net service names(方式多样,不详述)。

分别在主数据库和备份数据库上进行配置

Jytest主数据库(weblogic28)

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME =jytest)

      (ORACLE_HOME =/u01/app/oracle/product/10.2.0/db)

      (SID_NAME =jytest)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

 

Jyrac1备份数据库(weblogic29)

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME =jytest)

      (ORACLE_HOME =/u01/app/oracle/product/10.2.0/db)

      (SID_NAME =jytest)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

 

在tnsnames.ora文件加入主数据库和备份数据库的服务名

jytest =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jytest)

    )

  )

 

jyrac1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =jytest)

    )

  )

完之后重启listener:

[oracle@weblogic28 ~]$ lsnrctl stop

[oracle@weblogic28 ~]$lsnrctl start

通过tnsping 测试tnsnames 是否正确有效:

C:\Documents and Settings\Administrator>tnsping jyrac1

 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 01-12月-

2012 21:29:27

 

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

 

已使用的参数文件:

C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

 

 

已使用 TNSNAMES 适配器来解析别名

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 10.138.130.29)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =jytest)))

OK (10 毫秒)

 

C:\Documents and Settings\Administrator>tnsping jytest

 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 01-12月-

2012 21:31:57

 

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

 

已使用的参数文件:

C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

 

 

已使用 TNSNAMES 适配器来解析别名

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 10.138.130.28)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =jytest)))

OK (0 毫秒)

 

 

二、Standby

数据库配置及相关操作

1、通过ORADIM 创建新的OracleService

2、创建密码文件,注意保持sys 密码与primary 数据库一致。

[oracle@weblogic29 ~]$orapwd file=/u01/app/oracle/product/10.2.0\db\dba\PWDjytest

.ora password=system entries=30

3、创建目录

[root@weblogic28 ~]# mkdir /u01/app/oracle /admin/jytest/adump

4、复制文件,不做过多描述

5、修改初始化参数文件

增加下列参数

db_unique_name=jyrac1

LOG_ARCHIVE_CONFIG='DG_CONFIG=(jytest,jyrac1)'

 

DB_FILE_NAME_CONVERT=/u01/app/oracle/oradata/jytest','/u01/app/oracle/oradata/jytest'

在备位置后面指定主数据库文件的路径名和文件名位置。这

个参数将主数据库的数据文件路径名转换成备数据文件路

径名。如果备数据库与主数据库处于同一系统上或如果数据

文件在备站点上的目录结构与主站点不同,则需要这个参

数。注意这个参数只是用于转换物理备数据库的路径名。这

个参数可以指定多对路径。(我这里主备数据库目录路径相同也可以不配置)

 

LOG_FILE_NAME_CONVERT=’/u01/app/oracle/oradata/jytest',' /u01/app/oracle/oradata/jytest'

在备位置后面指定主数据库联机重做日志文件的位置。这个

参数将主数据库日志文件的路径名转换成备数据库上的路

径名。如果备数据库与主数据库处于同一系统上或如果数据

文件在备站点上的目录结构与主站点不同,则需要这个参

数。这个参数可以指定多对路径(我这里主备数据库目录路径相同也可以不配置)

 

 

 

LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch/jyrac1 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jyrac1'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

#---下列参数用于角色切换

LOG_ARCHIVE_DEST_2='SERVICE=jytest LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jytest'

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

FAL_SERVER=jytest

FAL_CLIENT=jyrac1

STANDBY_FILE_MANAGEMENT=AUTO

注意同时修改*_dest 的路径。

通过该pfile 创建spfile

SQL> create spfile from pfile;

文件已创建。

6、启动standby 到mount

SQL> startup mount

ORACLE instance started.

 

Total System Global Area 6442450944 bytes

Fixed Size                  2030368 bytes

Variable Size            1090520288 bytes

Database Buffers         5335154688 bytes

Redo Buffers               14745600 bytes

Database mounted.

7、启动redo 应用

SQL>  alter database recover managed standby database disconnect from session;

 

Database altered.

8、查看同步情况

首先连接到primary 数据库

 

SQL> show parameter db_unique

 

NAME                                 TYPE        VALUE

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

db_unique_name                       string      jytest

 

SQL> alter system switch logfile;

 

System altered

 

SQL> select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

           129

 

连接到standby 数据库

SQL> show parameter db_unique

 

NAME                                 TYPE        VALUE

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

db_unique_name                       string      jyrac1

SQL> select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

           129

 

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

请登录后发表评论 登录
全部评论
系统架构师 Oracle ACE

注册时间:2011-10-12

  • 博文量
    716
  • 访问量
    6626241