學習和掌握如何使用nbu備份檔案系統,對於乙個資料管理員來說,僅僅是乙個開始。因為對於大部分企業來說,買來nbu主要是為了備份企業資料庫的資料……
學習和掌握如何使用nbu備份 檔案系統,對於乙個資料管理 員來說,僅僅是乙個開始。因為對於大部分企業來說,買來nbu主要是為了備份企業資料庫 的資料,保護資料庫的資料安全 ,進而保證企業應用的安全執行。因此,從本文起,將陸續推出針對oracle 、db2 和sybase 的資料庫備份。
oracle備份簡介:
簡單的按照備份進行的方式,可以分為邏輯備份、冷備份(離線備份)、熱備份(聯機備份),其實冷備份與熱備份又可以合稱為物理備份。
按照備份的工具,可以分為exp/imp備份和rman。一般來說,exp/imp是 oracle的乙個好的轉儲工具,特別是在小型資料庫的轉儲,表空間的遷移,表的抽取,檢測邏輯和物理衝突等中有很強的功能。但是目前主要最廣泛的 oracle備份恢復工具是rman 。rman是oracle提供的乙個資料庫備份和恢復工具,利用rman可以方便進行資料庫的冷備份和熱備份。此外,有一些個人使用者,會使用os拷貝,但 是它的缺點是占用空間大,而且拷貝檔案的內容一般與系統環境有很大關係,轉移到其他機器不容易恢復,不是企業使用者的選擇。
在本文中,我們將介紹如何利用nbu和oracle的rman工具進行oracle的熱備 份。熱備份也稱為聯機(archivelog)備份,是當資料庫開啟並對使用者有效是的os級的資料備份。熱備份與冷備份最大的區別就在於備份時不需要關閉 資料庫,適合於24×7業務型別的需要。
注意,筆者假設用於已經閱讀過前作《用nbu備份oracle系統-冷備份》,故在講述中會忽略一些基本的配置過程,重點在於將冷備份和熱備份的區別。所以如果對細節不是很清楚的使用者,可以翻閱前作。
熱備份的條件:
使用者如果需要進行熱備份,那麼必須將資料庫設定為archivelog模式。使用者可以登入資料庫後,通過「sql> archive log list」檢視資料庫的模式是否是archivelog模式。如果使用者資料庫不是在archivelog模式下,可以通過下列命令將其設定為歸檔模式:
• sql>shutdown immediate
• sql>startup mount
• sql>alter
database archivelog
• sql>alter database open
在歸檔模式下,使用者的資料庫會將所有的日誌記錄起來,所以時間一久就會占用大量的磁碟空間,所以使用者可以按需,將資料庫改回到非歸檔模式,方法如下所示:
• sql>shutdown immediate
• sql>startup mount
• sql>alter database noarchivelog
• sql>alter database open
熱備份的型別:
從nbu的角度來說,oracle的熱備份分為兩種:一種是資料庫備份,可以在不關閉資料 庫的情況下,備份某個資料庫的資料檔案、控制檔案和歸檔日誌檔案等等;第二種備份模式是熱備份表空間,可以在資料庫關閉的情況下,備份某個資料庫表空間的 內容。在本文中,我們就分別介紹一下如何進行資料庫級備份和表空間級備份。
注:在這裡,我只會講到如何修改備份 指令碼來進行備份,如果使用者對於如何建立oracle備份策略、如何執行全備份和增量備份、如何尋找nbu提供的備份指令碼模板等問題存在疑惑的話,請參加前文《用nbu備份oracle系統-冷備份 》。
資料庫 級熱備份:
對於資料庫級熱備份來說,我們可以利用nbu提供的指令碼檔案:/usr/openv/netbackup/ext/db_ext/oracle/samples/rman/hot_database_backup .sh,這是乙個可執行指令碼,內容就是在設定好執行oracle rman程式所需的一些環境變數後,從root使用者切換到oracle系統使用者的帳號下,利用rman程式,將資料庫的資料檔案、歸檔日誌檔案和控制檔案備份到使用者指定的儲存 單元中。在該檔案中,我們需要修改如下引數(建議將該檔案拷貝乙份出來做修改,以免改錯):
oracle_home:表示oracle所在的目錄,nbu需要到其目錄下執行相應的rman命令;
oracle_sid:指明需要冷備份的資料庫;
oracle_user:oracle資料庫所屬的系統使用者,nbu會先用該使用者登入,再執行各種備份操作;
target_connect_str:登入oracle資料庫的帳號,必須是系統管理員,因為冷備份需要停止oracle資料庫先;
熱備份和冷備份模板指令碼修改的區別在於:冷備份需要指定oracle啟動檔案引數,這是因為冷備份需要關閉和重新啟動資料庫,所以需要啟動配置檔案;而熱備份不關閉資料庫,所以不需要該變數。
圖一:執行nbu指令碼出現的問題
圖二:使用者需要在指令碼中所做的刪除
這樣,使用者就可以將該指令碼放到oracle備份 策略中的備份選擇中並執行它了。
小竅門:為了保證nbu指令碼沒有問題,使用者在執行nbu備份策略之前,最好手動執行該腳 本,並通過檢視相關的「.out」檔案來檢查是否指令碼可以執行正確,如果指令碼執行錯誤,則使用者輸入「# echo $?」則返回非零值,在這種情況下,使用者需要從輸入檔案中發現錯誤原因並修改執行指令碼。只有該指令碼可以手動執行成功後,才能在備份策略中執行成功。
表空間級熱備份:
在使用表空間級備份之前,我們需要先解釋一下catalog
資料庫 (此 catalog非nbu之catalog,是oracle的內容)。catalog也是乙個資料庫(幾十兆而已),只不過這個資料庫用來儲存備份資訊,一 個恢復目錄可以用來備份多個資料庫。rman可以在沒有恢復目錄(nocatalog)下執行,這個時候備份資訊儲存在控制檔案。儲存在控制檔案的備份信 息是很危險的,如果控制檔案的破壞將導致備份資訊的丟失與恢復的失敗,而且,沒有恢復目錄,很多rman的命令將不被支援。所以對於重要的資料庫,建議創 建恢復目錄。
在表空間級熱備份中,需要首先建立乙個catalog資料庫,所需命令如下:
1, 為目錄建立乙個單獨的表空間:
sql>create tablespace ts_rman datafile '/oracle/catalog_rman.bdf size 50m;
2, 建立rman使用者:
sql>create user rman identified by rman default tablespace ts_rman temporary tablespace temp;
3, 給rman授予許可權:
sql>grant connect , resource , recovery_catalog_owner to rman;
4, 連線到目標資料庫和catalog資料庫:
rman target system /manager@target_tnsname rcvcat rman/rman@catalog_tnsname
其中,target_tnsname是我們想要備份 的資料庫 名稱,catalog_tnsname是剛才建立rman表空間和rman使用者所在資料庫的名稱,可以和備份資料庫乙個,因為我們這裡僅僅是備份其他表空間。
5, 建立catalog使用者的表:
rman>create catalog
6, 登記目標資料庫:
rman>register database
這樣,我們就成功建立了catalog表空間來存放備份資訊。
為了使得使用者可以熱備份oracle表空間,nbu為使用者提供了乙個模板指令碼:/usr /openv/netbackup/ext/db_ext/oracle/samples/rman /hot_tablespace_backup.sh。使用者需要修改的內容,除了和上述資料庫級熱備份需要的引數外,還需要下列引數:
rcvcat_tns:就是catalog表空間所在的資料庫名稱;
rcvcat_connect_str:就是連線rcvcat_tns資料庫所需要的rman的帳號資訊,在本例中就是「rcvcat_connect_str=rman/rman」。
此外,在模板指令碼中,只是熱備份使用者的system表空間,而使用者可以修改指令碼,使得可以熱備份其他的表空間。首先我們需要查詢到資料庫中所有的表空間,見圖三:
圖三:檢視資料庫的表空間
在找到需要熱備份的表空間後,使用者需要修改hot_tablespace_backup.sh指令碼中的字段,見圖四:
圖四:修改表空間名稱
由圖四可知,我們在指令碼中修改黃圈以內的名稱為任何存在的表空間名稱即可。
這樣,對於表空間級的備份指令碼就修改完畢了,使用者可以試著執行該指令碼,並通過輸入檔案 hot_tablespace_backup.sh.out來解決可能出現的錯誤(一步一步教著,應該沒什麼錯誤吧!),如果指令碼可以執行正常,那麼就需 要將其加入到nbu的備份策略中,並設定好全備份和差分備份的日程表即可。
通過本文的介紹,使用者可以通過修改nbu自帶的備份指令碼,對oracle系統做資料庫級或者表空間級的熱備份了。希望本文可以在使用者使用nbu oracle**的過程中,加深使用者對於oracle資料庫和nbu的理解。
Oracle 系統表大全
資料字典dict總是屬於oracle使用者sys的。1 使用者 select username from dba users 改口令alter user spgroup identified by spgtest 2 表空間 select from dba data files select fro...
Oracle 系統表大全
資料字典dict總是屬於oracle使用者sys的。1 使用者 select username from dba users 改口令alter user spgroup identified by spgtest 2 表空間 select from dba data files select fro...
Oracle 系統表大全
資料字典dict總是屬於oracle使用者sys的。1 使用者 select username from dba users 改口令alter user spgroup identified by spgtest 2 表空間 select from dba data files select fro...