ORACLEDatabase Backup技術
---- 1 引言
---- ORACLE資料庫是一種大型關係型的資料庫,可以存貯達到存貯TB的資料,那麼如何保證這些資料的安全尤其至關重要,我們從1991年開始使用ORACLE資料庫,通過這些年的使用,我們制定了一整套的ORACLE資料庫的備份制度。現在把我們的備份制度介紹給大家,供大家參考。
---- 2 根據實際需要決定資料庫的運行方式
---- ORACLE資料庫有兩種運行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當資料庫發生故障時最大限度恢複所有已提交的事物;二是不歸檔方式(NOARCHIVELOG),恢複資料庫到最近的回收點。我們根據資料庫的高可用性和使用者可承受丟失的工作量的多少,把我們正式啟動並執行資料庫採用為歸檔方式;那些正在開發和調試的資料庫採用不歸檔方式。
---- 3 如何改變資料庫的運行方式
---- 3.1在建立資料庫時設定資料庫的啟動並執行方式
---- 在建立資料庫時,作為建立資料庫的一部分,就決定了資料庫初始的存檔方式。一般情況下為NOARCHIVELOG方式。當資料庫建立好以後,根據我們的需要把需要運行在歸檔方式的資料庫改成ARCHIVELOG方式。
---- 3.2改變不歸檔方式為為歸檔方式
關閉資料庫,備份已有的資料
改變資料庫的運行方式是對資料庫的重要改動,所以要對資料庫做備份,對可能出現的問題作出保護。
啟動Instance ,Mount資料庫但不開啟資料庫,來改變歸檔方式
sqldba lmode=y(svrmgrl)
sqldba>connect internal
sqldba>startup mount
sqldba>alter database archivelog;
使能自動封存
在初始設定檔案init*.ora(一般放ORACLE根目錄的下層目錄dbs下)加參數:
log_archive_start=true
指定存檔的重做登入檔案名稱和存放的位置
同樣是在初始設定檔案init*.ora中加入下面的參數:
log_archive_format=%S.arc
log_archive_dest=/arch12/arch (arch12 是記錄檔存放的目錄)
關閉資料庫,重新啟動資料庫,歸檔方式轉換完成。
---- 4 回收制度
---- 4.1根據資料庫的運行方式和可承受丟失的工作量來決定資料庫的回收制度對於不歸檔方式,我們用的是ORACLE資料庫的邏輯備份Export ,回收的制度是:一個月作一次全備份(x01.dmp),一周作一次累積備份(c*.dmp),一天一次增量備份(I*.dmp),具體的是星期一到星期五作增量備份,星期六做累積備份或全備份,每次做完備份後自動傳到其它的機器上儲存。這些備份都是自動執行的,後面給出程式文本。
---- 對于歸檔方式,我們用的是ORCALE的物理備份:當資料庫建立好以後,做一次物理上的全備份,平時在不關閉資料庫的前提下,一個星期對經常改變的資料檔案做聯機的資料庫資料檔案的物理備份;當資料庫的結構發生改變,如:增加資料表空間,加資料檔案等,如允許關機,正常關閉資料庫,重新做資料庫全備份,否則,備份控制檔案,備份資料檔案照常。聯機的記錄檔我們是寫在陣列上的,不用鏡象和備份。
---- 4.2回收的方法
---- 4.2.1不歸檔方式
---- 我們拿曙光AIX作業系統為例,來講解以下如何做自動備份:
---- a.首先建UNIX使用者 demo/demo
---- b.拷貝oracle使用者下的 .profile 到 demo 使用者下,以保證 demo 使用者可以用 Export命令
---- c.用root使用者登入,編輯 /var/adm/cron/cron.allow 加入使用者名稱demo,這樣demo使用者就有權自動執行Database Backup的shell程式;
---- d.建立Database Backup程式,放到本使用者的下層目錄bin下,並且這些檔案要有可 執行權檔案zlbf1:(增量備份1,星期一執行的程式)
. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i01.dmp
close
bye
!
檔案zlbf2:(增量備份2, 星期二執行的程式)
. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i02.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i02.dmp
close
bye
!
檔案zlbf3:(增量備份3, 星期三執行的程式)
. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i03.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i03.dmp
close
bye
!
檔案zlbf4:(增量備份4, 星期四執行的程式)
. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i04.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i04.dmp
close
bye
!
檔案zlbf5:(增量備份5, 星期五執行的程式)
. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i05.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i05.dmp
close
bye
!
檔案zlbf6:(增量備份6, 星期六執行的程式)
. /u11/demo/.profile
js=`ls c*.dmp|wc -l`
if test $js = 0
then
exp system/manager inctype=CUMULATIVE file=c01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c01.dmp
close
bye
!
fi
if test $js = 1
then
exp system/manger inctype=CUMULATIVE file=c02.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c02.dmp
close
bye
!
fi
if test $js = 2
then
exp system/maneger inctype=CUMULATIVE file=c03.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c03.dmp
close
bye
!
fi
if test $js = 3
then
exp system/manager inctype=COMPLETE file=x01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put x01.dmp
close
bye
!
rm c*.dmp
fi
---- e.在demo 使用者下建一個檔案,假如叫:cron.demo,檔案內容如下
59 22 * * 1 bin/zlbf1
59 22 * * 2 bin/zlbf2
59 22 * * 3 bin/zlbf3
59 22 * * 4 bin/zlbf4
59 22 * * 5 bin/zlbf5
59 22 * * 6 bin/zlbf6
---- f.在demo使用者下執行下面的命令:
crontab cron.demo 執行的結果放到
/var/spool/cron/crontabs/demo檔案裡
---- g.重新啟動cron 進程,命令:kill -1 進程號
---- h.執行結果放在本使用者的郵件裡
---- i.查看結果是否執行,請看:/var/adm/cron/log檔案
---- 4.2.2歸檔方式
---- a. 找到要回收的資料檔案、聯機重做登入檔案、控制檔案和參數檔案
---- b. 正常關閉資料庫,作一次全回收(用作業系統的TAR命令,可以寫成shell程式),然後開啟資料庫供正常使用,shell程式如下:
tar cvf /dev/rmt/ctape2 /u1/oracle/dbs/ctrl1ora7.ctl
/u1/oracle/dbs/ctrl2ora7.ctl
/u1/oracle/dbs/ctrl3ora7.ctl
/u1/oracle/dbs/systora7.dbf
/u1/oracle/dbs/rbsora7.dbf
/u1/oracle/dbs/tempora7.dbf
/u1/oracle/dbs/toolora7.dbf
/u1/oracle/dbs/usrora7.dbf
/ls1/ls1.dbf
>/u1/oracle/dbs/log1ora7.dbf
/u1/oracle/dbs/log2ora7.dbf
/u1/oracle/dbs/log3ora7.dbf
---- a. 經常作聯機的資料表空間和資料檔案的部分回收
首先標記聯機資料表空間回收的開始
alter tablespace 資料表空間名 begin backup;
用作業系統命令備份資料檔案
最後標記聯機的資料表空間回收結束
alter tablespace 資料表空間名 end backup
---- 多個資料表空間可以一起做標記,備份做標記的所有資料檔案後,一起標記結束。
---- d. 當資料庫結構發生改變後,要對它的控制檔案做回收
sqldba >alter database backup
controlfile to ’檔案名稱’ reuse;