目前数据库有两个tablespace, 一个是 HDS(登陆帐号:accountHDS),另一个是HDSDemo(登陆帐号:accountDemo)。
HDS是正式库,HDSDemo是培训用的数据库,两个表空间里的数据表每天同步,一共有490个表。我想创建一个只能访问Demo库权限的帐号(登陆帐号:accountTest)。默认表空间:HDSDemo
临时表空间:TEMP
Profile:DEFAULTGrant connect,select any table to accountTest;问题:当分配好权限后,该帐号不仅仅可以通过 [accountDemo.表名] 访问 Demo库的表,同时也可以通过[accountHDS.表名]。求教:能否只让该帐号访问Demo表,禁止访问正式表?
HDS是正式库,HDSDemo是培训用的数据库,两个表空间里的数据表每天同步,一共有490个表。我想创建一个只能访问Demo库权限的帐号(登陆帐号:accountTest)。默认表空间:HDSDemo
临时表空间:TEMP
Profile:DEFAULTGrant connect,select any table to accountTest;问题:当分配好权限后,该帐号不仅仅可以通过 [accountDemo.表名] 访问 Demo库的表,同时也可以通过[accountHDS.表名]。求教:能否只让该帐号访问Demo表,禁止访问正式表?
解决方案 »
- 谁有oracle 9i win32系统的
- sql语句优化
- sqlserver数据库中的数据导入到oracle数据库
- 复杂的交叉、纵转横同时求最大、最小和发生时间的sql语句
- Oracle9i触发器的简单问题——涉及new,old
- oracle 安装后启动出错。急啊。。在线等。。(100分)
- imp80时oracle提示的错误(在win2000p下)
- ORACLE下创建一个新的资料库时,为何每次都说无法处理服务名?--急!
- Could not execute JDBC batch update
- 如何将Oracle中一张表的数据进行合并?
- rac crs宕了后,会产生core文件,这些文件如何查看?
- WIN7下ORACLE安装连接的问题
对accountDemo的表一一授予对象权限
你可以先测试一张表试试!
这样可以,但我有500个表,不能一个一个表去分喔。我只想将某个用户下所有表的select权限授给accountTest.
set serveroutput on;
declare
vs_sql varchar2(100) := '';
cursor c_table_name is select table_name from all_tables where owner = 'SCOTT';
begin
for rec_table_name in c_table_name loop
dbms_output.put_line(rec_table_name.table_name);
vs_sql := 'grant select on ' || rec_table_name.table_name || ' to public';
execute immediate vs_sql;
dbms_output.put_line(vs_sql);
end loop;
end;