標籤:
Database Backup與恢複
實驗目的
掌握oracle資料庫常用的備份方法。
實驗內容
(1)資料備份的方法
實驗步驟
1、Database Backup
1)Oracle物理備份與恢複
.0.準備工作:
(1) 查看資料庫是否運行于歸檔模式下:
請給出查詢的結果:
乾淨的關閉資料庫,做一個完全的冷備份。
提示:a.使用showdown命令; b.複製資料檔案、記錄檔和控制檔案到安全地方
(2) 把資料庫改為歸檔模式
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
設定成自動歸檔
SQL> alter system set log_archive_start = true scope=spfile;
1.資料庫系統資料檔案和回退段遭破壞的情況下的恢複。此時資料庫的狀態是關閉的。
(1) 先啟動資料庫,用scott使用者建立test表,並插入兩條資料。
SQL> create table scott.test (id int);
表已建立。
SQL> insert into scott.test values(1);
已建立 1 行。
SQL> insert into scott.test values(2);
已建立 1 行。
SQL> commit;
提交完成。
(2)類比資料庫遭意外被迫關閉,並且系統資料檔案丟失。
SQL> shutdown abort
把oracle服務停掉,移除SYSTEM01.dbf和UNDOTBS01.DBF檔案(即將這兩個檔案移到其他檔案夾下)。
(3)啟動服務,啟動資料庫, 提示如下錯誤
a. 啟動服務
b. 啟動資料庫
SQL> startup
請給執行結果:
(4)把備份的SYSTEM01.dbf和UNDOTBS01.DBF檔案複製回去
a. 執行以下命令:
請給執行結果:
然後就可以開啟資料庫,查看scott使用者的test表。
SQL> alter database open;
SQL> select * from scott.test;
請給執行結果:
實2:
資料庫是開啟的,這時損壞的檔案是使用者的資料檔案而不是system和undo檔案。
(1)用scott使用者在users資料表空間建立test1表
SQL> create table scott.test1(id int)
2 tablespace users;
表已建立。
(2) 插入兩條資料
SQL> insert into scott.test1 values(1);
已建立 1 行。
SQL> insert into scott.test1 values(2);
已建立 1 行。
SQL> commit;
提交完成。
(3)當前日誌歸檔
SQL> alter system archive log current;
系統已更改。
(4)現在破壞users資料表空間,使其離線,然後移除users01.dbf到一個指定檔案夾(備份)
SQL> alter tablespace users offline;
資料表空間已更改。
執行:SQL> alter tablespace users online;
請給執行結果:
此時出現錯誤,users資料表空間不能線上了。這時把備份的users01.DBF還原回去。
然後,執行:SQL> recover tablespace users;
(5)完成介質恢複。
SQL> alter tablespace users online;
資料表空間已更改。
SQL> select * from scott.test1;
請給執行結果:
實3:資料檔案沒有備份(不能使system和undo檔案)的恢複。
(1)建立資料表空間testspace
在SQL Plus中依次執行以下語句,給出最後的執行結果:
SQL> create tablespace testspace datafile ‘C:\oracle\product\10.1.0\db_1\TestDB\testspace.dbf‘ size 10m;
SQL> create table scott.test3(id int)
tablespace testspace;
SQL> commit;
SQL> alter system switch logfile;
SQL> insert into scott.test3 values(1);
SQL> commit;
SQL> alter tablespace testspace offline;
SQL> select * from scott.test3;
請給執行結果:
(2)由於沒有備份資料檔案,需重新建立一個
SQL> alter database create datafile
‘C:\oracle\product\10.1.0\db_1\TestDB\testspace.dbf‘;
SQL> recover tablespace testspace;
(3) 完成恢複
SQL> alter tablespace testspace online;
資料表空間已更改。
SQL> select * from scott.test3;
請給執行結果:
2)邏輯備份:匯入匯出實驗
實4:模式的匯入匯出
案例:將scott/tiger使用者對應的模式匯出,通過匯出檔案將其匯入到Test使用者(為一個空使用者)對應的模式中,包括該模式中的所有對象的定義和資料。
1.準備工作
(1)建立使用者:
Create user test
Identified by test;
(2)授權:
註:這兒做了簡化處理,實際工作中,盡量不要授DBA許可權給一般使用者。
2.資料的匯出與匯入
(1)資料準備
以scott身份登入: conn scott/tiger
①建立測試用表:
create table jobs(
name varchar2(20),
job varchar2(40),
sales number);
加入資料:
insert into jobs values(‘IT_Test‘,‘software testing‘,3000);
提交:
commit;
②建立測試用表scott_test
create table scott_test(
name varchar2(10),
age number);
加入資料:
insert into scott_test values(‘manager‘,‘40‘);
(2)以管理員身份登入:
conn as sysdba;
alter system enable restricted session;
(3)匯出資料庫:
在DOS提示符下執行:
exp system/ testdb full=y file=test.dmp
執行時,會要求輸入system的口令,請根據實際情況輸入。
(4)恢複資料庫運行狀態
conn as sysdba;
alter system disable restricted session;
(5)進行資料庫的匯入:
以下是一樣本:
imp system/testdb fromuser=scott touser=test tables=(scott_test,jobs) file=test.dmp ignore=y;
請給執行結果:
3.結果檢驗
對匯入的資料進行查詢,以確定匯入是否成功,給出結果:
(1)以test身份登入到資料庫
(2)查詢剛才匯出(匯入)表中的某個表(如Jobs):
請給執行結果:
實驗小結:
1. 備份原則與策略:在剛建立資料庫時,應該立即進行資料庫的完全備份;
將所有的Database Backup儲存在一個獨立磁碟上(必須是與當前資料庫系統正在使用的檔案不同的磁碟);
應該保持控制檔案的多工,且控制檔案的副本應該存放在不同磁碟控制卡下的不同磁碟裝置上;
應該保持多個聯機記錄檔組,每個組中至少應該保持兩個日誌成員,同一日誌組的多個成員應該分散存放在不同磁碟上;
至少保證兩個歸檔重做記錄檔的歸檔目標,不同歸檔目標應該分散於不同磁碟;
如果條件允許,盡量保證資料庫運行于歸檔模式;
根據資料庫資料變化的頻率情況確定Database Backup規律;
在歸檔模式下,當資料庫結構發生變化時,如建立或刪除資料表空間、添加資料檔案、重做記錄檔等,應該備份資料庫的控制檔案;
在非歸檔模式下,當資料庫結構發生變化時,應該進行資料庫的完全備份;
在歸檔模式下,對於經常使用的資料表空間,可以採用資料表空間備份方法提高備份效率;
在歸檔模式下,通常不需要對聯機重做記錄檔進行備份;
使用RESETLOGS方式開啟資料庫後,應該進行一個資料庫的完全備份;
對於重要的表中的資料,可以採用邏輯備份方式進行備份。
2.根據資料備份方式的不同,Database Backup分為:
物理備份:將組成資料庫的資料檔案、重做記錄檔、控制檔案、初始化參數檔案等作業系統檔案進行複製,將形成的副本儲存到與當前系統獨立的磁碟或磁帶上。
邏輯備份是指利用Oracle提供的匯出工具(如Expdp,Export)將資料庫中的資料幫浦出來存放到一個二進位檔案中。
3. 根據Database Backup時是否關閉資料庫伺服器,物理備份分為:
冷備份又稱停機備份,是指在關閉資料庫的情況下將所有的資料庫檔案複製到另一個磁碟或磁帶上去。
熱備份又稱聯機備份,是指在資料庫啟動並執行情況下對資料庫進行的備份。要進行熱備份,資料庫必須運行在歸檔記錄模式下。
4. 根據Database Backup的規模不同,物理備份可分為:
完全備份:指對整個資料庫進行備份,包括所有的物理檔案。
部份備份 :對部分資料檔案、資料表空間、控制檔案、歸檔重做記錄檔等進行備份。
5. 根據資料庫是否運行在歸檔模式,物理備份可分為:歸檔備份,非歸檔備份
6. 如果沒有啟用歸檔模式,資料庫不能恢複到備份完成後的任意時刻。如果啟用歸檔模式,從冷備份結束後到出現故障這段時間的資料庫恢複,可以利用聯機記錄檔和歸檔記錄檔實現。
Oracle-Database Backup與恢複