Oralce10g data guard配置

 Oralce10g data guard配置

 

  具體步驟如下:

    一、主庫操作

    1、修改主庫屬性:

sql> alter database force logging;
Database altered.
##查看狀態
sql> select FORCE_LOGGING from v$database;
FOR
---
YES

    2、修改數據庫爲歸檔模式:

sql> alter system set log_archive_dest_1='LOCATION=/arch1/' scope=both;
system altered.
sql> shutdown immediate;
Database closed.
Database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
Total system Global Area  167772160 bytes
Fixed Size                  1218292 bytes
Variable Size              79694092 bytes
Database Buffers           79691776 bytes
Redo Buffers                7168000 bytes
Database mounted.

sql> alter database archivelog;
Database altered.
sql> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /arch1/
Oldest online log sequence     1
Next log sequence to archive   2
Current log sequence           2
sql> alter database open;
Database altered.

 

3、添加standby logfile(也可以不加)

    爲主數據庫添加"備用聯機日誌文件",這裏要保證備日誌文件與主庫聯機日誌文件相同大小。

    添加備用日誌文件是規則:備用日誌最少應該比redo log 多一個。推薦的備重做日誌數依賴於主數據庫上的線程數。

    (每線程日誌文件最大數目 + 1 ) * 線程數

sql> select GROUP#,MEMBERS,BYTES/1024/1024 from v$log;
    GROUP#    MEMBERS BYTES/1024/1024
---------- ---------- ---------------
         1          1              50
         2          1              50
         3          1              50
sql> select GROUP#,MEMBER from v$logfile;
     GROUP# MEMBER
---------- ----------------------------------------
         3 /oracle/oradata/orcl/redo03.log
         2 /oracle/oradata/orcl/redo02.log
         1 /oracle/oradata/orcl/redo01.log
sql> alter database add standby logfile
  2          group 4 ('/oracle/oradata/orclstd_redo04a.log','/oracle/oradata/orcl/std_redo04b.log') size 50m,
  3          group 5 ('/oracle/oradata/orcl/std_redo05a.log','/oracle/oradata/orcl/std_redo05b.log') size 50m,
  4          group 6 ('/oracle/oradata/orcl/std_redo06a.log','/oracle/oradata/orcl/std_redo06b.log') size 50m,
  5          group 7 ('/oracle/oradata/orcl/std_redo07a.log','/oracle/oradata/orcl/std_redo08b.dbf') size 50m;
Database altered.

    4、修改主庫參數文件:

sql> create pfile='/oracle/orcl.ora' from spfile;
File created.
orcl.__db_cache_size=79691776
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=71303168
orcl.__streams_pool_size=0
*.audit_file_dest='/oracle/admin/orcl/adump'
*.background_dump_dest='/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl','/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.DB_UNIQUE_NAME='orclpri'    ##必須 定義每個數據庫的唯一標識
*.log_archive_config='DG_CONFIG=(orclpri,orclstandby)'     ###必須
*.log_archive_dest_1='LOCATION=/arch1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)' DB_UNIQUE_NAME='orclpri'         ###必須  本地的歸檔路徑
*.LOG_ARCHIVE_DEST_2='SERVICE=orclstandby arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstandby'      ###必須(遠程服務器端的歸檔日誌

5、用pfile啓動,再重新創建spfile.

sql> shutdown immediate;
Database closed.
Database dismounted.
oracle instance shut down.
sql> startup pfile='/oracle/orcl.ora'
oracle instance started.
Total system Global Area  167772160 bytes
Fixed Size                  1218292 bytes
Variable Size              79694092 bytes
Database Buffers           79691776 bytes
Redo Buffers                7168000 bytes
Database mounted.
Database opened.
sql>
sql> create spfile from pfile='/oracle/orcl.ora';
File created

    6、在主庫創建密碼文件、以及控制文件。

[oracle@node2 oracle]$ orapwd file='/oracle/product/10.2.0/db_1/dbs/orapworcl.ora' password=oracle entries=10
sql> ALTER DATABASE CREATE STANDBY CONTROLFILE AS  '/oracle/oradata/orcl/standby.ctl';
Database altered.

    7、TNS信息如下:

主庫
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.239)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
orclpri =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.239)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
orclstandby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.211)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
監聽信息如下
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SERVICE_NAME=orclpri)
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
        (SID_NAME=ORCL)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = tcp)(HOST = localhost.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

    8、把數據庫scp到備庫相應的目錄(包括密碼文件、standby controlfile)

  二備機操作

    1、備份的參數文件內容

orcl.__db_cache_size=79691776
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=71303168
orcl.__streams_pool_size=0
*.audit_file_dest='/oracle/admin/orcl/adump'
*.background_dump_dest='/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl','/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.DB_UNIQUE_NAME='orclstandby'    ##必須 定義每個數據庫的唯一標識
*.log_archive_config='DG_CONFIG=(orclpri,orclstandby)'     ###必須
*.log_archive_dest_1='LOCATION=/arch1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)' DB_UNIQUE_NAME='orclstandby'         ###必須  本地的歸檔路徑
*.LOG_ARCHIVE_DEST_2='SERVICE=orclpri arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclpri'      ###必須(遠程服務器端的歸檔日誌)
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER=orclstandby       ### 定義FAL服務器的Oracle Net服務的名稱
*.FAL_CLIENT=orclpri   ### 定義備數據庫的Oracle Net服務名     (這兩個參數在主庫可有可無,但備庫必須有。ORACLE 老外工程師說這個必須有^_^)  
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/oracle/admin/orcl/udump'
*.STANDBY_FILE_MANAGEMENT=AUTO

    2、修改上面參數文件裏的

*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl','/oracle/oradata/orcl/control03.ctl'
爲:
*.control_files='/oracle/oradata/orcl/standby.ctl' ##在主機上生成的那個控制文件,也可以多放幾份

3、TNS信息如下:

備庫
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.239)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
orclpri =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.239)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
orclstandby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = 172.16.37.211)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
監聽信息如下
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SERVICE_NAME=orclstandby)
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
        (SID_NAME=ORCL)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = tcp)(HOST = localhost.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

    4、用創建的參數文件啓動數據庫到nomount

sql> startup pfile='/oracle/orclstandby.ora' nomount;
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
sql> ALTER DATABASE MOUNT STANDBY DATABASE;
Database altered.

5、修改備庫處於應用歸檔狀態

sql> alter database recover managed standby database disconnect from session;
Database altered.

    如果主庫從不過來歸檔,可以通過在主庫側手工修改參數如下:

ALTER system SET log_archive_dest_state_2='DEFER' SCOPE=MEMORY;
ALTER system SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY;

    7、測試

    通過在主庫執行alter system switch logfile;切換日誌可以觀察到備庫會自動應用通過主庫傳過來的日誌。

    三、切換測試

    1、在主庫端

select switchover_stats from v$database;

    如果是to standby  表可以正常切換。

    直接執行

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

    否則執行:

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
shutdown immediate;
startup nomount;
alter database mount standby database;

    如果是to_primary  表可以正常切換。

    2、在備庫

    在備庫

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    執行:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

    否則執行:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
shutdown immediate;
startup;

    然後觀察主備庫日誌,如果正常的話會看到備庫會自動應用日誌。

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章