--======================
-- Oracle 冷備份
--======================
?
一、冷備份
??? 數(shù)據(jù)庫在關閉狀態(tài)下完成所有物理系統(tǒng)文件拷貝的過程,也稱脫機備份
??? 適合于非歸檔模式下,數(shù)據(jù)庫處于一致性狀態(tài)
???
二、步驟 ???
??? 首先在運行的庫中得到數(shù)據(jù)庫運行的所有的物理文件位置,然后在計劃內關閉數(shù)據(jù)庫 ( shutdown )
??? 再執(zhí)行拷貝物理文家到備份路徑或備份設備
??? 備份完成后立即啟動數(shù)據(jù)庫讓其提供正常的服務
?
?
三、冷備腳本的寫法
??? 首先應該在相關視圖里查出數(shù)據(jù)庫的數(shù)據(jù)文件,日志文件,控制文件,臨時文件所在的位置
??? 注意:不要直接把 oradata 下的 cp 就行了,因為生產庫里各個文件通常分布在不同的磁盤,不同的地方,所以在去視圖里獲得真實路徑 ?
?
??? -- 查看實例和數(shù)據(jù)庫的相關信息
??? SQL > select instance_name , version , status , archiver , database_status from v$instance ;
?
??? INSTANCE_NAME ??? VERSION ?????????? STATUS ?????? ARCHIVE DATABASE_STATUS
??? ---------------- ----------------- ------------ ------- -----------------
??? orcl ???????????? 10.2.0.1.0 ??????? OPEN ???????? STOPPED ACTIVE
?
??? SQL > select dbid , name , log_mode from v$database ;
?
??????? ? DBID NAME ????? LOG_MODE
??? ---------- --------- ------------
??? 1242732291 ORCL ????? NOARCHIVELOG
?
??? -- 查看數(shù)據(jù)文件及狀態(tài)信息
??? SQL > select file_name , tablespace_name , status , online_status from dba_data_files ;
?
??? FILE_NAME ?????????????????????????????????????????????? TABLESPACE STATUS ??? ONLINE_
??? ------------------------------------------------------- ---------- --------- -------
??? / u01 / app / oracle / oradata / orcl / undotbs01 . dbf ????????????? UNDOTBS1 ?? AVAILABLE ONLINE
??? / u01 / app / oracle / oradata / orcl / system01 . dbf ?????????????? SYSTEM ???? AVAILABLE SYSTEM
??? / u01 / app / oracle / oradata / orcl / sysaux01 . dbf ?????????????? SYSAUX ???? AVAILABLE ONLINE
??? / u01 / app / oracle / oradata / orcl / users01 . dbf ??????????????? USERS ????? AVAILABLE ONLINE
??? / u01 / app / oracle / oradata / orcl / example01 . dbf ????????????? EXAMPLE ??? AVAILABLE ONLINE
??? / u01 / app / oracle / oradata / orcl / tbs1_1 . dbf ???????????????? TBS1 ?????? AVAILABLE ONLINE
??? / u01 / app / oracle / oradata / orcl / tbs1_2 . dbf ???????????????? TBS1 ?????? AVAILABLE ONLINE
?
??? -- 查看數(shù)據(jù)文件
??? SQL > select name from v$datafile ;
?
??? NAME
??? --------------------------------------------------------------------------------
??? / u01 / app / oracle / oradata / orcl / system01 . dbf
??? / u01 / app / oracle / oradata / orcl / undotbs01 . dbf
??? / u01 / app / oracle / oradata / orcl / sysaux01 . dbf
??? / u01 / app / oracle / oradata / orcl / users01 . dbf
??? / u01 / app / oracle / oradata / orcl / example01 . dbf
??? / u01 / app / oracle / oradata / orcl / tbs1_1 . dbf
??? / u01 / app / oracle / oradata / orcl / tbs1_2 . dbf
?
??? -- 查看臨時文件
??? SQL > select name from v$tempfile ;
?
??? NAME
??? --------------------------------------------------------------------------------
??? / u01 / app / oracle / oradata / orcl / temp01 . dbf
?
??? -- 查看日志文件
??? SQL > select member from v$logfile ;
?
??? MEMBER
??? ------------------------------------------------------------
??? / u01 / app / oracle / oradata / orcl / redo2a . rdo
??? / u01 / app / oracle / oradata / orcl / redo2b . rdo
??? / u01 / app / oracle / oradata / orcl / redo1a . rdo
??? / u01 / app / oracle / oradata / orcl / redo3a . rdo
??? / u01 / app / oracle / oradata / orcl / redo3b . rdo
??? / u01 / app / oracle / oradata / orcl / redo1b . rdo
?
??? -- 查看控制文件
??? SQL > select name from v$controlfile ;
?
??? NAME
??? ------------------------------------------------------------
??? / u01 / app / oracle / oradata / orcl / control01 . ctl
??? / u01 / app / oracle / oradata / orcl / control02 . ctl
?
??? -- 創(chuàng)建備份目錄
??? SQL > ho mkdir / u01 / app / oracle / coolbak
???
??? -- 使用連接符生成復制文件命令
??? SQL > select 'ho cp ' || name || ' /u01/app/oracle/coolbak' from v$controlfile ;
?
??? 'HOCP' || NAME|| '/U01/APP/ORACLE/COOLBAK'
??? ----------------------------------------------------------------------------------
??? ho cp / u01 / app / oracle / oradata / orcl / control01 . ctl / u01 / app / oracle / coolbak
??? ho cp / u01 / app / oracle / oradata / orcl / control02 . ctl / u01 / app / oracle / coolbak
?
??? SQL > save / tmp / tmpbak . sql ; ?? -- 將上面的輸入保存為 tmpbak.sql
??? Created file / tmp / tmpbak . sql
?
??? SQL > ho vim / tmp / tmpbak . sql ?? -- 編輯 tmpbak.sql, 將下面的內容輸入到 tmpbak.sql
?
??? set feedback off
??? set heading off
??? set verify off
??? set trimspool off
??? set pagesize 0
??? set linesize 200
??? define dir = '/u01/app/oracle/coolbak'
??? define script = '/tmp/coolbak.sql'
??? spool & script
??? select 'ho cp ' || name || ' &dir' from v$controlfile
??? union all
??? select 'ho cp ' || name || ' &dir' from v$datafile
??? union all
??? select 'ho cp ' || member || ' &dir' ? from v$logfile
??? union all
??? select 'ho cp ' || name || ' &dir' from v$tempfile
??? /
??? create pfile = '&dir/initorcl.ora' from spfile ;
??? ho cp / u01 / app / oracle / 10g / dbs / orapworcl & dir
??? spool off
??? shutdown immediate
??? start & script
??? ho rm & script
??? startup
?
??? -- 執(zhí)行 tmpbak.sql
??? SQL > @/tmp / tmpbak . sql ;
?
??? -- 執(zhí)行過程及數(shù)據(jù)庫啟動略
???????
??? -- 啟動后查看備份的文件
??? SQL > ho ls / u01 / app / oracle / coolbak
??? control01 . ctl ? orapworcl ?? redo2b . rdo ??? system01 . dbf ?? users01 . dbf
??? control02 . ctl ? redo1a . rdo ? redo3a . rdo ??? tbs1_1 . dbf
??? example01 . dbf ? redo1b . rdo ? redo3b . rdo ??? tbs1_2 . dbf
??? initorcl . ora ?? redo2a . rdo ? sysaux01 . dbf ? undotbs01 . dbf
?
四、總結
??? 優(yōu)點
??????? 冷備模式下概念易于理解,即將需要備份的文件復制到安全的位置
??????? 操作比較簡單,不需要太多的干預
??????? 容易恢復到某個時間點上 ( 只需將文件再拷貝回去 )
??????? 能與歸檔方法相結合,作數(shù)據(jù)庫 “ 最新狀態(tài) ” 的恢復。
??? 缺點
??????? 備份時,數(shù)據(jù)庫必須處于一致性關閉狀態(tài)
??????? 只能提供到某一時間點的恢復
??????? 備份時速度比較慢,尤其是數(shù)據(jù)量大性能影響比較大
??????? 不能實現(xiàn)基于表和用戶級別的數(shù)據(jù)恢復
?
五、更多參考
?
?
?
?
?
?
? Oracle 聯(lián)機重做日志文件(ONLINE LOG FILE)
?
?
?
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
