?? readme.txt
字號:
-- 在正式備份之前,一定按如下要求去做。
-- 版權聲明如下:
-- 讀者可以任意拷貝、修改該備份腳本的內容,但不可以篡改作者。
-- 作者: 徐玉金
各文件的作用:
backup目錄下:
1.rman_db_all.bat :
備份整個oracle數據庫,該文件會先后調用rman_db.sh,scp_rman_db_files.sh文件
2.rman_db.bat:
由rman_db_all.sh文件調用,實現用rman備份數據庫.
該腳本會首先根據環境變量的設置:
a.生成一個rman腳本文件(rman_arch_cr_g.rman), 去檢查歸檔日志的情況
b.生成一個rman腳本文件(rman_db_backup_g.rman), 備份整個數據庫
3.scp_rman_db_files.bat:
由rman_db_all.bat文件調用,將用rman備份出的數據文件拷貝到另外一個機器上,用scp拷貝
4.OS_bak_arch_all.bat:
用操作系統拷貝方法只備份歸檔日志文件,該文件會先后調用OS_bak_arch.bat,scp_rman_arch_files.bat文件
5.OS_bak_arch.bat:
由OS_bak_arch_all.bat文件調用,實現將新產生的歸檔日志拷貝到指定的目錄.
6.scp_rman_arch_files.bat:
由OS_bak_arch.sh文件調用,將第5步的指定目錄的歸檔日志用scp拷貝到另外一臺機器上。
conf目錄下:
備份時用到的各個sql文件
1. add_temp_files.sql: 生成將所有的臨時文件加到臨時表空間sql語句
2. archive_arch.sql 手工歸檔
3. db_profile.sql: 生成當前數據庫的基本描述,如有幾個數據文件, 臨時文件等
4. startup_nomount.sql: 啟動數據庫到nomount狀態
5. startup_resetlogs.sql: 用resetlogs 選項打開數據庫
6. test_conn.sql: 測試數據庫是否正在運行
環境描述:
只要有兩臺windows機器, 一臺裝有oracle 92數據庫, 另一臺設置一個共享目錄, 由數據庫服務器可以訪問得到就可。
也可以多臺數據庫服務器,而只有一臺備份服務器
我的測試環境:
2臺window xp。
具體設置方法:
1.設置數據庫服務器,使之建立一個映射驅動器,映射到遠程備份服務器的一個共享目錄
2.將數據庫設置為歸檔模式, 設置好歸檔目錄與歸檔日志文件名的命名規則
3.以sysdba身份登陸數據庫,運行readme目錄下的pro_gen_add_files_to_temp_ts.sql文件該文件中的存儲過程是備份所需要的。
4.在映射驅動器上創建相應的備份目錄, 為 BS_BAKUP_BASE 環境變量指定的值
5.在數據庫服務器上創建相應的目錄, 為 DBS_BACKUP_BASE, DBS_SCRIPT_DIC 環境變量指定的值
6.修改set_env.bat.bat文件中的相應環境變量的值,使之反應實際情況,需要注意的變量為:
ORACLE_BASE, ORACLE_HOME, ORACLE_SID, NLS_LANG, ARCH_DEST1, ARCH_DEST2, DBS_BACKUP_BASE, DBS_SCRIPT_DIC
DBS_IP, BS_IP,BS_BAKUP_BASE 具體參數說明參見set_env.bat.bat文件
7.修改各個文件中set_env.bat的路徑為其正確的路徑(切記,否則備份不能進行)
8.如果歸檔目錄個數超過一個,適當的修改腳本(需要增加內容)
9.將所有腳本拷貝到數據庫服務器的DBS_SCRIPT_DIC目錄下(需要先解壓附件)
10.將rman_db_all.bat文件加到windows任務中,每天運行一次。rman_arch_all.bat也加到windows任務中,每30分鐘運行一次
11.在oracle9i以上版本如果設置了archive_lag_target參數, 使數據庫每半小時歸檔一次m
則可以修改OS_bak_arch.bat文件,將手工歸檔部分注釋掉,但是rman_arch_all.bat文件還要加到windows任務中,每30分鐘運行一次,
這樣可以保證在整個系統硬盤都崩潰的情況的,只損失半小時的修改記錄
備注:
1.在oracle9i + windos xp professional下測試通過
2.該腳本只是假設當前用了一個歸檔目錄ARCH_DEST1,如果由第二個歸檔目錄修改腳本使之使用ARCH_DEST2、DBS_BAK_ARCH_DIC2變量,
如果有第三個歸檔目錄,則增加變量ARCH_DEST3,并修改相應的腳本。
3. 本來想映射一個驅動器到遠程機器,當rman備份時,直接備份到這個映射驅動器上, 但rman不支持這種方式
4.如果rman_db.log中有報錯信息,最后部分信息如下:
sql statement: ALTER SYSTEM ARCHIVE LOG CURRENT
Starting backup at 27-DEC-04
released channel: node1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 12/27/2004 11:09:09
RMAN-20242: specification does not match any archive log in the recovery catalog
Recovery Manager complete.
則這說明數據庫中記錄的歸檔日志的目錄、文件名與你設置的歸檔日志的目錄、文件名不一致。
1) 找到正確的歸檔日志的目錄、文件名。
sqlplus > select name from v$archived_log;
根據上面查詢出的值,修改ARCH_DEST1目錄與ARCH_DEST2目錄
2) 設置正確的log_archive_format參數,保證其值為arc%t_%s.dbf
否則設置log_archive_format初始化參數或修改rman_db.bat中archivelog like的%SPEC_CHAR%.dbf部分,使兩者一致
例:我得機器中:運行select name from v$archived_log;得到:
D:\ORACLE\ADMIN\XYJ\ARCH\ARC1_32.DBF
則我設置ARCH_DEST1D:\ORACLE\ADMIN\XYJ\ARCH 。archivelog like部分為%SPEC_CHAR%.DBF
5.可以將執行的過程保存到一個文件中: temp.bat >>c:\temp.log 2>&1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -