如果是計算機專業的同學可以建議做網絡方面的論文研究,這方面比較熱門、資料繁多、可借鑒性強;
其他如數據庫較之算法以及數據結構相對可參考資料更為多壹些。
相關範文:
Oracle數據庫的備份和恢復The Backup and Restoration of Database Oracle
摘要:本文從Oracle的體系結構開始,由原理到實踐,論述了Oracle數據庫備份的方式和策略。包括IMP/EXP, RMAN,OS備份等。
Abstract: Starting from the architecture of ORACLE, this paper discusses the backup method and strategy of database Oracle, including IMP/EXP, PMAN and OS theoretically and practically.
關鍵字:Oracle, 備份, 恢復, RMAN
Keywords: Oracle; Backup; Restoration; RMAN
概述
在大型軟件運行系統中,存在著很多備份策略,如RAID技術,CLUSTER技術等等。很多時候,這些系統的備份就能夠解決數據庫備份的問題。但是,這種備份成本很高。同時,硬件的備份有時根本滿足不了現實的需要,如果用戶不小心誤刪了壹個表,又想恢復的時候,數據庫的備份就變的重要了。
Introduction: In the running system of some big software, there exist many backup strategies such as RAID technology and CLUSTER technology etc. In most cases, these system backup strategies can fulfill the database backup. However the cost is rather high. At the same time, hardware backup sometimes is far from the actual requirement. The database backup becomes very important when a table is deleted by accident and needs to be restored.
Oracle的運行方式
Oracle數據庫有兩種運行方式:壹是歸檔方式(ARCHIVELOG),歸檔方式的目的是當數據庫發生故障時最大限度恢復數據庫,可以保證不丟失任何已提交的數據;二是不歸檔方式(NOARCHIVELOG),只能恢復數據庫到最近的回收點(冷備份或是邏輯備份)。根據數據庫的高可用性和用戶可承受丟失的工作量的多少,對於實時性要求高的數據庫,強烈要求采用為歸檔方式;不歸檔方式只用在那些開發和調試的數據庫等。
如何改變數據庫的運行方式,在創建數據庫時,作為創建數據庫的壹部分,就決定了數據庫初始的存檔方式。壹般情況下為NOARCHIVELOG方式。當數據庫創建好以後,根據我們的需要把需要運行在歸檔方式的數據庫改成ARCHIVELOG方式。 操作如下。
1. 關閉數據庫,備份已有的數據,改變數據庫的運行方式是對數據庫的重要改動,所以要對數據庫做備份,對可能出現的問題作出保護。
2. 修改初試化參數,使能自動存檔。
修改(添加)初始化文件init[SID].ora參數:
log_archive_start=true #啟動自動歸檔
log_archive_format=ARC%T%S.arc #歸檔文件格式
log_archive_dest=/archdir/arch #歸檔路徑
在8i中,可以最多有五個歸檔路徑,並可以歸檔到其它服務器,如備用數據庫(standby database)服務器。
3. 啟動Instance到Mount狀態,即加載數據庫但不打開數據庫。
$> svrmgrl
SVRMGRL> connect internal
SVRMGRL> startup mount
SVRMGRL> alter database archivelog; // 使數據庫運行在歸檔方式
SVRMGRL> alter database open;
Oracle的備份方案
按照備份的方式,可以分為邏輯備份、冷備份(脫機備份)、熱備份(聯機備份),其中冷備份與熱備份又可以合稱為物理備份。按照備份的工具,可以分為EXP/IMP備份、操作系統備份、RMAN、第三方工具備份,如VERITAS等。下面分別介紹Oracle本身提供的幾種備份工具和操作。
1. EXP/IMP備份(邏輯備份)
EXP/IMP屬於邏輯備份的範疇,邏輯備份是指只備份數據庫中的數據但不記錄數據物理位置的壹種備份。導出為數據庫作壹個二進制的備份,並且這個備份只能由其姊妹程序imp(import)來讀取。具體的使用方法如下。(因為EXP和IMP使用上參數基本相同,所以只以EXP為例。)
EXP的命令格式和參數
格式:KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
USERID 必須是命令行中的第壹個參數
關鍵字 說明(默認) 關鍵字 說明(默認)
USERID 用戶名/口令 FULL 導出整個文件 (N)
BUFFER 數據緩沖區的大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名列表
COMPRESS 導入壹個範圍 (Y) RECORDLENGTH IO記錄的長度
GRANTS 導出權限 (Y) INCTYPE 增量導出類型
INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行(Y) PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y) CONSISTENT 交叉表壹致性
LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度 FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
註:可以通過exp -help命令查看exp的使用方法;imp -help命令查看imp的使用方法.
2. 操作系統備份(冷備份和熱備份)
操作系統備份有兩類,冷備份(Cold backup)和熱備份(Hot backup)。操作系統備份和上面的邏輯備份有本質的區別,它將拷貝整個的數據文件。
冷備份在文件級備份開始前數據庫必須徹底關閉。關閉操作必須用帶有normal、immediate、transaction選項的shutdown來執行。
數據庫使用的每個文件都被備份下來,這些文件包括: 所有數據文件、所有控制文件、所有聯機重做日誌文件和INIT.ORA文件(建議)。
作冷備份壹般步驟是:
1) 正常關閉要備份的實例(instance);
2) 備份整個數據庫到壹個目錄
3) 啟動數據庫
即:
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >!cp <file> <backup directory>
or
SVRMGRL >!tar cvf /dbbak/fullbk.tar /u01/oracle/oradata/dbname
SVRMGRL >startup
熱備份熱備份是當數據庫打開時的操作系統備份。熱備份只能用於ARCHIVELOG方式的數據庫。熱備份沒有必要備份聯機日誌,但必須是歸檔狀態,在實例恢復的時候,可能需要用到歸檔日誌。當前聯機日誌壹定要保護好或是處於鏡相狀態,當前聯機日誌的損壞,對於數據庫的損壞是巨大的,只能以數據的丟失來進行數據庫的恢復工作。對於臨時表空間,存放的是臨時信息,在熱備份是也可以考慮不用備份,如果臨時文件發生故障,可以刪除該數據文件與表空間,重建壹個臨時表空間。
熱備份備份的內容和冷備份備份的內容壹樣,操作壹般步驟是:
1) 備份的表空間通過使用ALTER TABLESPACE …… BEGIN BACKUP使表空間進入熱備份方式。
2) 用類似冷備份的操作系統命令對組成表空間的數據文件進行拷貝。
3) 使用ALTER TABLESPACE …… END BACKUP命令使表空間脫離熱備份方式。
4) 使用ALTER DATABSE …… BACKUP CONTROLFILE命令備份控制文件。
即:
SVRMGRL>connect internal;
SVRMGRL>alter tablespace User begin backup;
SVRMGRL>!cp /u01/oradata/dbname/user01.ora /dbbak/user01.ora
SVRMGRL>alter tablespace User end backup;
SVRMGRL>alter database backup controlfile to <fielname>;
or
SVRMGRL>alter database backup controlfile to trace;
註意:因為熱備份的時候,用戶還在操作數據庫,所以最好是讓每個表空間處於備份狀態的時間最短,這樣就要求壹個表空間壹個表空間的備份,不要壹起使表空間處於備份狀態而同時拷貝數據文件。
3. RMAN
Recovery Manager(RMAN)是壹個使DBA能很方便地對數據庫執行備份和恢復任務的Oracle應用工具,能夠提供DBA對企業數據庫備份與恢復操作的集中控制。RMAN只能用於ORACLE8或更高的版本中。它能夠備份整個數據庫或數據庫部件,其中包括表空間、數據文件,控制文件和歸檔文件。RMAN可以按要求存取和執行備份和恢復。
RMAN支持六種不通的類型的備份,經常用到的有兩種:
FULL 數據庫全備份,包括所有的數據塊。
INCREMENTAL 增量備份,是指只備份在同級別或更低級別上進行的前壹次備份之後的作過改動的那些數據塊。這其中需要壹個0級的增量作為增量的基礎,它備份包括全部曾經被數據庫使用過的數據塊(但不是完全數據庫備份)。RMAN***可以支持7級增量。
BACKUP,RESTORE,RECOVER是RMAN最基本的三個命令,分別可以進行數據庫的備份,復原以及恢復操作。 restore命令用於恢復來自備份集或映像拷貝的數據文件、控制文件或歸檔重做日誌。recovery命令用於進行介質恢復應用重做日誌文件。
RMAN的備份信息壹般保存在恢復目錄中,恢復目錄也是壹個數據庫,只不過這個數據庫用來保存備份信息,壹個恢復目錄可以用來保存多個數據庫的備份信息。 RMAN也可以在沒有恢復目錄(NOCATALOG)下運行,這個時候備份信息保存在控制文件。這種情況比較危險,因為壹旦控制文件被破壞,將導致所有數據庫備份信息的丟失和恢復的失敗,而且,沒有恢復目錄,很多RMAN的命令將不被支持。所以對於重要的數據庫,建議創建恢復目錄。
創建恢復目錄壹般有以下步驟。(例子數據庫為db)
1) 為目錄創建壹個單獨的表空間
SQL>create tablespace tsrman datafile ’/dbbak/rman/rsrman.dbf’ size 50M;
2) 創建RMAN用戶
SQL>create user rman identified by rman default tablespace rsrman temporary tablespace temp;
3) 給RMAN授予權限
SQL>grant connect, resource, recovery_catalog_owner to rman;
4) 打開RMAN
$rman
5) 連接恢復目錄數據庫
RMAN>connect catalog rman/rman@db
6) 創建恢復目錄
RMAN>create catalog tablespace tsrman
在對某個數據庫進行備份之前,必須先在恢復目錄上註冊該數據庫,這壹過程操作如下(假定目標數據庫連接字符串為db100)。
1) 連接到恢復目錄數據庫
$rman rman/rman@db
2) 在RMAN中連接到目標數據庫(即要進行備份的數據庫)
RMAN>connect target sys/change_on_install@db100
3) 註冊數據庫
RMAN>register database;
註冊完數據庫後,就可以進行數據庫的備份了。有完全數據庫備份、表空間備份、控制文件備份、和歸檔日誌備份等。操作分別如下。
1) 完全數據庫備份
要求:ARCHIVELOG模式,在DB OPEN的情況下進行數據庫完全備份。
RMAN>run{
allocate channel c1 type=disk;
backup database;
release channel c1;
}
2) 表空間備份
要求:ARCHIVELOG模式
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users” filesperset 3 format ‘aatst_%t%s.%p’;
release channel c1;
}
3) 控制文件備份
RMAN>run{
allocate channel c1 type=disk;
backup current controlfile tag=weekly_sat_backup;
release channel c1;
}
在對數據庫進行完全備份時,控制文件自動包含其中。也可以在表空間或數據文件的備份中包含壹個控制文件。
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users”
filesperset 3 format ‘aatst_%t%s.%p’;
include current controlfile;
release channel c1;
}
4) 歸檔日誌備份
通過查詢數據字典表V$ARCHIVED_LOG獲取要備份的日誌序列號,然後執行命令:
RMAN>run{
allocate channel c1 type=disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
release channel c1;
}
Oracle的備份策略
正確的備份策略不僅能保證數據庫服務器的24*7的高性能的運行,還能保證備份與恢復的快速性與可靠性。我們將以RMAN的多級增量備份作為壹個備份策略的例子來討論。采用多級備份就是為了減少每天備份所需要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有壹個權衡。比如只要進行壹個數據庫的全備份,然後就只備份歸檔也可以保證能把數據庫恢復到最新的狀態,但是這樣的恢復時間將是不可容忍的。多級備份也正是為了解決這種問題,結合某些應用的特點,可以采用如下的備份策略:
每個月做壹個數據庫的全備份(包括所有的數據和只讀表空間); 每個星期壹做壹次零級備份(不包含只讀表空間); 每個星期三做壹次壹級備份; 每天做壹次二級備份。 每天做壹次恢復目錄的熱備份。 任何數據庫的更改需要重新同步CATALOG目錄並重新備份(如添加數據文件)或重新備份(如修改表空間為只讀)。 每次備份後都可以備份歸檔日誌或定期備份歸檔日誌。如果可能,可以直接備份到磁帶上。Oracle的恢復
下面的操作約定恢復目錄存儲在db118中,目標數據庫是db100。
1. 數據庫恢復
1) 啟動SQL*PLUS,使用正確的init.ora文件,使用NOMOUNT選項啟動目標數據庫實例。
2) 啟動RMAN並連接到恢復目錄,如下:
$rman catalog rman/rman@db118
恢復管理器: Release 9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
連接到恢復目錄數據庫
RMAN>
3) 連接到目標數據庫
RMAN>connect target internal/oracle@db100
連接到目標數據庫: db (DBID=1142471523)
4) 壹旦連接到目標數據庫,執行restore命令執行全數據庫恢復
RMAN>run{
2>allocate channel c1 type disk;
3>restore database;
4>release channel c1;
}
2. 表空間和數據文件恢復
要執行表空間或數據文件恢復,數據庫必須以ARCHIVELOG模式運行,並且用戶需要擁有介質恢復所需的歸檔重做日誌文件。在試圖恢復表空間之前,必須保證表空間已脫機。RMAN命令如下:
run{
allocate channel c1 type disk;
sql “alter tablespace users_data offline immediate”;
restore tablespace users_data;
recover tablespace users_data;
sql “alter tablespace users_data online”;
}
上面的腳本執行了以下的工作:
1) RMAN分配通道從c1用於恢復操作。
2) 將表空間users_data脫機
3) RMAN從備份集中恢復屬於表空間的數據文件
4) 通過介質恢復提供所需的歸檔日誌文件,恢復屬於表空間users_data的數據文件。
5) RMAN將表空間聯機。
在腳本執行期間,如果不能把數據文件恢復到指定位置,在執行restore命令前使用set newname命令。
3. 控制文件恢復
1) 啟動SQL*PLUS,使用正確的init.ora文件,使用NOMOUNT選項啟動目標數據庫實例。
2) 啟動RMAN並連接到恢復目錄,如下:
$rman catalog rman/rman@ora8i.oracle
恢復管理器: Release 9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
連接到恢復目錄數據庫
RMAN>
3) 連接到目標數據庫
RMAN>connect target internal/oracle@demo.oracle
連接到目標數據庫: db (DBID=1142471523)
4) 壹旦連接到目標數據庫,執行restore命令恢復控制文件
RMAN>run{
2>allocate channel c1 type disk;
3>restore controlfile;
4>}
小結
保證Oracle數據庫的安全是系統安全的重要組成部分,必須要設計完善的數據庫備份和恢復方案。Oracle提供的各種工具結合起來使用能夠使數據庫的備份和恢復變得簡單。在實際的Oracle數據庫的備份和恢復中,會有許多不通的和復雜的情況出現,針對不同的情況,要本著使數據具有最大的可恢復性和恢復時間最短的原則去進行數據庫的恢復,這需要大量的實踐和經驗積累。
參考文獻
[1] Oracle8i Backup and Recovery Guide Oracle Document
[2] Oracle8i Recovery Manager User’s Guide and Reference Oracle Document
[3] Oracle9i:A Beginner’s Guide (美) Michael Abbey Michael Corey Ian Abramson 2002.3 機械工業出版社
[4] Oracle8i備份與恢復手冊 (美)Rama Velpuri Anand Adkoli 蔣蕊 王磊等譯 2001.9 機械工業出版社
僅供參考,請自借鑒
希望對您有幫助