Oracle 冷備份

--======================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、總結

優勢

冷備模式下概念易於理解,即將須要備份的文件複製到安全的位置

操做比較簡單,不須要太多的干預

容易恢復到某個時間點上(只需將文件再拷貝回去)

能與歸檔方法相結合,做數據庫「最新狀態」的恢復。

缺點

備份時,數據庫必須處於一致性關閉狀態

只能提供到某一時間點的恢復

備份時速度比較慢,尤爲是數據量大性能影響比較大

不能實現基於表和用戶級別的數據恢復

相關文章
相關標籤/搜索