重慶思莊oracle技術(shù)分享-Oracle冷備份操作步驟
概念
數(shù)據(jù)庫在關(guān)閉狀態(tài)下完成所有物理系統(tǒng)文件拷貝的過程,也稱脫機(jī)備份。
適合于非歸檔模式(即noarchivelog模式,SCN保持一致)下,數(shù)據(jù)庫處于一致性狀態(tài)。
冷備份,數(shù)據(jù)庫可以處于歸檔模式也可以處于非歸檔模式,最好是處于非歸檔模式。
步驟
首先在運(yùn)行的庫中得到數(shù)據(jù)庫運(yùn)行的所有的物理文件位置,然后在計(jì)劃內(nèi)關(guān)閉數(shù)據(jù)庫(shutdown)
再執(zhí)行拷貝物理文件到備份路徑或備份設(shè)備
備份完成后立即啟動數(shù)據(jù)庫讓其提供正常的服務(wù)
冷備份腳本的寫法
首先應(yīng)該在相關(guān)視圖里查出數(shù)據(jù)庫的數(shù)據(jù)文件,日志文件,控制文件,臨時(shí)文件所在的位置
注意:不要直接在oradata下進(jìn)行cp就行了,因?yàn)樯a(chǎn)庫里各個(gè)文件通常分布在不同的磁盤,不同的地方,所以在去視圖里獲得真實(shí)路徑
冷備份操作
1)查看Oracle數(shù)據(jù)庫的日志模式,如果是歸檔模式,將需要將數(shù)據(jù)庫設(shè)置為noarchivelog模式(非歸檔模式),從而進(jìn)行冷備份。
SQL> archive log list??
Database log mode? ?? ?? ?? ???No Archive Mode??
Automatic archival? ?? ?? ?? ? Enabled? ?? ?? ?? ?? ?? ?? ?//Enabled表示為歸檔模式
Archive destination? ?? ?? ?? ?/u01/admin/denver/archdest??
Oldest online log sequence? ???1??
Current log sequence? ?? ?? ???1
SQL> startup mount??
ORACLE instance started.??
Total System Global Area??422670336 bytes??
Fixed Size? ?? ?? ?? ?? ?? ?1336960 bytes??
Variable Size? ?? ?? ?? ? 314575232 bytes??
Database Buffers? ?? ?? ? 100663296 bytes??
Redo Buffers? ?? ?? ?? ?? ? 6094848 bytes??
Database mounted.??
SQL>??alter database noarchivelog??
Database altered.??
SQL> archive log list??
Database log mode? ?? ?? ?? ???No Archive Mode??
Automatic archival? ?? ?? ?? ? Disabled? ?? ?? ?? ?? ?? ? //Disabled表示為非歸檔模式
Archive destination? ?? ?? ?? ?/u01/admin/denver/archdest??
Oldest online log sequence? ???1??
Current log sequence? ?? ?? ???1??
SQL> alter database open;??
Database altered.??
2)查看實(shí)例和數(shù)據(jù)庫的相關(guān)信息
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
3)查看數(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
4)查看數(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
5)查看臨時(shí)文件
SQL> select name from v$tempfile;
? ? NAME
? ? --------------------------------------------------------------------------------
? ? /u01/app/oracle/oradata/orcl/temp01.dbf
6)查看日志文件
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
7)查看控制文件
SQL> select name from v$controlfile;
? ? NAME
? ? ------------------------------------------------------------
? ? /u01/app/oracle/oradata/orcl/control01.ctl
? ? /u01/app/oracle/oradata/orcl/control02.ctl
8)創(chuàng)建備份目錄
SQL> ho mkdir /u01/app/oracle/coolbak
9)使用連接符生成復(fù)制文件命令
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
將上面的輸入保存為tmpbak.sql
SQL> save /tmp/tmpbak.sql;? ?
Created file /tmp/tmpbak.sql
10)編輯tmpbak.sql,將下面的內(nèi)容輸入到tmpbak.sql
SQL> ho vim /tmp/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(執(zhí)行過程及其中的數(shù)據(jù)庫啟動在此略過)
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
冷備份總結(jié)
優(yōu)點(diǎn)
冷備模式下概念易于理解,即將需要備份的文件復(fù)制到安全的位置
操作比較簡單,不需要太多的干預(yù)
容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去)
能與歸檔方法相結(jié)合,作數(shù)據(jù)庫“最新狀態(tài)”的恢復(fù)。
缺點(diǎn)
備份時(shí),數(shù)據(jù)庫必須處于一致性關(guān)閉狀態(tài)
只能提供到某一時(shí)間點(diǎn)的恢復(fù)
備份時(shí)速度比較慢,尤其是數(shù)據(jù)量大性能影響比較大
不能實(shí)現(xiàn)基于表和用戶級別的數(shù)據(jù)恢復(fù)