ORACLE 資料庫備份技術(轉)

post0發表於2007-08-10
ORACLE 資料庫備份技術(轉)[@more@]

---- 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使用者就有權自動執行資料庫備份的shell程式;

---- d.建立資料庫備份程式,放到本使用者的下層目錄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;

---- 5 結束語

---- 一套完善的備份制度是資料庫安全執行的有利保障,文章所介紹的可供同行們參考

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-942561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章