--======================sql
-- Oracle 冷備份數據庫
--======================vim
1、冷備份安全
數據庫在關閉狀態下完成全部物理系統文件拷貝的過程,也稱脫機備份oracle
適合於非歸檔模式下,數據庫處於一致性狀態app
2、步驟ide
首先在運行的庫中獲得數據庫運行的全部的物理文件位置,而後在計劃內關閉數據庫(shutdown)性能
再執行拷貝物理文件到備份路徑或備份設備spa
備份完成後當即啓動數據庫讓其提供正常的服務日誌
3、冷備腳本的寫法
首先應該在相關視圖裏查出數據庫的數據文件,日誌文件,控制文件,臨時文件所在的位置
注意:不要直接把oradata下的cp就好了,由於生產庫裏各個文件一般分佈在不一樣的磁盤,不一樣的地方,因此在去視圖裏得到真實路徑
--查看實例和數據庫的相關信息
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
--查看數據文件及狀態信息
SQL>selectfile_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
--查看數據文件
SQL>selectnamefrom 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>selectnamefrom 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>selectnamefrom v$controlfile;
NAME
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
--建立備份目錄
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
unionall
select'ho cp '||name||' &dir'from v$datafile
unionall
select'ho cp '|| member ||' &dir'from v$logfile
unionall
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
--執行tmpbak.sql
SQL> @/tmp/tmpbak.sql;
--執行過程及數據庫啓動略
--啓動後查看備份的文件
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
4、總結
優勢
冷備模式下概念易於理解,即將須要備份的文件複製到安全的位置
操做比較簡單,不須要太多的干預
容易恢復到某個時間點上(只需將文件再拷貝回去)
能與歸檔方法相結合,做數據庫「最新狀態」的恢復。
缺點
備份時,數據庫必須處於一致性關閉狀態
只能提供到某一時間點的恢復
備份時速度比較慢,尤爲是數據量大性能影響比較大
不能實現基於表和用戶級別的數據恢復