我用A用户建了几个表,然后想把A用户的权限拿掉,其他人用A用户登录进去后,不能修改表的结构,有办法做到吗?我把用户A的所有角色去掉,所有系统权限去掉,只保留了CREATE SESSION和ADMINISTER RESOURCE MANAGER权限(实际上后一个是不知道怎么去掉),限额是不限制。此时A无法建表,但对于以前建的表,还是能ALTER,郁闷死了。难道是因为那几个表是A建的,所有者是它,所以A始终都对它拥有不受限制的特权吗?备注:
1、不能建两个用户的,只能使用用户A。
2、我希望可以通过权限控制,我用的时候就加上这权限,我就可以用A建表,改表,做完后再去掉权限,其他人就没权限改表结构了。谢谢!
解决方案 »
- server2003操作系统上安装oracle出错
- 二维数组问题
- 关于将表中一个列的值以多个列的形式展示出来的问题?
- pl/sql 要将导出的user object 重新添加到新的数据中
- 菜鸟求救,连数据库的影子都看不到!!!
- Orale 运行变慢
- [AB,AC 如何查询出 ABC] 的问题,狂郁闷,列位大哥,能否给小弟指点个思路
- 大家请帮忙!!关于数据自动备份
- 急急急!!!明天上午笔试c++下的oracle数据库开发,有相关经验的朋友,请告诉可能会是哪些问题?
- oracle中存储过程一条查询语句怎么加锁可以在commit之后才可以再次执行这条查询语句
- oracle函数——decode??
- 执行.sql脚本 显示“未连接”是什么错误?
原因如下:我们的系统是用.Net做的,联接字符串为<ConnectString>Data Source=xxx;User ID=xxx;Password=xxx</ConnectString>,我们发现用User ID登录进Oracle时,表名前不加用户名的话,默认的就是访问本用户下的表,而访问不了其他用户的表。因为ConnectString里没有地方指定Schema的名字,所以我们的系统无法支持用其他用户登录访问。-------在SQL SERVER中就不存在这个问题,在ConnectString里可以指定数据库名字,所以你登录到A数据库,完全可以访问B数据库的表。其实,这是我们第一次使用Oracle,对于Oracle中如果让多用户访问同一个Schema的表的方法一直还没搞懂。---我知道可以通过授权让其他用户能访问A用户的表,但问题是,表名前必须要加用户名,这个我们系统暂时不支持。不知道其他系统是如何做到的?
一会试试触发器看看,也许能解决
2 BEFORE DROP OR ALTER on schema
3 declare
4
5 BEGIN
6 if ora_dict_obj_owner = 'SCOTT' AND ora_sysevent ='DROP' then
7
8 Raise_application_error(-20002,'不允许删除对象');
9
10 ELSIF ora_dict_obj_owner = 'SCOTT' AND ora_sysevent ='ALTER' then
11
12 Raise_application_error(-20002,'不允许修改对象结构');
13
14 end if ;
15
16
17 END ;
18 /
Trigger created
SQL> drop table emp;
drop table emp
ORA-00604: error occurred at recursive SQL level 1
ORA-20002: 不允许删除对象
ORA-06512: at line 6
SQL> alter table emp add (c number(2));
alter table emp add (c number(2))
ORA-00604: error occurred at recursive SQL level 1
ORA-20002: 不允许修改对象结构
ORA-06512: at line 10
SQL> alter trigger t_drop_avoid disable;
Trigger alteredSQL> drop table empp;
Table dropped
SQL>
但是oracle里可以更改user的默认Schema吧?
2、新建一个B用户,对所要操作对象建立同名词,只授予DML权限
请教一下如何使用revoke来取消该用户对自己所拥有表的DDL权限?要一个表一个表的运行revoke alter on tablename from 用户命令吗?我试过会提示:ora-01927 不能revoke 没有授予的权限。因为当时给用户赋予的是CREATE TABLE的权限,但我现在要拿到Alter table 的权限,会提示我不能拿掉没有授予的权限。但压根没有人授予它ALTER TABLE的权限,只是因为是它CREATE的表,它是所有者,所以它隐含的默认拥有对该表的所有权限。我是个新学者,求各位高手不吝指教。
on database吧我一般都是给予INSERT/UPDATE/DELETE+创建同名的方法,CREATE SYNONYM a.VOD_EPG_FOLDER FOR b.VOD_EPG_FOLDER ;
GRANT SELECT ON b.VOD_EPG_FOLDER TO a;这样就让别人用A,实际SCHEMA在B,不授权ALTER,就不会修改结构
再给A一个create session
revoke CREATE TABLE他最多能删除SYNONYM,不过也能引起故障哦,恢复比较快的