国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Oracle數據庫備份與恢復精華資料集錦

瀏覽:18日期:2023-11-27 15:41:10
這篇論壇文章(賽迪網技術社區)主要介紹了Oracle數據庫備份與恢復的具體方法及相關案例,詳細內容請大家參考下文:

冷備份

1、備份步驟:

冷備份具有很多優良特性,快速,方便,以及高效。一次完整的冷備份步驟是:

1.首先關閉數據庫(shutdown normal)

2.拷貝相關文件到安全區域(利用操作系統命令拷貝數據庫的所有的數據文件、日志文件、控制文件、參數文件、口令文件等(包括路徑))

3.重新啟動數據庫(startup)

以上的步驟可以用一個腳本來完成操作:

su -oracle < sqlplus /nolog

connect / as sysdba

shutdown immediate;

!cp 文件 備份位置(所有的日志、數據、控制及參數文件);

startup;

exit;

2、恢復步驟:

恢復的時候,相對比較簡單了,我停掉數據庫,將文件拷貝回相應位置,重啟數據庫就可以了,當然也可以用腳本來完成。

熱備份

1、備份步驟:

當需要做一個精度比較高的備份,而且我們的數據庫不可能停掉(少許訪問量)時,這個情況下,我們就需要歸檔方式下的備份,就是下面討論的熱備份。熱備份可以非常精確的備份表空間級和用戶級的數據,由于它是根據歸檔日志的時間軸來備份恢復的,理論上可以恢復到前一個操作,甚至就是前一秒的操作。具體步驟如下:

1.通過視圖v$database,查看數據庫是否在Archive模式下:

SQL> select log_mode from v$database;

如果不是Archive模式

則設定數據庫運行于歸檔模式下:SQL>shutdown immediate

SQL>startup mount

SQL> alter database archivelog;

SQL> alter database open;

如果Automaticarchival顯示為“Enabled”,則數據庫歸檔方式為自動歸檔。否則需要手工歸檔,或者將歸檔方式修改為自動歸檔,如:

正常shutdown數據庫,在參數文件中init.ora中加入如下參數

SQL>shutdown immediate

修改init.ora:

LOG_ARCHIVE_START=TRUE

LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(歸檔日值存放位置可以自己定義)

SQL>startup

然后,重新啟動數據庫,此時Oracle數據庫將以自動歸檔的方式工作在Archive模式下。其中參數LOG_ARCHIVE_DEST1是指定的歸檔日志文件的路徑,建議與Oracle數據庫文件存在不同的硬盤,一方面減少磁盤I/O競爭,另外一方面也可以避免數據庫文件所在硬盤毀壞之后的文件丟失。歸檔路徑也可以直接指定為磁帶等其它物理存儲設備,但可能要考慮讀寫速度、可寫條件和性能等因素。

注意:當數據庫處在ARCHIVE模式下時,一定要保證指定的歸檔路徑可寫,否則數據庫就會掛起,直到能夠歸檔所有歸檔信息后才可以使用。另外,為創建一個有效的備份,當數據庫在創建時,必須履行一個全數據庫的冷備份,就是說數據庫需要運行在歸檔方式,然后正常關閉數據庫,備份所有的數據庫組成文件。這一備份是整個備份的基礎,因為該備份提供了一個所有數據庫文件的拷貝。(體現了冷備份與熱備份的合作關系,以及強大的能力)

2.備份表空間文件:

a.首先,修改表空間文件為備份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;

b.然后,拷貝表空間文件到安全區域 !CP tablespace_name D_PATH;

c.最后,將表空間的備份模式關閉 ALTER TABLESPACE tablespace_name END BACKUP;

3.對歸檔日志文件的備份:

停止歸檔進程-->備份歸檔日志文件-->啟動歸檔進程

如果日志文檔比較多,我們將它們寫入一個文件成為一個恢復的參考:$ files `ls <歸檔文件路徑>/arch*.dbf`;export files

4.備份控制文件:

SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

當然,我們也可以將上面的東東寫為一個腳本,在需要的時候執行就可以了:

腳本范例:

su -oracle < sqlplus /nolog

connect / as sysdba

ALTER TABLESPACE tablespace_name BEGIN BACKUP

!CP tablespace_name D_PATH

ALTER TABLESPACE tablespace_name END BACKUP

alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

!files `ls <歸檔文件路徑>/arch*.dbf`;export files

2、恢復步驟:

熱備份的恢復,對于歸檔方式數據庫的恢復要求不但有有效的日志備份還要求有一個在歸檔方式下作的有效的全庫備份。歸檔備份在理論上可以無數據丟失,但是對于硬件以及操作人員的要求都比較高。在我們使用歸檔方式備份的時候,全庫物理備份也是非常重要的。歸檔方式下數據庫的恢復要求從全備份到失敗點所有的日志都要完好無缺。

恢復步驟:LOG_ARCHIVE_DEST_1

shutdown數據庫。

將全備份的數據文件放到原來系統的目錄中。

將全備份到失敗點的所有歸檔日志放到參數LOG_ARCHIVE_DEST_1所指定的位置。

利用sqlplus登陸到空實例。(connect / as sysdba)

然后 startup mount

set autorecovery on

recover database;

alter database open;

這樣,熱恢復就算完工。

Windows平臺的oracle備份(Veritas BE)

通過Backup Exec實施Oracle災難恢復很簡單。

1.需要的數據:

1、FULL CLOSED備份

shutdown數據庫(不要用shutdown abort強行關閉),實施一個文件級備份,備份全部的Oracle相關文件,包括Windows系統文件,系統狀態和Oracle程序文件和數據文件等內容。

這個冷備份對于快速恢復Oracle數據庫系統非常關鍵,如果沒有它,系統被破壞后只能重新安裝再恢復,這要比直接恢復冷備份慢得多,也更復雜。

每當數據庫或表單的物理結構或邏輯結構有變化時都應該重新創建這個冷備份。

2. FULL ONLINE備份

這個備份要通過Backup Exec Agent for Oracle Server來完成,要備份全部表空間,歸檔日志和控制文件,通過這種方式備份,Oracle會將所有緩存內容寫入文件,將online redo log做歸檔,所以數據庫備份中包含的是備份時數據庫的即時點信息,完整而且有效。以后做恢復時,可以恢復到最后一次FULL ONLINE備份的狀態。

2、恢復過程:

1. 重新安裝Windows系統和Remote Agent for Windows Server,為恢復Oracle服務器準備環境。

2. 恢復最后一次FULL CLOSED備份,重新啟動計算機。

此時Windows系統,Oracle數據庫系統都是完整的,只是Oracle數據庫中可能不是最新的數據。Backup Exec Agent for Oracle Server也不用重新安裝了。

3. 用SQLPlus用SYS以sysdba身份連接到數據庫系統,關閉數據庫。

shutdown immediate + < enter >

4. 通過介質服務器恢復最新的FULL ONLINE備份,恢復作業屬性的高級選項中,確保選中了“Restore over Existing files(覆蓋現存文件)” 選項。

要想成功的恢復數據庫,在最后一次FULL CLOSED備份之后的所有redo log必須都已經成功歸檔并備份。少了哪一個,數據庫就無法恢復到最后的FULL ONLI NE備份時的狀態。

通過Oracle的alert log可以看到數據庫的恢復需要哪些歸檔日志,以及你應該把它們恢復到什么位置。

5. 恢復完成后,用SYS用戶以sysdba身份連接到數據庫,將數據庫加載到mount階段:

startup mount + < enter >

6. 數據庫mount完成后,執行recover過程:

recover database using backup controlfile + < enter >

數據庫會提示你需要哪些日志:

ORA-00279: Change 36579 generated at needed for thread 1

ORA-00289: Suggestion : Oracle_HomeOradata%SID%T00036579.ARC

ORA-00280: {=Suggested | filename | AUTO | FROM logsource | CANCEL}

最簡單的方法是選自動恢復:

auto + < enter >

系統會在init.ora文件中定義的位置上查找所有必需的日志并依次應用它們,最后一個要應用的日志是online redo log,實際上它并不包括任何的transaction,只有一個SCN,可以略過,但是自動恢復過程會因為找不到相應的文件而報錯:

ORA-00308: cannot open archived log

E:ORACLEORADATAKIMSTADARCHIVEKIMSTADT00036949.ARC'

ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) The system cannot find the file specified.

為此輸入以下命令(until cancel參數使我們可以在需要的時候中止恢復過程):

recover database until cancel using backup controlfile +

這樣在數據庫恢復的最后階段再次提示前面的錯誤時,我們就可以中止恢復過程:

cancel + < enter >

這時除了最后一個online redo log以外,所有的commit transaction都已經提交到數據庫之中了,完成后會顯示:

Media recovery canceled

實際上恢復過程已經正常完成了。

最后是打開數據庫并同步日志序列號:

alter database open resetlogs + < enter >

至此,Oracle數據庫被成功恢復到最后一次Full Online備份。

說明:Oracle 8i可以用internal賬號完成DBA操作。9i取消了internal賬號,SYS賬號代替它了。為了以DBA身份登錄,啟動SQL Plus時應該加nolog參數,進入之后再登錄,connect username/password as sysdba。

具體示例:

1. 用Oracle數據庫的熱備份來重建數據庫

為了檢驗我為公司開發的Oracle數據庫在線自動備份系統,我根據“Oracle數據庫在線自動備份系統”產生的備份文件來重建和恢復Oracle數據庫。為了讓大家共享其方法和步驟(也適合于用其它方式對Oracle做的熱備份進行重建數據庫)現整理如下。

一、系統環境

本次測試所使用的系統環境如下:

1. 硬件環境

服務器:Dell PowerEdge 1300 (CPU:PⅢ 550MHz 內存:128MB 硬盤:36GB)

2. 軟件環境

操作系統:UnixWare 7.1

數據庫: Oracle 8.1.6 for Unix 企業版,SID:ora816

Oracle安裝路徑:/home/oracle

備份文件:所有數據庫文件、控制文件、初始化文件、數據庫備份以來的所有歸檔日志文件。

二、恢復步驟

下面根據從用戶處帶回來的備份數據,在一臺新的服務器重建Oracle數據庫。其詳細步驟如下:

1. 創建數據庫恢復使用的環境

在新的Dell服務器上,安裝與原來的數據庫服務器相同的操作系統UnixWare 7.1;然后安裝與原數據庫相同版本的Oracle 8.1.6 for Unix 企業版。

2. 刪除新服務器上的Oracle實例

啟動新數據庫服務器上的Oracle,在sqlplus中,查找到數據庫文件的路徑,并保存在當前路徑下的文件file_name.txt中:

$ sqlplus system/manager

SQL> spool file_name.txt

SQL> select file_name from sys.dba_data_files;

SQL> spool end

SQL>exit

關閉新服務器的Oracle,然后根據文件file_name.txt中的路徑,刪除新裝的Oracle實例的所有數據庫文件。

注:從本步開始所有操作都是用Oracle用戶登錄操作系統(Unix)后進行。文中所有的黑色粗體5號字符(標題除外)的語句可以直接執行,黑色傾斜粗體5號字符的語句需要修改后執行。

3. 恢復數據庫文件

把備份的所有數據庫文件用Ftp上傳新的數據庫服務器中的相同路徑下。如果原來的路徑已不存在,可以拷貝到其他路徑下,恢復時詳細處理方法見步驟7中<2>。

4. 恢復初始化參數文件

把備份的initSID.ora文件用Ftp上傳到新數據庫服務器中Oracle實例的initSID.ora文件位置,覆蓋之。其位置一般在$ORACLE_HOME/dbs目錄下。

5. 恢復控制文件

把備份的ControlFile.bak文件用Ftp上傳到新數據庫服務器中Oracle實例的各個鏡像路徑下,并按初始化參數文件initSID.ora中的該項的位置和名稱命名。

control_files = ('/home/oracle/app/oracle/oradata/ora816/control01.ctl', '/home/oracle/app/oracle/oradata/ora816/control02.ctl','/home/oracle/app/oracle/oradata/ora816/control03.ctl')

其路徑如有變動,在初始化參數文件initSID.ora中修改如上內容的路徑和名稱,使其實際路徑與該參數的路徑一致。

6. 恢復歸檔日志文件

把數據庫備份后的歸檔日志用Ftp上傳到新數據庫服務器的相同路徑下。路徑如有變動可以根據初始化參數文件initSID.ora中如下位置進行修改,使其實際路徑與該參數的路徑一致。

log_archive_dest_1 = 'location=/home/oracle/app/oracle/admin/ora816/arch'

7. 恢復數據庫

經過以上6個步驟,把所有的備份文件已經上傳到了新數據庫服務器中。下面開始根據這些文件恢復并啟動數據庫,先在操作系統的提示符下做如下操作:

$svrmgrl

SVRMGR>connect internal

SVRMGR>startup mount

<1> 創建口令文件

如果原來的數據庫配置了口令文件,并且在mount數據庫時報如下錯誤:

ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'

可以到/home/oracle/app/oracle/product/8.1.6/dbs/路徑下,用以下命令創建口令文件:

orapwd

其用法如下:

Usage: orapwd file= password= entries=

where

file - name of password file (mand),(口令文件的命名方式為:orapwSID)

password - password for SYS and INTERNAL (mand),

entries - maximum number of distinct DBA and OPERs (opt),

There are no spaces around the equal-to (=) character.

例如: orapwd file=orapwora816 password=manager

然后重新執行如下語句mount數據庫:

SVRMGR>startup mount。

<2> 修改數據庫文件的路徑

如果在上述的步驟3中修改了恢復的數據庫文件的路徑,可以用如下語句對數據庫文件重新命名 :

alter database rename file 'old_file' to 'new_file';

如把原來路徑/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:

SVRMGR>alter database rename file

'/home/oracle/app/oracle/oradata/ora816/system01.dbf'

to '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';

按照上面的方法把所有修改路徑的數據庫文件重新命名。

<3> 根據控制文件和歸檔日志文件恢復數據庫

下面開始用控制文件和歸檔日志文件恢復數據庫:

SVRMGR>recover database using backup controlfile until cancel;

出現如下提示:

ORA-00279: change 50971 generated at 08/23/2002 09:21:27 needed for thread 1

ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc

ORA-00280: change 50971 for thread 1 is in sequence #399

Specify log: {=suggested | filename | AUTO | CANCEL}輸入:

auto

如果有如下提示,則表示成功。

ORA-00279: change 51007 generated at 08/23/2002 11:23:13 needed for thread 1

ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc

ORA-00280: change 51007 for thread 1 is in sequence #400

ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc' noy

Log applied.

意外處理:如果其它提示可能是需要的日志文件不存在,檢查ORA-00289中該文件是否存在。

直到出現如下提示:

ORA-00279: change 51011 generated at 08/23/2002 11:23:45 needed for thread 1

ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_401.arc

ORA-00280: change 51011 for thread 1 is in sequence #401

ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc' noy

ORA-00308: cannot open archived log '/home/oracle/app/oracle/admin/ora8/arch

/arch_1_401.arc'

ORA-27037: unable to obtain file status

Intel SVR4 UNIX Error: 2: No such file or directory

Additional information: 3

<4> 重置日志

SVRMGR>alter database open resetlogs;

意外處理:如果提示創建日志的路徑不存在,按提示路徑創建目錄。然后再重置日志。

<5> 重啟數據庫,完成恢復

SVRMGR>shutdown immediate

SVRMGR>startup

ORACLE instance started.

Total System Global Area 123437040 bytes

Fixed Size 69616 bytes

Variable Size 106418176 bytes

Database Buffers 16777216 bytes

Redo Buffers 172032 bytes

Database mounted.

Database opened.

數據庫正常打開,數據庫重建恢復成功。

2. Oracle9i RMAN 備份及恢復步驟

在這里沒有討論多么深入的RMAN技術,也沒有告訴大家這樣去編寫備份腳本,這并不是我的初衷,我只想把我會的寫出來,和大家一起學習,一起進步,謝謝。

1、切換服務器歸檔模式,如果已經是歸檔模式可跳過此步:

%sqlplus /nolog (啟動sqlplus)

SQL> conn / as sysdba (以DBA身份連接數據庫)

SQL> shutdown immediate; (立即關閉數據庫)

SQL> startup mount (啟動實例并加載數據庫,但不打開)

SQL> alter database archivelog; (更改數據庫為歸檔模式)

SQL> alter database open; (打開數據庫)

SQL> alter system archive log start; (啟用自動歸檔)

SQL> exit (退出)

2、連接:

%rman target=rman/rman@mydb (啟動恢復管理器)

3、基本設置:

RMAN> configure default device type to disk; (設置默認的備份設備為磁盤)

RMAN> configure device type disk parallelism 2; (設置備份的并行級別,通道數)

RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (設置備份的文件格式,只適用于磁盤設備)

RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (設置備份的文件格式,只適用于磁盤設備)

RMAN> configure controlfile autobackup on; (打開控制文件與服務器參數文件的自動備份)

RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (設置控制文件與服務器參數文件自動備份的文件格式)

4、查看所有設置:

RMAN> show all

5、查看數據庫方案報表:

RMAN> report schema;

6、備份全庫:

RMAN> backup database plus archivelog delete input; (備份全庫及控制文件、服務器參數文件與所有歸檔的重做日志,并刪除舊的歸檔日志)

7、備份表空間:

RMAN> backup tablespace system plus archivelog delete input; (備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)

8、備份歸檔日志:

RMAN> backup archivelog all delete input;

9、復制數據文件:

RMAN> copy datafile 1 to '/oracle/dbs/system.copy';

10、查看備份和文件復本:

RMAN> list backup;

11、驗證備份:

RMAN> validate backupset 3;

12、從自動備份中恢復服務器參數文件:

RMAN> shutdown immediate; (立即關閉數據庫)

RMAN> startup nomount; (啟動實例)

RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (從自動備份中恢復服務器參數文件)

13、從自動備份中恢復控制文件:

RMAN> shutdown immediate; (立即關閉數據庫)

RMAN> startup nomount; (啟動實例)

RMAN> restore controlfile to '/backup1' from autobackup; (從自動備份中恢復控制文件)

13、恢復和復原全數據庫:

RMAN> shutdown immediate; (立即關閉數據庫)

RMAN> exit (退出)

%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (將數據文件重命名)

%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (將數據文件重命名)

%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (將數據文件重命名)

%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (將數據文件重命名)

%rman target=rman/rman@mydb (啟動恢復管理器)

RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化參數文件啟動數據庫)

RMAN> restore database; (還原數據庫)

RMAN> recover database; (恢復數據庫)

RMAN> alter database open; (打開數據庫)

14、恢復和復原表空間:

RMAN> sql 'alter tablespace users offline immediate'; (將表空間脫機)

RMAN> exit (退出恢復管理器)

%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (將表空間重命名)

%rman target=rman/rman@mydb (啟動恢復管理器)

RMAN> restore tablespace users; (還原表空間)

RMAN> recover tablespace users; (恢復表空間)

RMAN> sql 'alter tablespace users online'; (將表空間聯機)

15、增量備份與恢復:

第一天的增量基本備份:

RMAN> backup incremental level=0 database plus archivelog delete input;

第二天的增量差異備份:

RMAN> backup incremental level=2 database plus archivelog delete input;

第三天的增量差異備份:

RMAN> backup incremental level=2 database plus archivelog delete input;

第四天的增量差異備份:

RMAN> backup incremental level=1 database plus archivelog delete input;

第五天的增量差異備份:

RMAN> backup incremental level=2 database plus archivelog delete input;

第六天的增量差異備份:

RMAN> backup incremental level=2 database plus archivelog delete input;

第七天的增量差異備份:

RMAN> backup incremental level=0 database plus archivelog delete input;

增量恢復:

RMAN> shutdown immediate;

RMAN> exit

%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak

%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak

%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak

%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak

%rman target=rman/rman@mydb

RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora

RMAN> restore database;

RMAN> recover database;

RMAN> alter database open;

標簽: Oracle 數據庫
主站蜘蛛池模板: 欧美精品videosbestsex另类 | 日韩一级在线播放免费观看 | 看全色黄大色黄大片毛片 | 亚洲精品中文字幕一区在线 | 欧洲成人免费视频 | 国产一区二区三区欧美精品 | 亚洲精品日本高清中文字幕 | 国产成人精品日本亚洲语音2 | 最新怡红院全部视频在线 | 好看的看黄a大片爽爽影院 好男人天堂网 | 美女张开腿让男人桶的 视频 | 国产精品吹潮在线播放 | 欧美jizzhd精品欧美另类 | 亚洲人免费视频 | 日韩成人中文字幕 | 国产一级一国产一级毛片 | 欧美精品网站 | 高清国产在线观看 | 国产一区二区三区精品久久呦 | 久久久久网站 | 欧美日韩视频一区三区二区 | a毛片在线播放 | 韩国毛片在线 | 午夜丝袜美腿福利视频在线看 | 日本三级s级在线播放 | 欧美精品综合一区二区三区 | 欧美人成人亚洲专区中文字幕 | 欧美成人亚洲国产精品 | 黄色成人毛片 | 国产盗摄视频 | 欧美成性色 | 国产九九在线观看播放 | 国产亚洲一区在线 | 亚洲自偷自偷图片在线高清 | 欧美5g影院天天爽天天看 | 日产日韩亚洲欧美综合搜索 | 在线一区国产 | 国产精品亚洲精品 | 国产精品密蕾丝视频 | 日韩午夜在线观看 | 国产激情一区二区三区成人91 |