oracle10g data guard建立物理standby資料庫的例子

eric0435發表於2012-12-03

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部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-750472/,如需轉載,請註明出處,否則將追究法律責任。

相關文章