Linux 下建立Oracle 10g DG和Broker配置

羽化殘虹發表於2015-10-30
Normal 0 7.8 磅 0 2 false false false <style. st1\:*{behavior.:url(#ieooui)="" }="" <="" style.="" <style.="" *="" definitions="" table.msonormaltable="" {mso-style-name:普通表格;="" mso-tstyle-rowband-size:0;="" mso-tstyle-colband-size:0;="" mso-style-noshow:yes;="" mso-style-parent:"";="" mso-padding-alt:0cm="" 5.4pt="" 0cm="" 5.4pt;="" mso-para-margin:0cm;="" mso-para-margin-bottom:.0001pt;="" mso-pagination:widow-orphan;="" font-size:10.0pt;="" font-family:"times="" new="" roman";="" mso-ansi-language:#0400;="" mso-fareast-language:#0400;="" mso-bidi-language:#0400;}="" table.msotablegrid="" {mso-style-name:網格型;="" border:solid="" black="" 1.0pt;="" mso-border-alt:solid="" .5pt;="" mso-border-insideh:.5pt="" solid="" black;="" mso-border-insidev:.5pt="" font-family:calibri;="" style.Linux 下建立Oracle 10g DGBroker配置


最近有空,參考了Oracle文件和三思同學的文件,用虛擬機器在RHEL4上面做了一下ORACLE 10G DGBroker,將做實驗步驟記錄下來,以備後查。

 

 

環境和基本配置如下:

 

配置項

主庫

備庫

伺服器

虛擬機器1

虛擬機器2

作業系統

Red Hat Enterprise 4

Red Hat Enterprise 4

Oracle軟體

Oracle 10.2.0.1

Oracle 10.2.0.1

IP

192.168.100.21

192.168.100.22

主機名

plindb

slindb

資料儲存

檔案系統

檔案系統

db_name

ordb

ordb

sid

ordb

ordb

db_unique_name

pordb

sordb

Service_name

pordb

sordb

 

實驗內容:

1.物理StandBy建立

2.DG幾種執行模式切換

3.主備庫切換

4.BROKER配置及應用測試

 

 

 

物理StandBy建立

一.在主庫上操作

1.將資料庫修改為強行記錄日誌

SQL> ALTER DATABASE FORCE LOGGING;

2.如果資料沒有執行在歸檔模式下,需將資料切換到歸檔模式

  SQL>alter system set LOG_ARCHIVE_DEST_1='LOCATION=/oracle/archp/';

SQL>shutdown immediate

  SQL>startup mount

  SQL>alter database archivelog;

  SQL>alter databse open;

 3.建立pfile

  SQL>create pfile=’/oracle/backup/ppfile.ora’;

修改ppfile為:

ordb.__db_cache_size=83886080

ordb.__java_pool_size=4194304

ordb.__large_pool_size=4194304

ordb.__shared_pool_size=71303168

ordb.__streams_pool_size=0

*.audit_file_dest='/oracle/admin/ordb/adump'

*.background_dump_dest='/oracle/admin/ordb/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/oracle/oradata/ORDB/controlfile/o1_mf_7fc3k0fr_.ctl'

*.core_dump_dest='/oracle/admin/ordb/cdump'

*.db_block_size=8192

*.db_create_file_dest='/oracle/oradata'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_file_name_convert='/oracle/oradata/sordb','/oracle/oradata/pordb'

*.db_name='ordb'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.db_unique_name='pordb'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ordbXDB)'

*.fal_server='sordb'

*.fal_client='pordb'

*.job_queue_processes=10

*.log_archive_config='DG_CONFIG=(pordb,sordb)'

*.log_archive_dest_1='LOCATION=/oracle/archp/'

*.log_archive_dest_2='SERVICE=sordb lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) db_unique_name=sordb'

log_archive_dest_state_1=ENABLE

log_archive_dest_state_2=ENABLE

*.log_file_name_convert='/oracle/oradata/sordb','/oracle/oradata/pordb'

*.open_cursors=150

*.pga_aggregate_target=16777216

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.standby_file_management=AUTO

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/oracle/admin/ordb/udump'

4.使用新的pfile 啟動資料庫並建立新的spfile,使用新的spfile啟動資料庫

  SQL> startup nomount pfile='/oracle/backup/ppfile.ora';

ORACLE instance started.

 

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

SQL> create spfile from pfile='/oracle/backup/ppfile.ora';

File created.

 

SQL> shutdown immediate

ORA-01507: database not mounted

 

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

5.建立監聽和網路服務名

 使用netca建立監聽

lsnrctl status|start|stop

[oracle@plindb admin]$ cat listener.ora

# listener.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

    )

    (SID_DESC=

        (SID_NAME=ordb)

        (GLOBAL_DBNAME=pordb_DGMGRL)

        (ORACLE_HOME=/oracle/product/10.2.0/db_1))

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

 使用netmgr建立網路服務名,服務名為pordb

Tnsping pordb

 

[oracle@plindb admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

PORDB=

 (DESCRIPTION=

  (ADDRESS_LIST=

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

  )

  (CONNECT_DATA=

   (SERVICE_NAME=pordb)

  )

)

 

SORDB=

 (DESCRIPTION=

  (ADDRESS_LIST=

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

  )

  (CONNECT_DATA=

   (SERVICE_NAME=sordb)

  )

)

6.修改資料的/etc/hosts檔案的

cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1       localhost.localdomain   localhost       plindb

192.168.100.21  plindb

192.168.100.22  slindb

7.使用rman備份控制檔案,資料檔案和歸檔日誌檔案

備份控制檔案:

[oracle@plindb backup]$ rman target /

 

Recovery Manager: Release 10.2.0.1.0 - Production on Wed Dec 7 03:14:15 2011

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

connected to target database: ORDB (DBID=588555936)

 

RMAN> backup format '/oracle/backup/bk_%U' current controlfile for standby;

 

Starting backup at 07-DEC-11

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=141 devtype=DISK

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including standby control file in backupset

channel ORA_DISK_1: starting piece 1 at 07-DEC-11

channel ORA_DISK_1: finished piece 1 at 07-DEC-11

piece handle=/oracle/backup/bk_0hmtj20r_1_1 tag=TAG20111207T031435 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 07-DEC-11

 

備份資料檔案和歸檔日誌檔案:

 

RMAN> backup format '/oracle/backup/backup_%U' database plus archivelog;

 

Starting backup at 07-DEC-11

current log archived

using channel ORA_DISK_1

channel ORA_DISK_1: starting archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=3 recid=2 stamp=768702894

input archive log thread=1 sequence=42 recid=40 stamp=769230736

input archive log thread=1 sequence=43 recid=41 stamp=769230886

channel ORA_DISK_1: starting piece 1 at 07-DEC-11

channel ORA_DISK_1: finished piece 1 at 07-DEC-11

piece handle=/oracle/backup/backup_0imtj216_1_1 tag=TAG20111207T031446 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:17

Finished backup at 07-DEC-11

 

Starting backup at 07-DEC-11

using channel ORA_DISK_1

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00001 name=/oracle/oradata/ORDB/datafile/o1_mf_system_7fc3j2qj_.dbf

input datafile fno=00003 name=/oracle/oradata/ORDB/datafile/o1_mf_sysaux_7fc3j2r4_.dbf

input datafile fno=00002 name=/oracle/oradata/ORDB/datafile/o1_mf_undotbs1_7fc3j2v5_.dbf

input datafile fno=00004 name=/oracle/oradata/ORDB/datafile/o1_mf_users_7fc3j2vs_.dbf

channel ORA_DISK_1: starting piece 1 at 07-DEC-11

channel ORA_DISK_1: finished piece 1 at 07-DEC-11

piece handle=/oracle/backup/backup_0jmtj21n_1_1 tag=TAG20111207T031503 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including current control file in backupset

including current SPFILE in backupset

channel ORA_DISK_1: starting piece 1 at 07-DEC-11

channel ORA_DISK_1: finished piece 1 at 07-DEC-11

piece handle=/oracle/backup/backup_0kmtj22q_1_1 tag=TAG20111207T031503 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 07-DEC-11

 

Starting backup at 07-DEC-11

current log archived

using channel ORA_DISK_1

channel ORA_DISK_1: starting archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=44 recid=42 stamp=769230941

channel ORA_DISK_1: starting piece 1 at 07-DEC-11

channel ORA_DISK_1: finished piece 1 at 07-DEC-11

piece handle=/oracle/backup/backup_0lmtj22t_1_1 tag=TAG20111207T031541 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 07-DEC-11

 

8.將備份檔案,pfile,密碼檔案拷貝到備庫的機器上,目錄路徑要與主庫上一致

[oracle@plindb backup]$ scp /oracle/backup/* slindb:/oracle/backup/

oracle@slindb's password:

backup_0imtj216_1_1                   100%  195MB   8.9MB/s   00:22

backup_0jmtj21n_1_1                   100%  549MB  10.2MB/s   00:54

backup_0kmtj22q_1_1                   100% 7040KB   6.9MB/s   00:01

backup_0lmtj22t_1_1                    100%   11KB  11.0KB/s   00:00

bk_0hmtj20r_1_1                       100% 7008KB   6.8MB/s   00:01

ppfile.ora                              100% 1427     1.4KB/s   00:00

scp $ORACLE_HOME/dbs/orapwordb slindb:/oracle/product/10.2.0.1/db_1/dbs

oracle@slindb's password:

orapwordb                   100%  1536   8.9MB/s   00:00

 

二.備庫上操作

1.    備庫上只安裝Oracle軟體

注:這裡測試是直接複製的虛擬機器修改的

2.    建立監聽和網路服務名

(與主庫步驟相同,不同的是機名和GLOBAL_DBNAME)

使用netca建立監聽

lsnrctl status|start|stop

[oracle@plindb admin]$ cat listener.ora

# listener.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

    )

    (SID_DESC=

        (SID_NAME=ordb)

        (GLOBAL_DBNAME=sordb_DGMGRL)

        (ORACLE_HOME=/oracle/product/10.2.0/db_1))

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

 使用netmgr建立網路服務名,服務名為sordb

Tnsping pordb

Tnsping sordb

 

[oracle@plindb admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

PORDB=

 (DESCRIPTION=

  (ADDRESS_LIST=

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

  )

  (CONNECT_DATA=

   (SERVICE_NAME=pordb)

  )

)

 

SORDB=

 (DESCRIPTION=

  (ADDRESS_LIST=

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

  )

  (CONNECT_DATA=

   (SERVICE_NAME=sordb)

  )

)

3. 修改資料的/etc/hosts檔案的

cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1       localhost.localdomain   localhost       plindb

192.168.100.21  plindb

192.168.100.22  slindb

 

4.重新命名從主庫機器上拷貝過來的pfile.oraspfile.ora,修改為

ordb.__db_cache_size=83886080

ordb.__java_pool_size=4194304

ordb.__large_pool_size=4194304

ordb.__shared_pool_size=71303168

ordb.__streams_pool_size=0

*.audit_file_dest='/oracle/admin/sordb/adump'

*.background_dump_dest='/oracle/admin/sordb/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/oracle/oradata/SORDB/controlfile/o1_mf_7fwtzvqw_.ctl'

*.core_dump_dest='/oracle/admin/sordb/cdump'

*.db_block_size=8192

*.db_create_file_dest='/oracle/oradata'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_file_name_convert='/oracle/oradata/pordb','/oracle/oradata/sordb'

*.db_name='ordb'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.db_unique_name='sordb'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ordbXDB)'

*.fal_server='pordb'

*.fal_client='sordb'

*.job_queue_processes=10

*.log_archive_config='DG_CONFIG=(pordb,sordb)'

*.log_archive_dest_1='LOCATION=/oracle/archp'

*.log_archive_dest_2='SERVICE=pordb lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) db_unique_name=pordb'

log_archive_dest_state_1=ENABLE

log_archive_dest_state_2=ENABLE

*.log_file_name_convert='/oracle/oradata/pordb','/oracle/oradata/sordb'

*.open_cursors=150

*.pga_aggregate_target=16777216

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.standby_file_management=AUTO

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/oracle/admin/sordb/udump'

 

5.根據pfile中的引數來建立需要的目錄

mkdir -p /oracle/admin/sordb/adump

mkdir -p /oracle/admin/sordb/bdump

mkdir -p /oracle/admin/sordb/cdump

mkdir -p /oracle/admin/sordb/udump

mkdir -p /oracle/admin/sordb/pfile

mkdir -p /oracle/admin/sordb/script

mkdir -p /oracle/archp

mkdir -p /oradata/backup

mkdir -p /oracle/flash_recovery_area

6.使用pfile將資料庫啟動到nomount狀態

SQL> startup nomount pfile='/oracle/backup/spfile.ora';

ORACLE instance started.

 

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              62916852 bytes

Database Buffers          100663296 bytes

Redo Buffers                2973696 bytes

7.確認主庫和備庫間的網路是否正常,在主庫和備庫上都做如下檢查

檢視監聽是否啟動,如果沒啟動就執行命令啟動

$ lsnrctl status

啟動命令

$ l snrctl start

檢視網路服務名能否連通

$ tnsping pordb

$ tnsping sordb

測試從備庫上能否通過網路連線到主庫的資料庫

sqlplus /nolog

connect sys/oracle@pordb as sysdba

8.使用 rman duplicate 建立備庫

[oracle@slindb bin]$ ./rman target sys/oracle@pordb auxiliary /

Recovery Manager: Release 10.2.0.1.0 - Production on Wed Dec 7 03:23:04 2011

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

connected to target database: ORDB (DBID=588555936)

connected to auxiliary database: ORDB (not mounted)

 

RMAN> duplicate target database for standby nofilenamecheck;

Starting Duplicate Db at 07-DEC-11

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=156 devtype=DISK

 

contents of Memory Script.:

{

   restore clone standby controlfile;

   sql clone 'alter database mount standby database';

}

executing Memory Script

 

Starting restore at 07-DEC-11

using channel ORA_AUX_DISK_1

 

channel ORA_AUX_DISK_1: starting datafile backupset restore

channel ORA_AUX_DISK_1: restoring control file

channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/bk_0hmtj20r_1_1

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/oracle/backup/bk_0hmtj20r_1_1 tag=TAG20111207T031435

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03

output filename=/oracle/oradata/SORDB/controlfile/o1_mf_7fwtzvqw_.ctl

Finished restore at 07-DEC-11

 

sql statement: alter database mount standby database

released channel: ORA_AUX_DISK_1

 

contents of Memory Script.:

{

   set newname for tempfile  1 to

 "/oracle/oradata/ORDB/datafile/o1_mf_temp_7fc3kjhr_.tmp";

   switch clone tempfile all;

   set newname for datafile  1 to

 "/oracle/oradata/ORDB/datafile/o1_mf_system_7fc3j2qj_.dbf";

   set newname for datafile  2 to

 "/oracle/oradata/ORDB/datafile/o1_mf_undotbs1_7fc3j2v5_.dbf";

   set newname for datafile  3 to

 "/oracle/oradata/ORDB/datafile/o1_mf_sysaux_7fc3j2r4_.dbf";

   set newname for datafile  4 to

 "/oracle/oradata/ORDB/datafile/o1_mf_users_7fc3j2vs_.dbf";

   restore

   check readonly

   clone database

   ;

}

executing Memory Script

executing command: SET NEWNAME

renamed temporary file 1 to /oracle/oradata/ORDB/datafile/o1_mf_temp_7fc3kjhr_.tmp in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 07-DEC-11

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=156 devtype=DISK

channel ORA_AUX_DISK_1: starting datafile backupset restore

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /oracle/oradata/ORDB/datafile/o1_mf_system_7fc3j2qj_.dbf

restoring datafile 00002 to /oracle/oradata/ORDB/datafile/o1_mf_undotbs1_7fc3j2v5_.dbf

restoring datafile 00003 to /oracle/oradata/ORDB/datafile/o1_mf_sysaux_7fc3j2r4_.dbf

restoring datafile 00004 to /oracle/oradata/ORDB/datafile/o1_mf_users_7fc3j2vs_.dbf

channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/backup_0jmtj21n_1_1

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/oracle/backup/backup_0jmtj21n_1_1 tag=TAG20111207T031503

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:35

Finished restore at 07-DEC-11

contents of Memory Script.:

{

   switch clone datafile all;

}

executing Memory Script

datafile 1 switched to datafile copy

input datafile copy recid=8 stamp=769231527 filename=/oracle/oradata/SORDB/datafile/o1_mf_system_7fwv04cx_.dbf

datafile 2 switched to datafile copy

input datafile copy recid=9 stamp=769231527 filename=/oracle/oradata/SORDB/datafile/o1_mf_undotbs1_7fwv04fq_.dbf

datafile 3 switched to datafile copy

input datafile copy recid=10 stamp=769231527 filename=/oracle/oradata/SORDB/datafile/o1_mf_sysaux_7fwv04do_.dbf

datafile 4 switched to datafile copy

input datafile copy recid=11 stamp=769231527 filename=/oracle/oradata/SORDB/datafile/o1_mf_users_7fwv04go_.dbf

Finished Duplicate Db at 07-DEC-11

 

從輸出資訊可以看到,備庫實際已經啟動到mount狀態。

注:此處有一個問題,如果你的資料庫檔案是使用OMF管理的,那麼使用rman建立的備庫的資料檔名已經與主庫的檔名不一樣了,此時需將引數檔案裡的控制檔案的路徑和名稱修改為備庫上的實際路徑和名稱,否則啟動資料庫會報錯。

9.檢視和應用歸檔日誌

此時可以檢視得到主庫的歸檔日誌已經通過rfs程式傳輸到備庫:

ls –al /oracle/archp/

SQL> select process from v$managed_standby;

 

PROCESS

---------

ARCH

ARCH

RFS

RFS

應用從主庫傳輸過來的歸檔日誌:

SQL> recover managed standby database disconnect from session;

Media recovery complete.

此時檢視歸檔日誌應用狀態,已經變為已應用:

SQL> select process from v$managed_standby;

PROCESS

---------

ARCH

ARCH

MRP0

RFS

RFS

是不是發現多了一個程式:MRP0 這個就是歸檔日誌恢復程式

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TIM NEXT_TIME APP

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

        3  07-DEC-11 07-DEC-11 YES

       

        48 07-DEC-11 07-DEC-11 YES

        49 07-DEC-11 07-DEC-11 YES

 

取消歸檔日誌應用:

SQL> recover managed standby database cancel;

Media recovery complete.

 

10.驗證測試

在主庫上插入資料,並切換日誌

SQL> conn scott/tiger

Connected.

SQL> select * from test;

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

 

9 rows selected.

SQL> insert into test values (1010,' chengcheng ');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from scott.test;

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

      1010 zhengheng

     

10rows selected.

SQL> conn / as sysdba

檢視當前日誌資料:

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 

 SEQUENCE# FIRST_TIM NEXT_TIME APP

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

         3 27-OCT-11 02-NOV-11 YES

        

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        52 13-NOV-11 13-NOV-11 NO

 

50 rows selected.

 

SQL> alter system switch logfile;

 

System altered.

切換日誌後,再次檢視當前日誌資料:

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 

 SEQUENCE# FIRST_TIM NEXT_TIME APP

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

         3 27-OCT-11 02-NOV-11 YES

        

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        52 13-NOV-11 13-NOV-11 NO

        53 13-NOV-11 13-NOV-11 NO

 

 

在備庫上檢視日誌應用:

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

SEQUENCE# FIRST_TIM NEXT_TIME APP

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

        16 03-NOV-11 04-NOV-11 NO

       

        49 13-NOV-11 13-NOV-11 YES

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 NO

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 NO

        52 13-NOV-11 13-NOV-11 YES

        53 13-NOV-11 13-NOV-11 YES

       

SQL> alter database recover managed standby database cancel;

Database altered.

 

SQL> alter database open;

Database altered.

 

SQL> select * from scott.test;

 

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 weiqi

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

      1010 zhengheng

    

102 rows selected.

能查詢到剛剛插入的資料,在備庫上被成功應用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DG模式切換

Oracle  DG支援執行三種模式:

最大保護                 maximize protection

最大可用                 maximize availability

最佳效能                 maximize performance

physical standby建立後,預設為最佳效能模式:

 

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

如果需要切換到最大可用或者最大保護模式,需要做以下改動:

1.需要對一些引數進行修改

2.需要確定standby logfile是否新增,如沒有需新增standby logfile,新增的數量為:(redo log數量+1X instance數量,最佳效能模式下使用lgwr同步傳送日誌的話,也必須使用standby logfile,如果使用arch傳送日誌就不需要。

新增standby logfile

主庫:

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

備庫:

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

SQL>alter database add standby logfile thread 1 size 50m;

 

檢視新增的standby logfile

SQL>select * from v$logfile;

SQL>select * from v$standby_log;

 

刪除standby logfile

SQL>alter database drop standby logfile group 8;

 

切換命令:

SQL>alter database set standby database to maximize protection;

SQL>alter database set standby database to maximize availability;

SQL>alter database set standby database to maximize performance;

 

從最佳效能模式切換到最在可用:

檢視當前主庫和備庫的保護模式和保護級別

主庫:

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

 

備庫:

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

 

將主庫啟動到mount狀,然後修改主庫相關引數:

SQL>Shutdown immediate

SQL>Startup mount

SQL>Alter system set log_archive_dest_2='SERVICE=sordb lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) db_unique_name=sordb'

SQL>alter database set standby database to maximize availability;

SQL>alter database open;

 

再次檢視主庫和備庫的保護模式和保護級別:

主庫:

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

備庫:

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

切換成功:可以看到保護模式和保護級別都是變成最大可用模式了。

 

 

 

 

 

主庫和備庫切換(Switchover)

1.在主庫上操作

檢視資料庫角色和切換狀態:

SQL> select database_role,switchover_status from v$database;

 

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY         TO STANDBY

如果狀態為:to standby 表示主庫當前支援切換為standby,使用下面語句進行切換:

alter database commit to switchover to physical standby

 

SQL> select database_role,switchover_status from v$database;

 

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          SESSIONS ACTIVE

如果狀態為:session active表示當前有活動的會話,需先將活動的會話kill掉或者使用下面語句切換:

alter database commit to switchover to physical standby with session shutdown;

 

重啟資料庫到moumt

 

SQL> shutdown immediate

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size             109053520 bytes

Database Buffers          171966464 bytes

Redo Buffers                2973696 bytes

Database mounted.

再次檢視切換狀態,狀態變為to primary

SQL> select switchover_status from v$database;

 

SWITCHOVER_STATUS

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

TO PRIMARY

2.備庫上操作

檢視切換狀態:

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

正常情況為to primary,如果狀態為swithover pending

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

SWITCHOVER PENDING

則需要先進行一下恢復再切換:

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

Database altered

再次檢視切換狀態,狀態變為to primary

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

檢視資料庫角色和切換狀態:

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PHYSICAL STANDBY TO PRIMARY

將備庫切換成主庫:

Database altered.

SQL> alter database commit to switchover to primary;

Database altered.

重啟資料庫:

SQL> shutdown immediate

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              96470608 bytes

Database Buffers          184549376 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

 

再次檢視資料庫角色和切換狀態:

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          SESSIONS ACTIVE

資料庫角色和切換狀態都發生改變,分別為:primary,sessions active

3.在新的庫(原主庫)應用恢復歸檔日誌

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

Database altered

4.驗證

在新的主庫上插入資料,並切換日誌

SQL> conn scott/tiger

Connected.

SQL> select * from test;

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 weiqi

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

      1010 zhengheng

      1011 zhangrang

11 rows selected.

SQL> insert into test values (1012,'wangfie');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from scott.test;

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 weiqi

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

      1010 zhengheng

      1011 zhangrang

        ID NAME

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

      1012 wangfie

12 rows selected.

SQL> conn / as sysdba

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 

 SEQUENCE# FIRST_TIM NEXT_TIME APP

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

         3 27-OCT-11 02-NOV-11 YES

         ….

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        52 13-NOV-11 13-NOV-11 NO

 

50 rows selected.

 

SQL> alter system switch logfile;

 

System altered.

 

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 

 SEQUENCE# FIRST_TIM NEXT_TIME APP

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

         3 27-OCT-11 02-NOV-11 YES

        

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        52 13-NOV-11 13-NOV-11 NO

        53 13-NOV-11 13-NOV-11 NO

 

 

在新的備庫上檢視日誌應用:

 

SEQUENCE# FIRST_TIM NEXT_TIME APP

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

         3 03-NOV-11 04-NOV-11 NO

       

        49 13-NOV-11 13-NOV-11 YES

        49 13-NOV-11 13-NOV-11 YES

        50 13-NOV-11 13-NOV-11 NO

        50 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 YES

        51 13-NOV-11 13-NOV-11 NO

        52 13-NOV-11 13-NOV-11 YES

        53 13-NOV-11 13-NOV-11 YES

       

SQL> alter database recover managed standby database cancel;

Database altered.

 

SQL> alter database open;

Database altered.

 

SQL> select * from scott.test;

        ID NAME

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

      1001 zhangyang

      1002 zhangshan

      1003 lishi

      1004 wangwu

      1005 zhaoliu

      1006 weiqi

      1006 chengjiu

      1008 zhengwu

      1009 chengcheng

      1010 zhengheng

      1011 zhangrang

      1012 wangfieqi

 

12 rows selected.

能查詢到剛剛插入的資料,主備庫之間的switchover方式切換成功。

 

 

 

 

 

 

 

DG broker配置及應用測試

 

一.配置broker的先決條件

1.資料庫版本:主庫和備庫版本必須10g r2 或者更高,企業版

2.引數檔案:必須使用spfile

SQL> show parameter spfile

 

NAME         TYPE        VALUE

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

spfile         string      /oracle/product/10.2.0/db_1/db s/spfileordb.ora

                                                

3.確定主備庫的compatibe值相同

 

4.主備庫dg_broker_start的值必須為:true

SQL> alter system set dg_broker_start=true scope=both;

System altered.

SQL> show parameter dg_broker

NAME                    TYPE        VALUE

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

dg_broker_config_file1    string      /oracle/product/10.2.0/db_1/db s/dr1pordb.dat

dg_broker_config_file2    string      /oracle/product/10.2.0/db_1/db s/dr2pordb.dat

dg_broker_start           boolean     TRUE

 

5.必須在監聽裡設定global_name的值

主庫:

SID_LIST_LISTENER=

    (SID_LIST=

      (SID_DESC=

        (SID_NAME=ordb)

        (GLOBAL_DBNAME=pordb_DGMGRL)

        (ORACLE_HOME=/oracle/product/10.2.0/db_1)))

 

備庫:

SID_LIST_LISTENER=

    (SID_LIST=

      (SID_DESC=

        (SID_NAME=ordb)

        (GLOBAL_DBNAME=sordb_DGMGRL)

        (ORACLE_HOME=/oracle/product/10.2.0/db_1)))

6.在主備庫開啟閃回資料庫功能

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE FLASHBACK ON;

SQL>ALTER DATABASE OPEN;

 

 

 

注:如果是rac模式,需要在每個節點上設定dg_broker_config_filen引數

   ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1 = '+DG/DIRECTORY/DR1.DAT' SCOPE=BOTH;

    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2 = '+DG/DIRECTORY/DR2.DAT' SCOPE=BOTH;

    如果使用了非預設埠(1521),必須設定local_lisener以便所有成員都能訪問

 

  二.broker配置

 

在從庫上配置

1.執行命令, 連線到主庫:

  dgmgrl

connect sys/oracle@pordb

2.建立broker配置

[oracle@slindb archp]$ dgmgrl

DGMGRL for Linux: Version 10.2.0.1.0 - Production

 

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

 

Welcome to DGMGRL, type "help" for information.

DGMGRL> connect sys/oracle@pordb

Connected.

DGMGRL> create configuration 'pordbsoulution' as primary database is 'pordb' connect identifier is 'pordb';

Configuration "pordbsoulution" created with primary database "pordb"

DGMGRL> show configuration

 

Configuration

  Name:                pordbsoulution

  Enabled:             NO

  Protection Mode:     MaxAvailability

  Fast-Start Failover: DISABLED

  Databases:

    pordb - Primary database

 

Current status for "pordbsoulution":

DISABLED

 

新增備庫到broker配置:

DGMGRL> add database 'sordb' as connect identifier is sordb maintained as physical;

Database "sordb" added

DGMGRL> show configuration

 

Configuration

  Name:                pordbsoulution

  Enabled:             NO

  Protection Mode:     MaxAvailability

  Fast-Start Failover: DISABLED

  Databases:

    pordb - Primary database

    sordb - Physical standby database

 

Current status for "pordbsoulution":

DISABLED

 

 

 

3.使broker配置生效

 DGMGRL> enable configuration;

Enabled.

DGMGRL> show configuration

 

Configuration

  Name:                pordbsoulution

  Enabled:             YES

  Protection Mode:     MaxAvailability

  Fast-Start Failover: DISABLED

  Databases:

    pordb - Primary database

    sordb - Physical standby database

 

Current status for "pordbsoulution":

SUCCESS

 

可以看到當前狀態改變了

 

設定資料庫狀態模式:

設定 FastStartFailoverTarget .

DGMGRL> edit database 'pordb' set property 'logxptmode'='sync';

Property "logxptmode" updated

DGMGRL> edit database 'sordb' set property 'logxptmode'='sync';

Property "logxptmode" updated

 

使 Fast-Start Failover 生效

DGMGRL> ENABLE FAST_START FAILOVER;

Enabled.

 

開啟 Observer

DGMGRL> start observer

注:執行開啟 Observer後,介面不會自動退出,如果要執行其它dgmgrl命令需重新開一個視窗

 

 

重新開一個視窗,進入dgmgrl,檢視fast-start failover 配置

DGMGRL> show configuration;

DGMGRL> show configuration verbose;

 

4.驗證fast-start failover 配置

 

主庫:

SQL> col FS_FAILOVER_OBSERVER_HOST for a30

SQL>select fs_failover_observer_present,fs_failover_observer_host,fs_failover_threshold

from v$database;

FS_FAIL FS_FAILOVER_OBSERVER_HOST      FS_FAILOVER_THRESHOLD

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

YES     slindb                                             30

 

備庫:

SQL> col FS_FAILOVER_OBSERVER_HOST for a30

SQL>select fs_failover_observer_present,fs_failover_observer_host,fs_failover_threshold

from v$database;

 

FS_FAIL FS_FAILOVER_OBSERVER_HOST      FS_FAILOVER_THRESHOLD

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

YES     slindb                                            30

 

修改fsfailoverthreshold值為什麼120,預設為30

DGMGRL> edit configuration set property faststartfailoverthreshold=120;

Property "faststartfailoverthreshold" updated

 

測試broker

 

 檢視主庫和備庫配置資訊和狀態:

DGMGRL> show database verbose pordb;

 

Database

  Name:            pordb

  Role:            PRIMARY

  Enabled:         YES

  Intended State:  ONLINE

  Instance(s):

    ordb

 

  Properties:

    InitialConnectIdentifier        = 'pordb'

    LogXptMode                      = 'sync'

    Dependency                      = ''

    DelayMins                       = '0'

    Binding                         = 'OPTIONAL'

    MaxFailure                      = '0'

    MaxConnections                  = '1'

    ReopenSecs                      = '300'

    NetTimeout                      = '180'

    LogShipping                     = 'ON'

    PreferredApplyInstance          = ''

    ApplyInstanceTimeout            = '0'

    ApplyParallel                   = 'AUTO'

    StandbyFileManagement           = 'AUTO'

    ArchiveLagTarget                = '0'

    LogArchiveMaxProcesses          = '2'

    LogArchiveMinSucceedDest        = '1'

    DbFileNameConvert       = '/oracle/oradata/sordb, /oracle/oradata/pordb'

    LogFileNameConvert      = '/oracle/oradata/sordb, /oracle/oradata/pordb'

    FastStartFailoverTarget         = 'sordb'

    StatusReport                    = '(monitor)'

    InconsistentProperties          = '(monitor)'

    InconsistentLogXptProps         = '(monitor)'

    SendQEntries                    = '(monitor)'

    LogXptStatus                    = '(monitor)'

    RecvQEntries                    = '(monitor)'

    HostName                        = 'plindb'

    SidName                         = 'ordb'

    LocalListenerAddress            = '(ADDRESS=(PROTOCOL=tcp)(HOST=plindb)(PORT=1521))'

    StandbyArchiveLocation          = '/oracle/archp/'

    AlternateLocation               = ''

    LogArchiveTrace                 = '0'

    LogArchiveFormat                = '%t_%s_%r.dbf'

    LatestLog                       = '(monitor)'

    TopWaitEvents                   = '(monitor)'

 

Current status for "pordb":

SUCCESS

 

DGMGRL> show database verbose sordb;   

 

Database

  Name:            sordb

  Role:            PHYSICAL STANDBY

  Enabled:         YES

  Intended State:  ONLINE

  Instance(s):

    ordb

 

  Properties:

    InitialConnectIdentifier        = 'sordb'

    LogXptMode                      = 'sync'

    Dependency                      = ''

    DelayMins                       = '0'

    Binding                         = 'OPTIONAL'

    MaxFailure                      = '0'

    MaxConnections                  = '1'

    ReopenSecs                      = '300'

    NetTimeout                      = '180'

    LogShipping                     = 'ON'

    PreferredApplyInstance          = ''

    ApplyInstanceTimeout            = '0'

    ApplyParallel                   = 'AUTO'

    StandbyFileManagement           = 'AUTO'

    ArchiveLagTarget                = '0'

    LogArchiveMaxProcesses          = '2'

    LogArchiveMinSucceedDest        = '1'

    DbFileNameConvert             = '/oracle/oradata/pordb, /oracle/oradata/sordb'

    LogFileNameConvert       = '/oracle/oradata/pordb, /oracle/oradata/sordb'

    FastStartFailoverTarget         = 'pordb'

    StatusReport                    = '(monitor)'

    InconsistentProperties          = '(monitor)'

    InconsistentLogXptProps         = '(monitor)'

    SendQEntries                    = '(monitor)'

    LogXptStatus                    = '(monitor)'

    RecvQEntries                    = '(monitor)'

    HostName                        = 'slindb'

    SidName                         = 'ordb'

    LocalListenerAddress            = '(ADDRESS=(PROTOCOL=tcp)(HOST=slindb)(PORT=1521))'

    StandbyArchiveLocation          = '/oracle/archp/'

    AlternateLocation               = ''

    LogArchiveTrace                 = '0'

    LogArchiveFormat                = '%t_%s_%r.dbf'

    LatestLog                       = '(monitor)'

    TopWaitEvents                   = '(monitor)'

 

Current status for "sordb":

SUCCESS

三.驗證和測試Broker

1.主備切換測試:switchover

 

檢視主庫和備庫狀態和角色

主庫:

SQL> select database_role,switchover_status from v$database;

 

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          SESSIONS ACTIVE

 

備庫:

SQL> select database_role,switchover_status from v$database;

 

DATABASE_ROLE    SWITCHOVER_STATUS

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

PHYSICAL STANDBY SESSIONS ACTIVE

 

[oracle@slindb ~]$ dgmgrl

DGMGRL for Linux: Version 10.2.0.1.0 - Production

 

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

 

Welcome to DGMGRL, type "help" for information.

DGMGRL>

 

DGMGRL> connect sys/oracle@pordb

Connected.

DGMGRL> show configuration

 

Configuration

  Name:                pordbsoulution

  Enabled:             YES

  Protection Mode:     MaxAvailability

  Fast-Start Failover: ENABLED

  Databases:

    pordb - Primary database

    sordb - Physical standby database

          - Fast-Start Failover target

 

Current status for "pordbsoulution":

SUCCESS

 

將主庫切換到sordb上,切換時同時觀察主庫,務庫,dgmgrl的告警日誌資訊:

tail -f /oracle/admin/pordb/bdump/alter*.log

tail -f /oracle/admin/sordb/bdump/alter*.log

tail -f /oracle/admin/sordb/bdump/dr*.log

 

形如切換:

DGMGRL> switchover to sordb;

Performing switchover NOW, please wait...

Operation requires shutdown of instance "ordb" on database "pordb"

Shutting down instance "ordb"...

ORA-01109: database not open

 

Database dismounted.

ORACLE instance shut down.

Operation requires shutdown of instance "ordb" on database "sordb"

Shutting down instance "ordb"...

ORA-01109: database not open

 

Database dismounted.

ORACLE instance shut down.

Operation requires startup of instance "ordb" on database "pordb"

Starting instance "ordb"...

ORACLE instance started.

Database mounted.

Operation requires startup of instance "ordb" on database "sordb"

Starting instance "ordb"...

ORACLE instance started.

Database mounted.

Switchover succeeded, new primary is "sordb"

 

切換成功後,檢視新的主庫和備庫的狀態和角色:

SQL> select database_role,switchover_status from v$database;

SQL> select status from v$instance;

DGMGRL> show configuration;

 

Configuration

  Name:                pordbsoulution

  Enabled:             YES

  Protection Mode:     MaxAvailability

  Fast-Start Failover: ENABLED

  Databases:

    pordb - Primary database

    sordb - Physical standby database

          - Fast-Start Failover target

 

Current status for "pordbsoulution":

SUCCESS

 

2.failover測試

手動測試:

DGMGRL> failover to sordb;

Performing failover NOW. Please wait...

Operation requires shutdown of instance "sordb " on database

"sordb".

Shutting down instance "sordb"...

database not mounted

ORACLE instance shut down.

Operation requires startup of instance "pdb" on database "sordb".

Starting instance "sordb"...

ORACLE instance started.

Database mounted.

Failover succeeded. New primary is "sordb"

切換成功後,主庫自動變為sordb

 

自動測試:

將主庫shutdown abort

SQL> shutdown abort

ORACLE instance shut down.

 

此時在observer控制檯上看到:

DGMGRL> start observer

Observer started

 

22:26:38.10  Friday, December 09, 2011

Initiating fast-start failover to database "sordb"...

Performing failover NOW, please wait...

Failover succeeded, new primary is "sordb"

22:26:52.27  Friday, December 09, 2011

 

表示在主庫pordb出現故障時,自動切換,新的主庫為sordb

檢視failover後的新主庫sordb角色和狀態:

SQL> select database_role,switchover_status from v$database;

 

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          SESSIONS ACTIVE

 

SQL> select status from v$instance;

 

STATUS

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

OPEN

切換成功。

 

如果此時再將pordb啟動,啟動後會自動轉化為備庫:

此時在observer控制檯上看到:

22:31:04.46  Friday, December 09, 2011

Initiating reinstatement for database "pordb"...

Reinstating database "pordb", please wait...

Operation requires shutdown of instance "ordb" on database "pordb"

Shutting down instance "ordb"...

ORA-01109: database not open

 

Database dismounted.

ORACLE instance shut down.

Operation requires startup of instance "ordb" on database "pordb"

Starting instance "ordb"...

ORACLE instance started.

Database mounted.

Continuing to reinstate database "pordb" ...

Reinstatement of database "pordb" succeeded

22:31:59.61  Friday, December 09, 2011

 

 

檢視pordb角色和狀態:

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PHYSICAL STANDBY SESSIONS ACTIVE

 

SQL> select status from v$instance;

STATUS

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

MOUNTED

 

檢視sordb角色和狀態:

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          SESSIONS ACTIVE

 

SQL> select status from v$instance;

STATUS

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

OPEN

 

檢視主庫和備庫歸檔日誌及應用資訊:

select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 

總結:在實驗中還是遇到一些問題,不過最後都一一的順利解決,最容易遇到的以下問題:

1. ORA-01031: insufficient privileges

PING[ARC0]: Heartbeat failed to connect to standby 'sordb'. Error is 1031.

 

這各情況有兩個可能,一個是密碼檔案沒有拷到備庫上,另一個原因是TNS設定不正確或者監聽有問題,重新設定這兩個地方就可以解決。

2.備庫接收不到備庫的日誌

這個主要還是需要看告警日誌,主要原因還是網路和許可權的問題,當然也有可能是由其它原因導致網路和許可權問題,比如備庫的環境變數設定,我就在實驗時不小心備庫sid設定的問題引起許可權問題,導致備庫接收不到日誌

3.     資料庫檔案是使用OMF管理的,那麼使用rman建立的備庫的資料檔名已經與主庫的檔名不一樣了,此       時需將引數檔案裡的控制檔案的路徑和名稱修改為備庫上的實際路徑和名稱,否則啟動資料庫會報錯。

    

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26175573/viewspace-1818896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章