对于guest权限的控制,可以对每个表显示授权就可以了,例如:GRANT INSERT ON "Admin"."table1" TO "guest";
GRANT SELECT ON "Admin"."table1" TO "guest";
GRANT UPDATE ON "Admin"."table1" TO "guest";
GRANT DELETE ON "Admin"."table1" TO "guest";至于不用加Admin后缀 有两种办法:
1.为每个表创建同义词,例如:
create public synonym table1 for admin.table1;
这个是全局的,谁登录了都可以用
create synonym guest.table1 for admin.table1;
这个只限制guest用户使用
2.创建触发器,在guest用户登录时触发,执行一下语句:
DBMS_SESSION.SET_CONTEXT ('USERENV','CURRENT_SCHEMA','ADMIN');
GRANT SELECT ON "Admin"."table1" TO "guest";
GRANT UPDATE ON "Admin"."table1" TO "guest";
GRANT DELETE ON "Admin"."table1" TO "guest";至于不用加Admin后缀 有两种办法:
1.为每个表创建同义词,例如:
create public synonym table1 for admin.table1;
这个是全局的,谁登录了都可以用
create synonym guest.table1 for admin.table1;
这个只限制guest用户使用
2.创建触发器,在guest用户登录时触发,执行一下语句:
DBMS_SESSION.SET_CONTEXT ('USERENV','CURRENT_SCHEMA','ADMIN');
解决方案 »
- 请问plsql里怎么知道游标取得记录的条数。谢谢
- 字段名中包含特殊字符,应该如何处理
- 从2个表里取数,2个表里的id和name要对应上,下面这样写对吗?
- 存储过程里,参数和变量的区别是?
- linux下oracle的自动备份时间显示的问题
- 30分求一简单sql语句
- 数据库查询中,如果某个连接查询,查询计划是嵌套查询,那么外部循环是大表好还是小表好?
- 可以用SQL语句查询表空间的使用情况吗?
- 求助,表分区存在,但是依然报错ora-02149
- 可不可以强制让优化器进行index unique scan?
- 一个session状态为killed,可一直是Row Exclusive锁,都kill一天了v$sess_io中数据还在增长!
- SQL语句问题
GRANT SELECT ON "Admin"."table1" TO "guest";
GRANT UPDATE ON "Admin"."table1" TO "guest";
GRANT DELETE ON "Admin"."table1" TO "guest";这些语句都是可以通过SQL生成的,没什么麻烦的
那些命令用连接符 || 是可以生成,这个我知道,但是如果以后想添加一个新的表,是不是也要再分配一次权限,同时同义词是不是也要再重新建一次,另外这个数据库里还有很多触发器,很多序列(这两个主要是用于字段自动增1用的),那些序列触发器是不是也要建一些同义词,再分配一次权限才可以访问?
我想试一下这种方法,谢谢
AFTER LOGON ON DATABASE
BEGIN
IF UPPER(sys.login_user) = UPPER('guest') THEN
EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=ADMIN';
END IF;
END;