oracle雙機熱備


轉載:https://www.cnblogs.com/ajwen/p/3582363.html

假定主庫與備用庫不在同一個主機上,目錄結構相同,並且配置一個自管理備用庫(managed standby database):
        主庫        備庫
主機IP        192.168.1.20        192.168.1.30
主機名        PrimDB        StbyDB
SID        Orcl        Orcl
數據庫服務名        Orcl        Orcl
一 創建一個主庫的數據文件備份:用冷備份方式,備份到e:\shared\back
二 創建備用庫的控制文件:冷備份之后,打開主庫
SQL> connect internal/oracle as sysdba;
SQL>startup pfile=d:\oracle\admin\orcl\init.ora;
SQL>alter database create standby controlfile as ‘e:\shared\back\stby_ctl.ctl’;
三 通過網絡復制備份的數據文件和備用控制文件到備庫主機
四 配置主庫的tnsnames.ora文件,添加備庫別名為stby1,即下面內容:
stby1=(description=
                (address=
                  (protocol=tcp)
                  (port=1523)
                  (host=192.168.1.30))
                (connect_data=
                  (SID=orcl)))
五 配置備用庫的listener.ora文件,添加監聽服務standby_listener,在相應的節里添加有關的內容。如果原文件內已有,則修改之。
standby_listener節:
(address_list=
                  (address=
                        (protocol=tcp)
                        (port=1523)
                        (host=192.168.1.30)
                 ) )
SID_list_standby_listener節:
                (sid_list=
                  (sid_desc=
                        (sid_name=orcl)
                        (oracle_home=d:\oracle\ora81)
                ) )
這個文件中只能有這兩節,不能有多個組,雖然可以定義監聽的名字不同,但在啟動監聽服務的時候,都只啟動一個監聽服務。
六 重新啟動備庫監聽服務,以使更改生效:
DOS>lsnrctl                                # 啟動監聽服務管理程序
LSNRCTL>status                # 查看監聽服務狀態
LSNRCTL>stop                        # 停止監聽服務
LSNRCTL>start                        # 啟動監聽服務
也可以在管理工具的服務管理里停止和啟動服務。
七 配置主庫的初始化參數文件init.ora,修改歸檔目的地。本地歸檔只歸檔到一個目錄e:\log。添加以下內容:
# 定義本地歸檔路徑,強制歸檔,重試時間2秒
log_archive_dest_1 = “location=e:\log\ mandatory reopen=2”
log_archive_dest_state_1 = enable
# 定義歸檔到備用庫,強制歸檔,重試時間15秒。
# 如果定義為可選狀態(optional),那么在歸檔失敗后不會再次嘗試歸檔的。定義
# 為madatory狀態后,如果本次歸檔失敗,則在歸檔下一個日志時會再次嘗試
# 重傳上一個未成功歸檔的日志。
log_archive_dest_2 = “service=stby1 mandatory reopen=15”
log_archive_dest_2 = enable
# 定義必須成功歸檔的日志數,只需要本地成功歸檔即可
log_archive_min_succeed_dest = 1
八 使主庫修改后的參數生效。以下操作是在未重啟主庫時使用。如果修改主庫初始化參數文件后重新啟動了主庫,則可以不使用下列命令。下列命令只對當前實例有效。
SQL>alter system set log_archive_dest_1 = “location=e:\log mandatory reopen=2”;
SQL>alter system set log_archive_dest_state_1 = enabl;
SQL>alter system set log_archive_dest_2 = “service=stby1 mandatory reopen=30”;
SQL>alter system set log_archive_dest_2 = enable;
SQL>alter system set log_archive_min_succeed_dest = 1;
九 配置備用庫的初始化參數文件:將主庫的初始化參數文件復制到備庫,刪除原有的日志歸檔目錄項,並添加以下內容:
log_archive_dest = e:\log
log_archive_trace = 6                #定義日志跟蹤層次
standby_archive_dest = e:\log
# 更改控制文件名
control_files = (“d:\oracle\oradata\orcl\stby_ctl.ctl”)
十 啟動備用庫
將從主庫復制過來的數據文件、控制文件復制到相應的位置,然后在備庫上操作(此時備庫處於關閉狀態):
SQL>connect internal/oracle as sysdba
SQL>startup nomount
SQL>alter database mount standby database
十一  如果有日志序列的缺失,則先將主庫的日志復制到備庫日志目錄,進行手工恢復
SQL>recover automatic standby database;
或者:
SQL>recover standby database until cancel;
查看日志序列是否有缺失的SQL語句:
SQL>SELECT high.thread#, "LowGap#", "HighGap#"
FROM
(
SELECT thread#, MIN(sequence#)-1 "HighGap#"
FROM
(        SELECT a.thread#, a.sequence#
FROM
v$archived_log a,
(        SELECT thread#, MAX(next_change#) gap1
FROM v$log_history
GROUP BY thread#
) b
WHERE a.thread# = b.thread#
AND a.next_change# > b.gap1
)
GROUP BY thread#
) high,
(
SELECT thread#, MIN(sequence#) "LowGap#"
FROM
(        SELECT thread#, sequence#
FROM v$log_history, v$datafile
WHERE checkpoint_change# <= next_change#
AND checkpoint_change# >= first_change#
)
GROUP BY thread#
) low
WHERE low.thread# = high.thread# ;
如果備庫有日志序列缺失,則同一個thread#的LowGap# 與 HighGap# 不等。如果沒有日志序列缺失,那么選出空值或者是LowGap# 與 HighGap# 相同。
十二 將備庫置於自管理模式
SQL>recover managed standby database;
此時,SQLPLUS窗口停止響應,直到取消備庫自管理模式。要取消備庫的自管理模式的命令:
SQL>recover managed standby database cancel;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM