实现ORACLE如何去除某些用户的DROP权限!
有时在进行项目开发过程中,由于一些误操作会导致数据库的表给误删除掉,为了避免这一情况的发生,如何严格控制某用户不能对自己的库进行DROP权限,需要进行相关设置,由于默认connect的权限也是具有drop自己用户的表结构,通过product_user_profile只能限制sql*plus的操作,而不能限制其它第三方oracle连接工具,最有效的方法就是通过在system用户下建立触发器来限制。
具体如下:
这个trigger建到了system用户下,TEMP几个用户都无法Dop自己的对象,你可以参照进行修改。
CREATE OR REPLACE TRIGGER "TRG_DENY_DROP_UBISP" BEFORE
DROP ON DATABASE
BEGIN
IF (ORA_DICT_OBJ_OWNER='TEMP_ODS' OR
ORA_DICT_OBJ_OWNER='TEMP_MID' OR
ORA_DICT_OBJ_OWNER='TEMP_DW' OR
ORA_DICT_OBJ_OWNER='TEMP_REPORT' OR
ORA_DICT_OBJ_OWNER='TEMP_WEB' OR
ORA_DICT_OBJ_OWNER='TEMP_REPORT_NEW')
AND ORA_LOGIN_USER<>'TEMP_ADMIN'---排除的用户
AND ORA_DICT_OBJ_TYPE='TABLE' AND ORA_DICT_OBJ_NAME NOT LIKE '%OLD' THEN--可以让被限制的用户删除的表
RAISE_APPLICATION_ERROR(-20010,'你不能创建/删除TEMP_%用户下的任何表.');
END IF;
END TRG_DENY_DROP_UBISP;
注:如果要对当前用户限制所有对象的DROP操作,可将触发器中的ORA_DICT_OBJ_TYPE和ORA_DICT_OBJ_NAME的属性去掉即可。
相关文档:
最近,ORACLE系统基本调试通过,是时候设置ORACLE随RHEL自动启动与关闭服务的时候了,之所以把这个任务放在最后来做,是因为我觉得这个应该不会很难,但真正实施起来,还是遇到了个不小的障碍
写好脚本,注册好服务之后,经测试,ORACLE可以随RHEL启动而启动,但不能随系统关闭而关闭。在网上找答案,发现几乎所有的设置过 ......
1.建表空间
create tablespace OSDB datafile 'F:\oracle\oradata\glsqjz\OSDB.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20);
2.建用户
create user OSUSER identified by OSUSER;//identified by 后面的是密码,前面的是用户名
3.用户授权
grant resource,connect,RECOVERY ......
查找数据库中所有字段 以对应的表
select C.column_name,C.TABLE_NAME from dba_tab_columns C where owner=''
查每个科目class 分数scro前三名
select id, name, class, scro
from (select row_number() over(partition by class order by scro desc) cnt,
&n ......
详细地步骤:
1、打开MicroSoft Excel 2000
2、文件(F)→新建(N)→工作簿→
3、输入数据后,存盘为test.xls,
4、文件(F)→另存为(A)→
保存类型为:制表符分隔,起名为text.txt,保存到C:\ &nb ......