數據庫實驗四 數據庫恢復與安全性

一、實驗目的
(1)瞭解oracle的物理備份
(2)掌握oracle數據庫邏輯備份方法
(3)掌握oracle數據庫恢復的方法
(4)學會使用exp備份數據庫、使用imp恢復數據庫
(5)瞭解flashback 的使用
(6)學會使用PLSQL/developer工具完成導入導出
(7)掌握ORACLE中有關用戶創建的方法
(8)熟練掌握PL-SQL的數據控制語言,能通過自主存取控制進行權限管理
(9)熟悉用戶資源文件的使用
(10)熟悉ORACLE中角色管理
(11)熟悉視圖機制在自主存取控制上的應用
二、實驗環境
PLSQL Developer 12
Oracle Database 11 home
三、實驗步驟、出現的問題及解決方案
實驗步驟:
1、邏輯備份
(1)導出自己用戶中的“預約”表
EXP USERID=S512017****/**********@orcl TABLES=預約 FILE=C:\Users\Administrator\Desktop\預約.dmp

在這裏插入圖片描述在這裏插入圖片描述
(2)刪除自己用戶中的“預約”表
DROP TABLE 預約;
在這裏插入圖片描述在這裏插入圖片描述
(3)進行導入數據庫操作
IMP USERID=S512017****/@orcl TABLES=預約 FILE=C:\Users\Administrator\Desktop\預約.dmp
在這裏插入圖片描述
更新Tables:
在這裏插入圖片描述
(4)查詢導入的“預約”表中的信息。
SELECT * FROM 預約;
在這裏插入圖片描述
(5)導出數據庫(以全庫方式導出)。
EXP USERID=S512017
/
**@orcl FULL=Y INCTYPE=COMPLETE FILE=C:\Users\Administrator\Desktop\all.dmp

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
2、使用Flashback
(1)設置行可移動
ALTER TABLE 讀者 ENABLE ROW MOVEMENT;
(2)在讀者表中添加多條記錄(或者刪除沒有借書的讀者記錄)。
插入記錄:
INSERT INTO 讀者 VALUES(‘20196307’,‘張三’,‘四川綿陽西科大計算機學院’,‘男’,‘西南科技大學’,‘12345678912’,‘431126199910030011’);
INSERT INTO 讀者 VALUES(‘20196666’,‘李四’,‘四川綿陽西科大計算機學院’,‘男’,‘西南科技大學’,‘12345678915’,‘431126199910030111’);
INSERT INTO 讀者 VALUES(‘20195555’,‘王曦’,‘四川綿陽西科大計算機學院’,‘女’,‘西南科技大學’,‘12345678920’,‘431126199910033695’);
COMMIT;
或者刪除記錄:
DELETE FROM 讀者 WHERE 讀者.借書證號 NOT IN (SELECT 借閱.借書證號 FROM 借閱);
COMMIT;
在這裏插入圖片描述
(3)閃回到改變前
FLASHBACK TABLE 讀者 TO TIMESTAMP TO_TIMESTAMP(‘2019/12/2 11:00:00’,‘YYYY/MM/DD HH24:MI:SS’);
在這裏插入圖片描述

3、使用PLSQL/developer 來完成SQL導出
(1)打開PLSQL/developer,選擇菜單“工具“導出表
(2)點擊你要導出的表(如:“預約”表),然後選擇標籤SQL 插入
(3)選中複選框創建表(create tables),瀏覽或者輸入輸出文件,然後點擊導出
在這裏插入圖片描述
(4)在你輸入的目錄下找到你的導出文件(SQL 文件)
在這裏插入圖片描述
(5)刪除自己表空間中的“預約”表
DROP TABLE 預約;
在這裏插入圖片描述
(6)通過“工具“導入表,利用SQL插入導入“預約”表。
在這裏插入圖片描述
(7)查詢導入的“預約”表,檢查導出是否正確。
在這裏插入圖片描述在這裏插入圖片描述
4、使用PLSQL/developer 來完成PLSQL/developer方式導出
(1)打開PLSQL/developer,選擇菜單“工具“導出表
(2)點擊你要導出的表(如:“預約”表),然後選擇標籤PLSQL/developer
(3)瀏覽或者輸入輸出文件,然後點擊導出。
在這裏插入圖片描述
(4)在你輸入的目錄下找到你的導出文件。
在這裏插入圖片描述
(5)刪除自己表空間中的“預約”表
DROP TABLE 預約;
在這裏插入圖片描述
(6)通過“工具“導入表,PLSQL/developer方式並選中複選框“創建表”,導入“預約”表。
在這裏插入圖片描述
(7)查詢導入的“預約”表,檢查導出是否正確。
在這裏插入圖片描述
5、以SYSTEM登錄數據庫,爲自己帳號增加系統角色DBA.
GRANT DBA TO S512017****;
在這裏插入圖片描述
6、 重新以自己的帳號登錄,創建一個數據庫用戶:S512017****_USER1,該用戶擁有所有CONNECT, RESOURCE,DBA系統角色權限。
CREATE USER S512017****_USER1 IDENTIFIED BY 123456;
GRANT CONNECT TO S512017****_USER1;
GRANT RESOURCE TO S512017****_USER1;
GRANT DBA TO S512017****_USER1;
在這裏插入圖片描述
7、 建立角色:S512017****_OPER,該角色擁有調用存儲過程借書、還書、預約的權限,以及CONNECT系統角色權限。
CREATE ROLE S512017****_OPER;
GRANT CONNECT TO S512017****_OPER;
GRANT EXECUTE ON 借書 TO S512017****_OPER;
GRANT EXECUTE ON 還書 TO S512017****_OPER;
GRANT EXECUTE ON 預約圖書 TO S512017****_OPER;
在這裏插入圖片描述
8、創建一個數據庫用戶:S512017****_USER2,爲該用戶授權角色:S512017****_OPER。以該用戶登錄,完成借書功能。
創建賬號並授權角色:
CREATE USER S512017****_USER2 IDENTIFIED BY 123456;
GRANT S512017****_OPER TO S512017****_USER2;
在這裏插入圖片描述
完成借書:
CALL S512017****.借書(‘20051001’,‘1005050’);
CALL S512017****.借書(‘20051001’,‘2001231’);

在這裏插入圖片描述
在這裏插入圖片描述
9、以自己的帳號登錄,建立視圖VIEW_READER, 該視圖包含書目(ISBN, 書名,作者,出版單位,圖書分類名稱)
CREATE VIEW VIEW_READER
AS
SELECT 書目.ISBN,書目.書名,書目.作者,書目.出版單位,圖書分類.類名
FROM 書目,圖書分類
WHERE 書目.圖書分類號=圖書分類.圖書分類號;
在這裏插入圖片描述
10、 創建一個數據庫用戶:S512017****_USER3,該用戶具有對視圖VIEW_READER查詢的權限。
CREATE USER S512017****_USER3 IDENTIFIED BY 123456;
GRANT CONNECT TO S512017****_USER3;
GRANT SELECT ON VIEW_READER TO S512017****_USER3;
在這裏插入圖片描述
11、創建一個概要文件,如果S512017****_USER3連續3次登錄失敗,則鎖定該賬戶,10天后該賬戶自動解鎖。把創建的概要文件分配給該賬號,然後以該用戶登錄進行權限測試。
創建概要文件:
CREATE PROFILE LOCK_USER LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 10;
在這裏插入圖片描述
分配概要文件:
ALTER USER S512017****_USER3 PROFILE LOCK_USER;
在這裏插入圖片描述
測試:
在這裏插入圖片描述
連續輸錯3次後SQLPLUS關閉,再次測試:
在這裏插入圖片描述
賬戶已鎖定,然後進行解鎖:
ALTER USER S512017****_USER3 ACCOUNT UNLOCK;
在這裏插入圖片描述
登錄測試視圖權限
在這裏插入圖片描述
出現的問題及解決方案:
1、在PL/SQL和SQLPLUS使用EXP和IMP導出導入數據失敗,解決方案:EXP和IMP命令需要在系統命令行中使用,在SQLPLUS中使用需要在EXP和IMP命令前面加“$”符號或者“HOST”,在PL/SQL中同樣如此,不過不是在SQL Window窗口運行,而是在Command Window窗口運行。

2、使用賬號S512017****_USER2授權S512017****_OPER角色權限後調用借書儲存過程(CALL 借書(‘20051001’,‘1005050’))失敗,解決方案:因爲借書儲存過程不是用戶S512017****_USER2創建的,使用其他用戶創建的儲存過程在調用時需要加上創建儲存過程的用戶名,如“CALL S512017****.借書(‘20051001’,‘1005050’)”。
四、實驗心得體會
通過本次實驗,收穫較大,掌握了多種數據庫導入和導出的方法,培養了對數據庫的及時備份的思維,只有及時備份數據庫,才能將數據庫發生錯誤時或者誤操作時產生的損失降爲最低甚至爲零。使用Flashback可以將數據庫回閃到指定的時間去,雖然非常的方便,但是也有不足之處,就是如果許多操作都連接在一起,非常緊密,可能無法精確的回閃到想要的狀態,而且需要自己手動確定時間點。ORACLE數據庫的自主存取控制非常的嚴格,用戶的操作需先授權才能進行,即使創建了用戶,如果沒有授權CONNECT權限,用戶都無法進行登錄。所以在設計數據庫使用人員權限時,設計思路要清晰,確定好用戶該擁有哪些權限,以及是使用單獨授權還是創建角色來批量授權,還有是否允許授權給他人,這些都需要考慮。設計概要文件可以使用戶賬號更加安全,使數據庫的數據安全更有保障。使用視圖可以將數據庫操作更簡化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章