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

一、实验目的
(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权限,用户都无法进行登录。所以在设计数据库使用人员权限时,设计思路要清晰,确定好用户该拥有哪些权限,以及是使用单独授权还是创建角色来批量授权,还有是否允许授权给他人,这些都需要考虑。设计概要文件可以使用户账号更加安全,使数据库的数据安全更有保障。使用视图可以将数据库操作更简化。

  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值