并发和安全.docx

上传人:b****5 文档编号:3956384 上传时间:2022-11-26 格式:DOCX 页数:9 大小:131.67KB
下载 相关 举报
并发和安全.docx_第1页
第1页 / 共9页
并发和安全.docx_第2页
第2页 / 共9页
并发和安全.docx_第3页
第3页 / 共9页
并发和安全.docx_第4页
第4页 / 共9页
并发和安全.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

并发和安全.docx

《并发和安全.docx》由会员分享,可在线阅读,更多相关《并发和安全.docx(9页珍藏版)》请在冰豆网上搜索。

并发和安全.docx

并发和安全

SQL实验七并发和安全

 

实验目标:

⏹提交事务

⏹回滚事务

⏹发出保存点

⏹创建用户

⏹授予权限

⏹撤消权限

7.1保存更改

无论何时发出命令,都不会对数据库作直接更改。

我们必须明确地发出提交语句来保存更改。

实验7-1:

我们现在来看一下实际的提交是如何实现的。

按照下列给出的步骤理解该过程。

✧如图1中所示,在“dept”表中插入一条新记录。

✧发出一个选择语句,检验记录的插入。

图7-1

✧打开一个以上的SQLplus的实例,即重新启动SQLplus会话,并连接到您上次使用的相同登录。

现在您可看到两个同时处于活动状态的SQLplus会话,如图7-2所示。

会话2

会话1

图7-2

✧对同一dept表发出选择语句。

在第一个实例中插入的记录不会在第二个实例中显示,因为没有在第一个实例中保存该记录,

✧单击任务栏上的第一个SQL实例。

将激活第一个会话。

✧在SQL提示符下发出一个提交语句。

✧单击任务栏上的第二个会话。

✧为dept表发出选择语句。

在第一个会话中插入的记录也不会在第二个会话中显示。

因为该记录是通过提交语句保存的。

实验7-2:

要理解提交的概念,下面我们看另外一个问题。

执行下面的步骤来理解这个概念。

1.单击第一个SQL实例。

2.如图3所示,插入一项新记录。

图7-3

3.单击第二个会话。

4.在此插入同一项记录。

由于记录是插入到第一个会话中的,我们又试图把相同的记录插入第二个会话中,并且由于deptno是主键,因此第二个会话不允许用户插入记录;而且在第一个会话发出提交语句或回滚语句(以后讨论)之前,挂起第二个会话。

这样就由ORACLE系统内部维护数据完整性。

实验7-3:

在试过了向表中插入记录后,我们再来看看如何保存记录,遵循下面给出的步骤,我们将理解整个过程背后的逻辑。

1.单击任务栏上SQL的第一个会话。

2.将雇员的薪水更新为Rs.4000。

3.单击任务栏上的第二个SQL会话。

4.试着更新相同记录的值。

第二个会话处于挂起状态,因为无论何时更新一个记录,在用户提交或回滚它之前,该记录是锁定的。

因此,如果您发出提交或回滚语句,第二个会话一直是锁定的,直到解锁。

注意:

DDL语句是自动提交的,所以没有必要使用任何提交语句来保存DDL语句所作的更改。

 

7.2撤消更改

我们已用提交语句保存更改,下面看看如何使用回滚语句来达到我们的目的。

回滚语句用于撤消未提交的更改。

实验7-4:

执行下面给出的步骤,用回滚语句进行操作。

1.如图4中所示,在“dept”表中插入一条新记录。

2.发出一个选择语句查看如图4中所示的新记录。

可以看到新记录。

图8-4

3.发出一个如图4中所示的回滚语句。

4.给出一个选择语句查看记录。

您将会看到上次插入的记录没有显示。

因我们已撤消更改,所以记录不显示。

注意:

提交更改之后,就不能执行回滚语句。

 

7.3插入保存点

保存点只是在事务中插入的书签。

这些书签用于标注事务,并配合回滚语句工作。

由于回滚撤消整个任务,与保存点一起使用的回滚可用来撤消事务的某个部分。

实验7-5:

通过下面的操作步骤了解如何使用保存点:

1.删除deptno70和80的记录。

2.发出一个如图5中所示的保存点。

图8-5

3.把deptno40的位置更新为“SANDIEGO”。

更新记录之后,您会意识到没有必要更改位置,因为前一个位置就是正确的。

现在您可以要么发出一个回滚命令来撤消甚至是先前发出的删除语句,要么给出一个提交命令来提交到现在为止所执行的全部操作,然后再发出一个更新语句把位置改回到初始位置。

如果不进行上述操作,我们可以给出一个如下所示的命令来只撤消更新的记录。

图8-6

7.4创建用户

创建用户就是在数据库中增加一个用户帐户,用户可以使用该帐户访问数据库。

可以使用createuser创建账户,语法形式如下:

createuseruser_name

identifiedbypassword

其中:

user_name指定将要创建的数据库用户的名称

password指定该数据库用户的口令。

在创建用户时,创建者应该具有createuser系统权限。

练习8-1:

以scott/tiger身份创建一个用户Hillary,其口令是window.

创建用户之后,如果没有为该用户授予相应的连接数据库的权限,该用户依然不能连接到数据库中。

需要为用户授予createsession的权限。

语法如下:

grantcreatesessiontouser_name

为了保护数据库的安全,用户口令应该经常修改。

可以使用两种方式修改用户口令。

第一种方式是使用alteruser语句修改用户的口令,语法形式如下:

alteruseruser_nam

identifiedbynew_password

第二种方式是使用password命令。

前一种既可以修改当前用户的口令,也可以修改其他用户的口令;后一种只能用来修改当前用户的口令。

7.5授予权限

下面讲述假定您在SCOTT登录中工作如何授予和撤消权限。

而且,我们将对DEMO授予权限或从DEMO登录撤消权限。

注意:

SCOTT登录的密码是TIGER,而DEMO登录的密码在DEMO之中。

7.5.1授予特定的权限

实验7-6:

要将SELECT权限授予emp表上的DEMO,请给出如图7-7中所示的命令。

图7-7

现在就由SCOTT授予了DEMO选择记录的权限。

那么,DEMO将如何访问记录。

为此,请执行如图8-8中所示的步骤。

图8-8

在上面的命令中,我们首先连接到DEMO登录,然后发出选择语句,在那里,在指定表名称时我们把授权人登录名放在了表名称的前面

现在,由于授予人(即SCOTT)只给了选择权限,DEMO用户只能选择记录。

如果DEMO用户试图进行其他操作,就会收到出错信息。

尝试给出如图8-9中所示的命令,以便理解该命令之后的逻辑。

图7-9

7.5.2授予所有权限

在上面的示例中,我们已经了解如何授予特定权限。

实验7-7:

下面我们将举一个我们可以向其他用户授予所有权限的实例。

执行如图8-10中所示的步骤,向其他用户授予所有权限。

图7-10

在上图中,我们首先连接到SCOTT。

然后,我们向DEMO授予了所有权限。

授予权限后,我们连接到DEMO登录。

我们首先发出从授予表中查看所有记录的选择语句。

然后,我们更新记录以更改表中的值。

授予所有权限后,被授权人就可执行所有DML任务。

注意:

被授权人不能删除表,即使授权人给予其ALL权限。

7.5.3理解WITHGRANTOPTION

到现在为止,我们明白了对象的所有者(授权人)向另一个用户(被授权人)授予权限。

而且,被授权人根据其所拥有的权限利用对象。

但是,有时被授权人本身想向第三个用户授予授权人表。

假如主授权人利用WITHGRANTOPTION授予了该表,正常情况下,被授权人无法这样做。

实验7-8:

下面看看一个使用WITHGRANTOPTION的示例。

执行如图8-11中所示的步骤。

图7-11

DEMO将Scott的表授予用户ANI之后,ANI访问该表的方式显示在图8-12之中。

执行如下步骤,了解整个情况。

图7-12

现在,由于SCOTT已授予DEMO所有权限。

DENO在向ANI授予表时可授予任何权限。

但是,假定SCOTT只授予对表的选择权限,则DEMO就只能向ANI授予选择权限。

接下来的步骤是,DEMO向ANI授予权限,DEMO只授予对表的插入权限。

因此,当ANI试图使用选择语句时,他就会收到出错信息。

但是,他可以正常插入值。

7.6撤消权限

我们使用GRANT命令向用户授予权限。

而REVOKE用来从用户那里撤消权限。

实验7-9:

执行如图8-13中所示的步骤,撤消DEMO对ret_emp表的权限。

图7-13

注意:

当SCOTT撤回DEMO的权限后,DEMO授予ANI的权限也自动撤消。

您也可以一次只从被授权人撤回某项特定权限。

练习:

1.利用下列字段信息创建表:

cnonumber

cnamevarchar2(10)

ctelenumber

2.在表中插入8项记录。

3.更新任意一项记录。

4.删除第四项记录。

5.现在,保存插入和更新的记录,并撤消删除的记录。

6.用WITHGRANTOPTION选项向DEMO授予上面的表的访问权限。

7.然后,DEMO将该表授予其他用户。

8.撤消DEMO的权限。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1