NBU網路備份大全之oracle系統熱備份

來源:互聯網
上載者:User

學習和掌握如何使用NBU備份檔案系統,對於一個資料管理員來說,僅僅是一個開始。因為對於大部分企業來說,買來NBU主要是為了備份企業資料庫的資料,保護資料庫的資料安全,進而保證公司專屬應用程式的安全運行。因此,從本文起,將陸續推出針對oracle、DB2和sybase的Database Backup。 Oracle備份簡介: 簡單的按照備份進行的方式,可以分為邏輯備份、冷備份(離線備份)、熱備份(聯機備份),其實冷備份與熱備份又可以合稱為物理備份。 按照備份的工具,可以分為EXP/IMP備份和RMAN。一般來說,Exp/Imp是oracle的一個好的轉儲工具,特別是在小型資料庫的轉儲,資料表空間的遷移,表的抽取,檢測邏輯和物理衝突等中有很強的功能。但是目前主要最廣泛的Oracle備份恢複工具是rman 。RMAN是Oracle提供的一個Database Backup和恢複工具,利用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的熱備份分為兩種:一種是Database Backup,可以在不關閉資料庫的情況下,備份某個資料庫的資料檔案、控制檔案和歸檔記錄檔等等;第二種備份模式是熱備份資料表空間,可以在資料庫關閉的情況下,備份某個資料庫資料表空間的內容。在本文中,我們就分別介紹一下如何進行資料庫級備份和資料表空間級備份。 註:在這裡,我只會講到如何修改備份指令碼來進行備份,如果使用者對於如何建立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提供的指令碼運行時,會在指令碼所在目錄下產生一個同名的.out檔案,裡面記錄了NBU指令碼運行時產生的日誌,然而該指令碼會將這個日誌名稱作為參數傳遞給rman,而rman無法識別該參數中“.out”中的“.”,所以當運行該指令碼時,會出現圖一所示的錯誤,解決辦法是:要麼使用者在hot_database_backup.sh指令碼中,將這條rman命令中的記錄日誌相關內容刪除(圖二);要麼利用逸出字元處理該字串,使得rman可以正確識別該命令。 圖一:執行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的理解。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.