Oracle 實驗8 數據庫備份與恢復.doc_第1頁
Oracle 實驗8 數據庫備份與恢復.doc_第2頁
Oracle 實驗8 數據庫備份與恢復.doc_第3頁
Oracle 實驗8 數據庫備份與恢復.doc_第4頁
Oracle 實驗8 數據庫備份與恢復.doc_第5頁
免費預覽已結束,剩余15頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

金陵科技學院實驗報告實驗8 數據庫備份與恢復、數據閃回技術和事務處理一、實驗目的和要求1、理解數據庫備份的意義、數據庫邏輯備份與物理備份的區別以及各自適用的范圍。2、掌握數據庫邏輯備份與恢復的方法。3、掌握數據庫物理備份中脫機備份(冷備份)以及恢復的方法。4、掌握數據庫物理備份中的聯機備份(熱備份)以及恢復的方法。5、理解Oracle的數據庫閃回技術適用范圍及局限性,在閃回過程中基于SCN的閃回技術和基于時間戳的閃回技術。6、掌握使用SQL *Plus命令閃回表、閃回刪除和閃回數據庫的方法7、理解事務的概念及特性,事務的提交與回滾,保存點技術。掌握事務的完全回退和回退到保存點的方法。二、實驗設備、環境設備:奔騰或奔騰以上計算機環境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、ORACLE 10g中文版三、實驗步驟1、分析題意,重點分析題目要求并給出解決方法。2、根據題目要求啟動SQL*Plus、iSQL*Plus、OEM等管理工具。3、按題目要求完成實際操作任務,并將相關文檔資料保存在以自己學號命名的文件夾中。4、提交完成的實驗結果。四、實驗內容1、數據庫的邏輯備份與恢復用EXP命令導出Orcl數據庫中的Departments表。以mybak.dmp文件名存儲在F盤的根目錄下。然后刪除該表中的數據。用IMP命令導入Departments表,查看表中的數據是否已經恢復。2、數據庫的物理備份(1)冷備份在F盤的oracle目錄下,查找到Orcl子目錄,將該目錄中的數據、日志以及控制文件拷貝到E盤的BAK目錄下(需要事先創建好)。然后刪除Orcl子目錄下的部分數據文件。啟動數據庫,觀察其結果。將E盤的BAK目錄下的相應數據文件拷回到Orcl子目錄下,啟動數據庫,觀察其結果。(2)聯機備份與恢復首先將數據庫改變為歸檔模式。將MYTS表空間進行備份。將MYTS表空間中的的數據文件例如MYTS01拷貝到F:BACKUP目錄下。將當前的聯機日志進行歸檔和切換。(使用ALTER SYSTEM archive log CURRENT 命令和ALTER SYSTEM SWITCH LOG,FILE)關閉數據庫。將MYTS01數據文件刪除。然后再啟動數據庫,觀察出錯信息。將錯的文件脫機并刪除掉。打開數據庫。此時將備份的文件拷貝到原來的路徑下。恢復出錯的文件,將該文件設置為聯機。在察看結果,看是否已經恢復。3、數據庫的閃回技術(1)閃回查詢(2)閃回表(注意:閃回表事先要進行允許行遷移的準備)(3)閃回刪除4、事務管理(1)回退全部事務(2)利用保存點技術將事務回退的保存點處。五、問題解答及實驗結果1、數據庫的邏輯備份與恢復(1)導出SQL select * 2 from departments;DEP DEPARTMENTNAME NOTE- - -1 財務部2 人力資源部3 經理辦公室4 研發部5 市場部SQL drop table departments;表已刪除。SQL select * 2 from departments;from departments *第 2 行出現錯誤:ORA-00942: 表或視圖不存在(2)導入SQL select * 2 from departments;DEP DEPARTMENTNAME NOTE- - -1 財務部2 人力資源部3 經理辦公室4 研發部5 市場部2、物理備份(1)冷備份-查詢控制文件所在的目錄set pagesize 30col name for a60select name from v$controlfile;NAME-F:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTLF:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTLF:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL-查詢日志文件所在的目錄col member for a60select member from v$logfile;MEMBER-F:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOGF:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOGF:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG-查詢所有數據文件所在的目錄和文件名col file_name for a60set linesize 120FILE_NAME TABLESPACE_NAME- -F:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF USERSF:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF SYSAUXF:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF UNDOTBS1F:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF SYSTEMF:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF EXAMPLEF:DISK2ORCLPIONEER_DATA.DBF PIONEER_DATAF:DISK4ORCLPIONEER_INDX.DBF PIONEER_INDX-查詢參數文件所在的目錄show parameter pfileNAME TYPE VALUE- - - -spfile string F:ORACLEPRODUCT10.2.0DB_1 DBSSPFILEORCL.ORA-創建備份文件存放的目錄SQLHOST -該命令從sqlplus窗口轉換到dos窗口f:md backup f:cd backupf:backupmd databasef:backupmd dbsf:backupmd disk2f:backupmd disk4f:backupdir-創建存儲腳本文件的目錄f:oraclemd mgt-編寫冷備份腳本文件:CONNECT SYS/ORCL123 AS SYSDBASHUTDOWN IMMEDIATEHOST COPY F:ORACLEPRODUCT10.2.0ORADATAORCL*.* F:backupHOST COPY F:ORACLEPRODUCT10.2.0db_1dbsSPFILEORCL.ORA F:backupdbsHOST COPY F:ORACLEPRODUCT10.2.0db_1databasepwdorcl.ora F:dackupdatabaseHOST COPY F:disk2orclPINOEER_DATA.DBF F:backupdisk2HOST COPY F:disk4orclPINOEER_INDX.DBF F:backupdisk4STARTUP將以上腳本保存在f:oraclemgtcoolbak.sql-冷備份的實施,運行coolbak.sqlSQLF:oraclemgtcoolbak-查看backup目錄下的所有文件SQLHOSTF:oracleproduct10.2.0db_1bin cd f:backupf:backupdir模擬數據損害,刪除數據文件后,用下面的命令進行恢復。SQLconnect sys/orcl123 as sysdbaSQLshutdown immediateSQLHOST COPY F:backup*.* F:oracleproduct10.2.0oradataorclSQLHOST COPY F:backupdbsSPFILEORCL.ORA F:oracleproduct10.2.0dbackup_1dbsSQLHOST COPY F:backupdatabasePWDORCL.ORA F:oracleproduct10.2.0db_1databaseSQLHOST COPY F:backupdisk2PIONEER_DATA.DBF F:DISK2ORCLSQLHOST COPY F:backupdisk4PIONEER_INEX.DBF F:DISK4ORCLSQLSTARTUP(2)熱備份SQL archive log list數據庫日志模式 非存檔模式自動存檔 禁用存檔終點 USE_DB_RECOVERY_FILE_DEST最早的聯機日志序列 11當前日志序列 13數據庫已經關閉。已經卸載數據庫。ORACLE 例程已經關閉。SQL startup mountORACLE 例程已經啟動。Total System Global Area 209715200 bytesFixed Size 1248140 bytesVariable Size 88081524 bytesDatabase Buffers 117440512 bytesRedo Buffers 2945024 bytes數據庫裝載完畢。SQL alter database archivelog;數據庫已更改。SQL alter database open;數據庫已更改。SQL archive log list數據庫日志模式 存檔模式自動存檔 啟用存檔終點 USE_DB_RECOVERY_FILE_DEST最早的聯機日志序列 31下一個存檔日志序列 33當前日志序列 33SQL alter tablespace MYTS begin backup;表空間已更改。SQL HOST COPY F:ORACLEPRODUCT10.2.0ORADATAORCLMYTS01 F:BACKUP;SQL ALTER TABLESPACE MYTS END BACKUP;表空間已更改。SQL SHUTDOWN IMMEDIATE;數據庫已經關閉。已經卸載數據庫。ORACLE 例程已經關閉。模擬數據庫損壞,刪除MYTS01數據文件。SQL STARTUPORACLE 例程已經啟動。Total System Global Area 209715200 bytesFixed Size 1248140 bytesVariable Size 130024564 bytesDatabase Buffers 75497472 bytesRedo Buffers 2945024 bytes數據庫裝載完畢。ORA-01157: 無法標識/鎖定數據文件 8 - 請參閱 DBWR 跟蹤文件ORA-01110: 數據文件 8: F:ORACLEPRODUCT10.2.0ORADATAORCLMYTS01SQL alter database datafile 8 offline; 數據庫已更改。SQL alter database open;數據庫已更改。SQL select file#,status from v$datafile; FILE# STATUS- - 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 OFFLINE已選擇8行。SQL col error for a20SQL select * from v$recover_file; FILE# ONLINE ONLINE_ ERROR CHANGE# TIME- - - - - - - 8 OFFLINE OFFLINE FILE NOT FOUND 0SQLHOST COPY F:BACKUPMYTS01 F:ORACLEPRODUCT10.2.0ORADATAORCLSQL RECOVER DATAFILE 8完成介質恢復。SQL ALTER TABLESPACE MYTS ONLINE;表空間已更改。SQL SELECT FILE#,STATUS FROM V$DATAFILE; FILE# STATUS- - 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 ONLINE已選擇8行。SQL CONNECT ADMIN/ADMIN123已連接。SQL SELECT COUNT(*) 2 FROM SALES; COUNT(*)- 918843SQL SELECT COUNT(*) 2 FROM customers; COUNT(*)- 555003、數據庫閃回技術(1)閃回查詢SQL CONNECT SYS/ORCL123 AS SYSDBA已連接。SQL grant execute on dbms_flashback to scott;授權成功。SQL SELECT TO_CHAR(sysdate,yyyy-mm-dd hh24:mi:ss)current_time from dual;CURRENT_TIME-2012-06-05 17:08:53SQL conn scott/tiger;已連接。SQL SELECT ENAME,SAL FROM EMP WHERE EMPNO=7788;ENAME SAL- -SCOTT 3000SQL VARIABLE scn_now NUMBERSQL EXECUTE :scn_now :=dbms_flashback.get_system_change_number; -獲取SCN的值。PL/SQL 過程已成功完成。SQL PRINT :scn_now SCN_NOW- 1297964SQL SET TIME ON17:10:50 SQL EXECUTE dbms_flashback.disable; PL/SQL 過程已成功完成。17:11:06 SQL UPDATE EMP SET SAL=4000 WHERE EMPNO=7788;已更新 1 行。17:11:28 SQL CONN SCOTT/TIGER已連接。17:11:49 SQL EXECUTE :scn_now:=dbms_flashback.get_system_change_number;PL/SQL 過程已成功完成。17:12:16 SQL PRINT :SCN_NOW SCN_NOW- 129806117:12:33 SQL EXECUT dbms_flashback.enable_at_system_change_number(:scn_now);PL/SQL 過程已成功完成。17:13:24 SQL SELECT ENAME,SAL FROM EMP WHERE EMPNO=7788;ENAME SAL- -SCOTT 400017:13:48 SQL execute dbms_flashback.disable;PL/SQL 過程已成功完成。17:14:14 SQL execute dbms_flashback.enable_at_system_change_number(1297964);PL/SQL 過程已成功完成。17:15:13 SQL SELECT EMPNO,SAL FROM EMP WHERE EMPNO=7788; EMPNO SAL- - 7788 300017:15:34 SQL EXECUTE dbms_flashback.disable;PL/SQL 過程已成功完成。17:16:07 SQL UPDATE EMP SET SAL=4500 WHERE EMPNO=7788;已更新 1 行。17:16:27 SQL COMMIT;提交完成。17:17:01SQLEXECUTE dbms_flashback.enable_at_time( to_date(2012-06-05 17:13:48,yyyy-mm-dd hh24:mi:ss);PL/SQL 過程已成功完成。17:19:09 SQL SELECT EMPNO,SAL FROM EMP WHERE EMPNO=7788; EMPNO SAL- - 7788 400017:19:49 SQL EXECUTE dbms_flashback.disable;PL/SQL 過程已成功完成。17:20:16 SQL EXECUTE dbms_flashback.disable;PL/SQL 過程已成功完成。17:20:34 SQL SET TIME OFF;SQL(2)閃回表一、創建閃回表的測試條件(創建一個表空間、一個用戶,并給用戶授權)SQL CREATE TABLESPACE loc_tbs01 2 DATAFILE e:loc_tas01_1.dbf SIZE 5M 3 EXTENT MANAGEMENT LOCAL;表空間已創建。SQL CREATE USER myuser1 IDENTIFIED BY user1pswd 2 DEFAULT TABLESPACE loc_tbs01 3 TEMPORARY TABLESPACE temp 4 QUOTA 2M ON loc_tbs01;用戶已創建。SQL GRANT connect,resource TO myuser1;授權成功。SQL GRANT execute ON dbms_flashback to myuser1;授權成功。二、模擬用戶操作SQL connect myuser1/user1pswd;已連接。 CREATE TABLE Department (DeptNo CHAR(2) NOT NULL, Name VARCHAR2(20) NOT NULL, Address VARCHAR2(30), CONSTRAINT PK_DepNO PRIMARY KEY (DeptNo) VALIDATE);表已創建。SQL CREATE TABLE Student (StuNo VARCHAR2(12) NOT NULL, Name VARCHAR2(15) NOT NULL, Sex CHAR(1), DeptNo CHAR(2), CONSTRAINT PK_StuNo PRIMARY KEY (StuNo) VALIDATE, CONSTRAINT FK_DeptNO FOREIGN KEY (DeptNo) REFERENCES Department(DeptNo) VALIDATE);表已創建。SQL COMMIT;提交完成。SQL CREATE UNIQUE INDEX idx_Department ON Department(Name);索引已創建。 SQL CREATE INDEX idx_Student_name ON Student(Name);索引已創建。SQL SELECT index_name,table_name,uniqueness FROM user_indexes;INDEX_NAME TABLE_NAME UNIQUENES- - -PK_DEPNO DEPARTMENT UNIQUEIDX_DEPARTMENT DEPARTMENT UNIQUEPK_STUNO STUDENT UNIQUEIDX_STUDENT_NAME STUDENT NONUNIQUESQL COMMIT;-注意:先往Demartment表中插入數據,然后再向Student表插入數據,想一下為什么?SQL INSERT INTO Department VALUES(01,計算機系,1號樓);INSERT INTO Department VALUES(02,自動控制系,2號樓);INSERT INTO Department VALUES(03,電子技術系,3號樓);SQLINSERT INTO Student VALUES(20060302001,jack,1,03);INSERT INTO Student VALUES(20060302002,smith,1,03);INSERT INTO Student VALUES(20060302003,Iucy,0,03);SQL COMMIT;三、采用基于時間點閃回表SQL VARIABLE scn_now numberSQL EXECUTE :scn_now :=dbms_flashback.get_system_change_number; -獲取SCNPL/SQL 過程已成功完成。SQL PRINT scn_now SCN_NOW- 1299435SQL ALTER TABLE Department ENABLE ROW MOVEMENT; 表已更改。SQL ALTER TABLE Student ENABLE ROW MOVEMENT;表已更改。SQL SELECT TO_CHAR(sysdate,yyyy-mm-dd hh24:mi:ss) CURRENT_TIME FROM dual;CURRENT_TIME-2012-06-05 17:42:41SQL TRUNCATE TABLE Student;表被截斷。SQL DROP INDEX idx_Department;索引已刪除。SQL DELETE FROM Department;已刪除3行。SQL COMMIT;提交完成。SQL FLASHBACK TABLE Student TO TIMESTAMP to_timestamp(2012-06-05 17:42:41,yyyy-mm-dd hh24:mi:ss);FLASHBACK TABLE Student TO TIMESTAMP to_timestamp(2012-06-05 17:42:41,yyyy-mm-dd hh24:mi:ss) *第 1 行出現錯誤:ORA-01466: 無法讀取數據 - 表定義已更改 -用TRUNCATE 命令截斷的表不能閃回SQL FLASHBACK TABLE Department TO TIMESTAMP to_timestamp(2012-06-05 17:42:41,yyyy-mm-dd hh24:mi:ss);閃回完成。 -閃回了Department表中的數據SQL COMMIT;提交完成。SQL SELECT * FROM Student;未選定行SQL SELECT * FROM Department;DE NAME ADDRESS- - -01 計算機系 1號樓02 自動控制系 2號樓03 電子技術系 3號樓SQL SELECT index_name,table_name,uniqueness FROM user_indexes;INDEX_NAME TABLE_NAME UNIQUENES- - -PK_STUNO STUDENT UNIQUEIDX_STUDENT_NAME STUDENT NONUNIQUEPK_DEPNO DEPARTMENT UNIQUE-雖然閃回了Department表中的數據但不能閃回單獨刪除的索引。四、禁用行移動功能SQL ALTER TABLE Department ENABLE ROW MOVEMENT; 表已更改。SQL ALTER TABLE Student ENABLE ROW MOVEMENT; 表已更改。(3)閃回刪除一、將測試環境恢復到初始狀態-用DROP TABLE TABLE_name CASCADE CONSTRAINT 命令刪除表及其索引然后重新創建SQL DROP TABLE Student CASCADE CONSTRAINT;表已刪除。SQL DROP TABLE Department CASCADE CONSTRAINT;表已刪除。-重新創建表 CREATE TABLE Department (DeptNo CHAR(2) NOT NULL, Name VARCHAR2(20) NOT NULL, Address VARCHAR2(30), CONSTRAINT PK_DepNO PRIMARY KEY (DeptNo) VALIDATE);表已創建。 CREATE TABLE Student (StuNo VARCHAR2(12) NOT NULL, Name VARCHAR2(15) NOT NULL, Sex CHAR(1), DeptNo CHAR(2), CONSTRAINT PK_StuNo PRIMARY KEY (StuNo) VALIDATE, CONSTRAINT FK_DeptNO2 FOREIGN KEY (DeptNo) REFERENCES Department(DeptNo) VALIDATE);表已創建。SQL COMMIT;提交完成。SQL CREATE UNIQUE INDEX idx_Department ON Department(Name);索引已創建。SQL CREATE INDEX idx_Student_name ON Student(Name);索引已創建。-向Department表插入數據INSERT INTO Department VALUES(01,計算機系,1號樓);INSERT INTO Department VALUES(02,自動控制系,2號樓);INSERT INTO Department VALUES(03,電子技術系,3號樓);-向Student表插入數據INSERT INTO StudentVALUES(20090601001,jack,1,03);INSERT INTO StudentVALUES(20090601002,smith,1,03);INSERT INTO StudentVALUES(20090601003,Iucy,0,03);二、創建一個觸發器 CREATE OR REPLACE TRIGGER tr_Student_ActionTime BEFORE insert OR update OR delete ON Student BEGIN IF (TO_CHAR(sysdate,DAY) IN (星期六,星期天) OR (TO_CHAR(sysdate,HH24) NOT BETWEEN 8 AND 18 ) THEN RAISE_APPLICATION_ERROR(-20001,不是上班時間,不能修改Student表); END IF;END;/觸發器已創建三、清除回收站,查詢刪除表之前的表、索引、觸發器的信息。-清空回收站內容SQL PURGE RECYCLEBIN;回收站已清空。SQL SELECT table_name,tablespace_name FROM user_tables;TABLE_NAME TABLESPACE_NAME- -STUDENT LOC_TBS01DEPARTMENT LOC_TBS01SYS_TEMP_FBTSQL SELECT index_name,table_name,uniqueness FROM user_indexes ORDER BY table_name;INDEX_NAME TABLE_NAME UNIQUENES- - -PK_DEPNO DEPARTMENT UNIQUEIDX_DEPARTMENT DEPARTMENT UNIQUEPK_STUNO STUDENT UNIQUEIDX_STUDENT_NAME STUDENT NONUNIQUESQL SELECT trigger_name,trigger_type,table_name FROM user_triggers;TRIGGER_NAME TRIGGER_TYPE TABLE_NAME- - -TR_STUDENT_ACTIONTIME BEFORE STATEMENT STUDENT四、模擬用戶進行數據庫操作,刪除Student表和Department表SQL DROP TABLE Student CASCADE CONSTRAINT;表已刪除。SQL DROP TABLE Department CASCADE CONSTRAINT;表已刪除。五、查看刪除表以后的效果SQL desc user_recyclebin; 名稱 是否為空? 類型 - - - OBJECT_NAME NOT NULL VARCHAR2(30) ORIGINAL_NAME VARCHAR2(32) OPERATION VARCHAR2(9) TYPE VARCHAR2(25) TS_NAME VARCHAR2(30) CREATETIME VARCHAR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論