数据库实验四 数据库恢复与安全性

一、实验目的
(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

数据库实验四 数据库恢复与安全性_第1张图片在这里插入图片描述
(2)删除自己用户中的“预约”表
DROP TABLE 预约;
数据库实验四 数据库恢复与安全性_第2张图片数据库实验四 数据库恢复与安全性_第3张图片
(3)进行导入数据库操作
IMP USERID=S512017****/@orcl TABLES=预约 FILE=C:\Users\Administrator\Desktop\预约.dmp
数据库实验四 数据库恢复与安全性_第4张图片
更新Tables:
数据库实验四 数据库恢复与安全性_第5张图片
(4)查询导入的“预约”表中的信息。
SELECT * FROM 预约;
数据库实验四 数据库恢复与安全性_第6张图片
(5)导出数据库(以全库方式导出)。
EXP USERID=S512017
/
**@orcl FULL=Y INCTYPE=COMPLETE FILE=C:\Users\Administrator\Desktop\all.dmp

数据库实验四 数据库恢复与安全性_第7张图片
在这里插入图片描述
数据库实验四 数据库恢复与安全性_第8张图片
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;
数据库实验四 数据库恢复与安全性_第9张图片
(3)闪回到改变前
FLASHBACK TABLE 读者 TO TIMESTAMP TO_TIMESTAMP(‘2019/12/2 11:00:00’,‘YYYY/MM/DD HH24:MI:SS’);
数据库实验四 数据库恢复与安全性_第10张图片

3、使用PLSQL/developer 来完成SQL导出
(1)打开PLSQL/developer,选择菜单“工具“导出表
(2)点击你要导出的表(如:“预约”表),然后选择标签SQL 插入
(3)选中复选框创建表(create tables),浏览或者输入输出文件,然后点击导出
数据库实验四 数据库恢复与安全性_第11张图片
(4)在你输入的目录下找到你的导出文件(SQL 文件)
数据库实验四 数据库恢复与安全性_第12张图片
(5)删除自己表空间中的“预约”表
DROP TABLE 预约;
数据库实验四 数据库恢复与安全性_第13张图片
(6)通过“工具“导入表,利用SQL插入导入“预约”表。
数据库实验四 数据库恢复与安全性_第14张图片
(7)查询导入的“预约”表,检查导出是否正确。
数据库实验四 数据库恢复与安全性_第15张图片数据库实验四 数据库恢复与安全性_第16张图片
4、使用PLSQL/developer 来完成PLSQL/developer方式导出
(1)打开PLSQL/developer,选择菜单“工具“导出表
(2)点击你要导出的表(如:“预约”表),然后选择标签PLSQL/developer
(3)浏览或者输入输出文件,然后点击导出。
数据库实验四 数据库恢复与安全性_第17张图片
(4)在你输入的目录下找到你的导出文件。
在这里插入图片描述
(5)删除自己表空间中的“预约”表
DROP TABLE 预约;
数据库实验四 数据库恢复与安全性_第18张图片
(6)通过“工具“导入表,PLSQL/developer方式并选中复选框“创建表”,导入“预约”表。
数据库实验四 数据库恢复与安全性_第19张图片
(7)查询导入的“预约”表,检查导出是否正确。
数据库实验四 数据库恢复与安全性_第20张图片
5、以SYSTEM登录数据库,为自己帐号增加系统角色DBA.
GRANT DBA TO S512017****;
数据库实验四 数据库恢复与安全性_第21张图片
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;
数据库实验四 数据库恢复与安全性_第22张图片
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;
数据库实验四 数据库恢复与安全性_第23张图片
8、创建一个数据库用户:S512017****_USER2,为该用户授权角色:S512017****_OPER。以该用户登录,完成借书功能。
创建账号并授权角色:
CREATE USER S512017****_USER2 IDENTIFIED BY 123456;
GRANT S512017****_OPER TO S512017****_USER2;
数据库实验四 数据库恢复与安全性_第24张图片
完成借书:
CALL S512017****.借书(‘20051001’,‘1005050’);
CALL S512017****.借书(‘20051001’,‘2001231’);

数据库实验四 数据库恢复与安全性_第25张图片
数据库实验四 数据库恢复与安全性_第26张图片
9、以自己的帐号登录,建立视图VIEW_READER, 该视图包含书目(ISBN, 书名,作者,出版单位,图书分类名称)
CREATE VIEW VIEW_READER
AS
SELECT 书目.ISBN,书目.书名,书目.作者,书目.出版单位,图书分类.类名
FROM 书目,图书分类
WHERE 书目.图书分类号=图书分类.图书分类号;
数据库实验四 数据库恢复与安全性_第27张图片
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;
数据库实验四 数据库恢复与安全性_第28张图片
11、创建一个概要文件,如果S512017****_USER3连续3次登录失败,则锁定该账户,10天后该账户自动解锁。把创建的概要文件分配给该账号,然后以该用户登录进行权限测试。
创建概要文件:
CREATE PROFILE LOCK_USER LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 10;
数据库实验四 数据库恢复与安全性_第29张图片
分配概要文件:
ALTER USER S512017****_USER3 PROFILE LOCK_USER;
数据库实验四 数据库恢复与安全性_第30张图片
测试:
数据库实验四 数据库恢复与安全性_第31张图片
连续输错3次后SQLPLUS关闭,再次测试:
数据库实验四 数据库恢复与安全性_第32张图片
账户已锁定,然后进行解锁:
ALTER USER S512017****_USER3 ACCOUNT UNLOCK;
数据库实验四 数据库恢复与安全性_第33张图片
登录测试视图权限
数据库实验四 数据库恢复与安全性_第34张图片
出现的问题及解决方案:
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权限,用户都无法进行登录。所以在设计数据库使用人员权限时,设计思路要清晰,确定好用户该拥有哪些权限,以及是使用单独授权还是创建角色来批量授权,还有是否允许授权给他人,这些都需要考虑。设计概要文件可以使用户账号更加安全,使数据库的数据安全更有保障。使用视图可以将数据库操作更简化。

你可能感兴趣的:(数据库实验,数据库)