Oracle資料庫備份與恢復 3 OS備份資料

2021-12-29 21:07:57 字數 4817 閱讀 5688

使用者管理的備份與恢復也稱 os物理備份,是指通過資料庫命令設定資料庫為備份 狀態,然後用作業系統命令,拷貝需要備份或恢復的檔案。這種備份與恢復需要使用者的 參與手工或自動完成。

對於使用 os拷貝備份的資料檔案,可以使用 dbvertify  進行檢驗。dbvertify是乙個外部工具,主要用於校驗資料檔案或備份的資料檔案的資料塊是否正確。 例:

dbv /u01/oradata/oracle/users01.dbf blocksize=8192

引數說明:

關鍵字 說明 (預設)

file 要檢驗的檔案 (none)

start 起始塊 (檔案的第乙個塊)

end 結束塊 (檔案的最後乙個塊)

blocksize 邏輯塊大小 (2048)

logfile 輸出日誌 (none)

feedback 顯示程序 (0)

recover  還可以進行測試,檢測恢復的錯誤,錯誤資訊記載在  alert_sid.log  檔案中,通過測試,我們可以知道該恢復操作是否能正常完成。

sql> recover tablespace sales test;

sql> recover database until cancel test;

3.1  相關設定

3.1.1  設定archivelog與nonarchivelog模式

重做日誌組是以迴圈方式使用的,重做日誌組會被覆蓋重做日誌資訊就會丟失。為了儲存歷史以來的重做日誌,資料庫可以執行在日誌歸檔模式下(archivelog mode)。 在日誌歸檔模式下,當日誌組撤換到下乙個組時後台程序  arcn  將上乙個日誌檔案複製到另乙個地方(oracle 10g  使用快速恢復區會歸檔到該區)儲存。資料庫預設為非歸檔模式(noarchivelog mode)。

設定archivelog模式步驟:

1.  關閉資料庫,備份已有的資料,改變資料庫的執行方式是對資料庫的重要改動,所以要對資料庫做備份,對可能出現的問題作出保護。

2.  修改初試化引數:  使用 pfile,修改初始化引數檔案 init[sid].ora log_archive_start=true #啟動自動歸檔 log_archive_format=arc%t%s.arc #歸檔檔案格式 log_archive_dest=/arch12/arch             #歸檔路徑

3.  啟動 instance 到 mount狀態,即載入資料庫但不開啟資料庫:sql > startup mount;

4.  發出修改命令sql > alter database archivelog; sql > alter database open;設定 nonarchivelog模式步驟同上,只需修改相應引數值即可。

3.1.2 logging  與  nologging

表空間、表、索引、分割槽可以設定為  nologging,用於快速裝入資料(direct load)。 在插入資料時只寫入最小的重做日誌和回滾資料。在歸檔資料庫模式下,執行  direct  load 操作後應立即進行備份,否則不能使用之前的備份進行恢復。另外,使用者可以設定資料庫的 強制日誌模式,使用所有操作都記入日誌。

logging  與  nologging  的區別:

logging nologging

所有的更改寫入 redo 最小寫入 redo log

從最近備份中完全恢復 不能從最近備份中完全恢復

不需要增加備份 需要增加備份

nologging  的操作:

create table … nologging as select    語句

insert /*+append*/    into 表》 nologging    select  語句

insert /*+ parallel(表》,)達式*/ into 表》 nologging select  語句

sql*loader的direct 方法

例:sql>create table emp1 nologging as select * from emp; sql>select name,unrecoverable_time from v$datafile;

sql>insert /*+ append */ into emp1 nologging select* * from emp; sql>select name,unrecoverable_time from v$datafile;

sql>alter database no force logging;

3.1.3  歸檔路徑

在歸檔模式下進行自動歸檔時,或者在恢復時設定歸檔所在的位置,需要設定歸檔路徑初始化引數:

log_archive_dest_n=「location=path mandatory|optional reopen=n」

log_archive_dest_n=「service=standby mandatory|optional reopen=n

3.2 nonarchivelog 模式

3.2.1  離線冷備與恢復

冷備份發生在資料庫已經正常關閉的情況下,當正常關閉時會提供給我們乙個完整的資料庫。冷備份是將關鍵性檔案拷貝到另外位置的一種說法。對於備份  oracle  資訊而言,冷備份是最快和最安全的方法。

冷備份的優點:

1.是非常快速的備份方法(只需拷貝檔案)

2.容易歸檔(簡單拷貝即可)

3.容易恢復到某個時間點上(只需將檔案再拷貝回去)

4.能與歸檔方法相結合,作資料庫「最新狀態」的恢復。

5.低度維護,高度安全。

冷備份的不足:

1.單獨使用時,只能提供到「某一時間點上」的恢復。

2.在實施備份的全過程中,資料庫必須要作備份而不能作其它工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態。

3.若磁碟空間有限,只能拷貝到磁帶等其它外部儲存裝置上,速度會很慢。

4.不能按表或按使用者恢復。

如果可能的話(主要看效率),應將資訊備份到磁碟上,然後啟動資料庫(使使用者可以 工作)並將所備份的資訊拷貝到磁帶上(拷貝的同時,資料庫也可以工作)。冷備份中必須 拷貝的檔案包括:1.所有資料檔案2.所有控制檔案3.所有聯機 redo log 檔案4.引數化引數 init.ora 檔案(可選)。

3.2.2  案例

1.9i  離線冷備/恢復的例子:

(1)  關閉資料庫

$ sqlplus /nolog

sql> connect /as sysdba

sql> shutdown normal;

(2)  用拷貝命令備份/恢復全部的時間檔案、重做日誌檔案、控制檔案、初始化引數 檔案sql > host cp    xx       xx;

可以使用以下冷備指令碼:

#!/bin/bash

##    名稱:    coldback_gen.sh

##    功能:    本 shell 用於生成冷備份指令碼, 進行冷備份同時生成相應的恢復命令

##  可以修改後在生成後立即執行

## 編者:

## 日期: 2006.12.13.

##設定變數

##設定臨時檔名

tempsql=./backup.sql

##設定備份檔案存放路徑

backdate=`date -u +%y%m%d`

backupdir=/u04/oracle/coldback/$backdate

mkdir $backupdir

##設定備份指令碼檔名

backupsh=$backupdir/coldback.sh

rcvrsh=$backupdir/recovery.sh

echo "正在生成冷備份指令碼[$backupsh]……"

##檢查 oracle資料庫是否啟動

oraisrun=`ps -ef|grep -c ora_`

if [ "$oraisrun" = "0" ] || [ "$oraisrun" = "1" ]

then

echo "

oracle 資料庫尚未啟動,請先啟動 oracle"

echo ""

exit

fi##準備工作

echo "set heading off     " > $tempsql

echo "set feedback off   " >>$tempsql

echo "set tab off              " >>$tempsql

echo "set verify off        " >>$tempsql

echo "set pagesize 0"           >>$tempsql

echo "set linesize 800    " >>$tempsql

echo "select #!/bin/bash from dual;"          >> $tempsql

echo "select                            from dual;"          >> $tempsql

echo  "select  ##  備份指令碼生成時間:  "  `date  +%y 年%m月%d日-%h:%m:%s`  "

from dual;" >> $tempsql

echo "select ##  備份目的路徑: $backupdir from dual; "        >> $tempsql

echo "select from dual; " >> $tempsql

echo "" echo "select echo 開始進行離線冷備…… from dual; "               >> $tempsql

echo "select echo 備份目的路徑: $backupdir from dual; " &nbs

oracle資料庫恢復與備份

一 oracle資料庫恢復 1.恢復剛才刪除的一條資料 delete from emp e where e.empname smith select from flashback transaction query f where f.table name emp undo sql下面的語句為剛才刪...

oracle資料庫備份與恢復

一 使用資料幫浦備份資料 1.建立目錄物件並授權 connect sys password as sysdba create directory dir1 as e dump1 create directory dir2 as e dump2 grant read,write on director...

Oracle資料庫備份與恢復 增量備份

rman乙個強大的功能是支援增量備份,增量備份中心思想就是減少備份的資料量,我們不需要在從頭開始備份了,只需要備份自上次已備份之後的資料塊即可。關於incremental增量備份級別 oracle 9i 共有五種級別 0 1 2 3 4,0級最高 4級最低,0級是1級的基礎以此類推。oracle 1...