ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle SQL92_SECURITY初始化参数

Oracle SQL92_SECURITY初始化参数

Linux操作系统 作者:夜的第七章I 时间:2015-03-25 15:00:22 0 删除 编辑

        这篇文章通过例子讨论sql92_security初始化参数的作用。

sql92_security


Oracle 11.1.0:

Parameter Name: sql92_security
Description: require select privilege for searched update/delete
Type: BOOL Obsoleted: FALSE
Can ALTER SESSION: FALSE Can ALTER SYSTEM: FALSE 

参考文章:http://www.orafaq.com/parms/parm1917.htm

        当sql92_security被设置成TRUE时,对表执行UPDATE/DELETE操作时会检查当前用户是否具备相应表的SELECT权限。下面的例子展示了该参数的作用:

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期二 5月 21 18:17:45 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter sql92

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sql92_security                       boolean
FALSE
SQL> show user
USER 为 "SYS"
SQL> select * from a.atest;

        ID NAME
---------- ----------------------------------------
         1 aaa
         2 bbb
         3 ccc
         4 ddd

SQL> grant update,delete on a.atest to b;

授权成功。

SQL> connect b/oracle123123
已连接。
SQL> select * from a.atest;
select * from a.atest
                *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> delete from a.atest where id=4;

已删除 1 行。

SQL> commit;

提交完成。

SQL> update a.atest set name='abc' where id=3;

已更新 1 行。

SQL> commit;

提交完成。

SQL> connect / as sysdba
已连接。
SQL> select * from a.atest;

        ID NAME
---------- ----------------------------------------
         1 aaa
         2 bbb
         3 abc

SQL> show parameter sql92

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sql92_security                       boolean
FALSE
SQL> alter system set sql92_security=true scope=spfile;

系统已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  263639040 bytes
Fixed Size                  1384012 bytes
Variable Size             167772596 bytes
Database Buffers           88080384 bytes
Redo Buffers                6402048 bytes
数据库装载完毕。
数据库已经打开。
SQL> connect b/oracle123123
已连接。
SQL> select * from a.atest;
select * from a.atest
                *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> delete from a.atest where id=3;
delete from a.atest where id=3
              *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> update a.atest set id='abc' where id=2;
update a.atest set id='abc' where id=2
         *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> connect / as sysdba
已连接。
SQL> grant select on a.atest to b;

授权成功。

SQL> connect b/oracle123123
已连接。
SQL>  delete from a.atest where id=3;

已删除 1 行。

SQL> commit;

提交完成。

SQL>  update a.atest set name='abc' where id=2;

已更新 1 行。

SQL> commit;

提交完成。

SQL> select * from a.atest;

        ID NAME
---------- ----------------------------------------
         1 aaa
         2 abc

--end--


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30175500/viewspace-1473173/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2015-03-24

  • 博文量
    1
  • 访问量
    2758