Oracle數據庫管理系統:大數據的備份
2024-08-29 13:50:10
供稿:網友
問:公司里的Oracle數據庫有20G之大(這是一個方案的大小.原來這個方案有30G,我已經把能刪的數據都刪了),怎么備份?感覺備份一次好慢啊.專家有什么指導一下的嗎?(另:20G的數據庫是不是備份也要20G這樣?)我希望能每周備份一次,最好天天一次. 答:方法一:首選需要在UNIX下創建一個管道(只創建一次即可): $mknod ./eXP_pipe p $ ls -l exp_pipe PRw-rw-r-- 1 report group 0 Mar 17 05:20 exp_pipe 然后通過管道,將EXP導出的數據直接壓縮,注重:下面二行要寫在同一個shell腳本中。 compress < ./exp_pipe > ./tmp_now.dmp.Z & exp user/passwd@數據庫連接串 file=./exp_pipe direct=y compress=no log=./exp.log 20G的DMP文件,壓縮后的大小在4G左右。 方法二:考慮到機器的速度和效率的問題,一般不建議使用exp對數據量大的數據庫進行備份,因為比較慢。oracle的rman備份可以支持增量備份,你可以自己設置一個備份策略,好比每周日做一次數據庫全備份(level 0 級的備份),然后周一周二做增量備份(level 1 級的備份),周三在做一次數據庫全備份(level 0),最后周四、周五、周六做數據庫的增量備份(level 1)。這樣既可以保證你的備份在大部分時間內比較快,而且也可一保證在需要恢復時較快。具體的備份策略要根據你的要求而定,我只是舉個例子。 介紹一下什么是Oracle的rman備份: Oracle 的RMAN備份- - 查看那當前使用那個spfile文件 : SQL> select name,value from v$parameter where name='spfile'; 1。檢查數據庫的歸檔方式。假如不是規定方式,則要修改數據庫為歸檔方式。 1.1 以dba帳號登陸, $ sqlplus '/as sysdba'; SQL> archive log list; Database log mode No Archive Mode #非歸檔方式 Automatic archival Enabled Archive destination /oracle/bakram/log_archive Oldest online log sequence 161 Current log sequence 1631.2 假如第一步為 No Archive Mode ,則將數據庫修改修改為歸檔方式 1.2.1 建立存檔路徑. $mkdir /oracle/bakram/log_archive 1.2.2 在/oracle/OracleHome/dbs/建立一文件 firstSpfile.ora 文件內容為: SPFILE="/oracle/OracleHome/dbs/spfileorcyehoo.ora" # 實例名稱 log_archive_start=true; log_archive_format=ARC%T%S.arc #格式 log_archive_dest=/oracle/bakram/log_archive #存放的路徑 1.3 停止數據庫 $/oracle/dbstop.sh 1.4 修改歸檔方式 1.4.1 建立一個dbstartmount.sh文件 -------- echo "begin to start oracle mount..." lsnrctl start sqlplus /nolog < connect /as sysdba startup mount exit exit sleep 10 echo "oracle have started oracle mount..." --------執行./dbstartmount.sh SQL>alert database archivelog; Database altered. 將數據庫打開 SQL> alert database open; Database altered. SQL> 1.5.配置dbstart.sh。 啟動數據庫 $vi /oracle/dbstart.sh #編輯啟動腳本 --------------------------------------------- echo "begin to start oracle..." lsnrctl start sqlplus /nolog < connect /as sysdba startup pfile="/oracle/OracleHome/dbs/firstSpfile.ora" #修改這里。即啟動時加載自己配置的文件。
exit exit sleep 10 echo "oracle have started..." -------------------------------------- 2. 創建RMAN目錄 $ sqlplus system/data#yes 2.1創建一個獨立的表空間 SQL> create tablespace back datafile 'back_CSS.dmp' size 50m;2.2創建RMAN用戶 SQL> create user rman identified by rman default tablespace back temporary tablespace temp; 2.3給RMAN授予權限 SQL>grant connect,resource,recovery_catalog_owner to rman; 2.4打開RMAN $RMAN 2.5連接數據庫 RMAN>connect catalog rman/rman; 2.6 創建恢復目錄 RMAN>create catalog tablespace back; 3. 注冊目標數據庫(需要備份的數據庫) 3.1 注冊數據庫 $rman target sys/data#yes catalog rman/rman@yehoo; #yehoo為實例名?! ?--- Recovery Manager: Release 9.2.0.1.0 - ProdUCtion Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: YEHOO (DBID=2840368994) connected to recovery catalog database ---- RMAN> register database; 3.2 查詢恢復目錄 怎么能知道我們的oracle9i是OLTP還是DSS 4。備份 備份表空間: backup tag 'tsuser' format '/oracle/css_20041209_%u_%s_%p' tablespace css; 5. 維護rman 5.1 查看現有備份 RMAN> list backup; 5.2 列出過期備份 RMAN> report obsolete 6. 選擇備份策略