限制DDL操作(三)

出于安全性或避免影响性能的考虑,在产品数据库中有时候会禁止或者在一定时间段内限制DDL语句的发生。Oracle也提高了很多方法来实现这个功能,这个简单介绍一下。

这篇介绍DML_LOCKS初始化参数。

限制DDL操作(一):http://yangtingkun.itpub.net/post/468/479244

限制DDL操作(二):http://yangtingkun.itpub.net/post/468/479277

 

 

前面介绍了触发器和ALTER TABLE DISABLE TABLE LOCK的方式,这里在介绍一种对整个数据库系统有效的方法,设置DML_LOCKS初始化参数。

SQL> SHOW PARAMETER DML_LOCKS

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------------
dml_locks                            integer     748
SQL> ALTER SYSTEM SET DML_LOCKS = 0 SCOPE = SPFILE;

系统已更改。

SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL> STARTUP
ORACLE
例程已经启动。

Total System Global Area  177282664 bytes
Fixed Size                   454248 bytes
Variable Size             109051904 bytes
Database Buffers           67108864 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> CREATE TABLE T (ID NUMBER);

表已创建。

SQL> ALTER TABLE T ADD NAME VARCHAR2(30);
ALTER TABLE T ADD NAME VARCHAR2(30)
*
ERROR
位于第 1 :
ORA-00062:
无法获得 DML 全表锁定;DML_LOCKS 0


SQL> CREATE INDEX IND_T_ID ON T(ID);
CREATE INDEX IND_T_ID ON T(ID)
                         *
ERROR
位于第 1 :
ORA-00062:
无法获得 DML 全表锁定;DML_LOCKS 0


SQL> RENAME T TO T_TEST;
RENAME T TO T_TEST
*
ERROR
位于第 1 :
ORA-00062:
无法获得 DML 全表锁定;DML_LOCKS 0


SQL> DROP TABLE T;
DROP TABLE T
           *
ERROR
位于第 1 :
ORA-00062:
无法获得 DML 全表锁定;DML_LOCKS 0


SQL> CREATE VIEW V_T AS SELECT * FROM T;

视图已建立。

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for 32-bit Windows: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

可以看到,设置DML_LOCKS参数为0后,在对DDL语句的禁止效果上相当于对系统中所有的表都执行了ALTER TABLE DISABLE TABLE LOCK语句。

这个操作仍然是禁止了表的修改的DDL语句,而不会禁止其他DDL语句的发生。

这个方法的优点是可以方便的禁止整个系统中所有表的修改。

缺点就是粒度太过粗糙,而且和ALTER TABLE DISABLE TABLE LOCK方法一样,只能针对表的修改,而无法处理其他类型的DDL操作。

 

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

转载于:http://blog.itpub.net/4227/viewspace-558174/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值