如何在一个用户下oracle授权创建同义词另一个用户的所有同义词

查看: 11818|回复: 8
请问如果把一个用户的所有对象的访问权限,赋予另一个用户
论坛徽章:8
请问如果把一个用户的所有对象的访问权限,赋予另一个用户
&&比如我要把CAGAN 的所有表 视图 过程的 所有权限给 ADM
&&如果一个一个赋予,太多了,就是做成脚本也太多,3万个对象
&&请问有没有简单语法做这个?
&&谢谢大家
论坛徽章:10
直接把 cagan的密码告诉他们不得啦
论坛徽章:44
grant ** on ** to user
利用user_tables或者其它对象视图批处理很好实现
认证徽章论坛徽章:286
SELECT 'grant all on '||object_name||'to user_' FROM user_
把查出来的结果执行一下怎么样?
认证徽章论坛徽章:286
3万多个,就是3万多条GRANT语句,执行起来很快的。
论坛徽章:7
好像只能写脚本了。
希望oracle下一个版本能有这样的功能。
论坛徽章:16
最好的办法是你创建一个角色Role_read,创建a用户的每一个对象时,都将其select权限赋给Role_read,然后把role_read授权给另一个用户就可以了。
论坛徽章:8
OK 谢谢大家,最后我还是只有做成脚本
下次考虑弄成role
论坛徽章:1
SQL& create user john
User created
SQL& create user test
User created
----一次性授权的权限太多,建议使用role
SQL& create role select_all_john_
Role created
----使用游标,将权限一次性赋予select_all_john_tab这个role
SQL& declare
& &2& & CURSOR c_tabname is
& &3& && &select table_name from dba_tables where owner = 'JOHN';
& &4& & v_tabname dba_tables.table_name%TYPE;
& &5& & sqlstr& & VARCHAR2(200);
& &7&&begin
& &8& & open c_
& &9& & loop
10& && &fetch c_tabname
11& && &&&into v_
12& && &exit when c_tabname%NOTFOUND;
13& && &sqlstr := 'grant select on john.' || v_tabname ||
14& && && && && & ' to select_all_john_tab';
15& && &exec
17& & close c_
PL/SQL procedure successfully completed
----再将role赋予test用户
SQL& grant select_all_john_
Grant succeeded
SQL& conn test/oracle
Connected.
SQL& select * from john.t;
no rows selected
执行一遍即可
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号Oracle一个用户如何访问其它用户的表应用指南
字体:[ ] 类型:转载 时间:
本文将详细介绍Oracle一个用户如何访问其它用户的表,需要的朋友可以参考下
假如Oracle中有两个用户A和B,那么如果A要访问B拥有的表,语句应该是:
代码如下: SELECT * FROM B.TABLENAME。
我要问的是,能否通过修改Oracle的设置,将A访问B拥有表的语也变为跟B用户登录一样的语句:SELECT * FROM TABLENAME?
代码如下: create synonym tablename for B.TABLENAME;
除了一楼的创建同义词外,还要授予A用户访问改同意词的权限.
代码如下: dro
1 可以使用查询生成sql语句,比如
代码如下: select 'CREATE SYNONYM '||table_name||' FOR A.'||table_name from dba_tables where owner = 'A'
然后执行这些sql语句。 或者写存储过程实现. 2 select any table 权限可以允许访问所有表
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具查看:4493|回复:3
助理工程师
如题,请高手指点。
高级工程师
1、在要移动到的用户上建表,然后把原用户下的表内容拷过去。
create table newtable as select *
然后再把其上的索引、约束之类的手工创建一遍。
2、用EXPDP/IMPDP等逻辑导出和导入工具,把指定的表导出,再导入到指定的用户下。
助理工程师
引用:原帖由 bfc99 于
12:25 发表
1、在要移动到的用户上建表,然后把原用户下的表内容拷过去。
create table newtable as select *
然后再把其上的索引、约束之类的手工创建一遍。
2、用EXPDP/IMPDP等逻辑导出和导入工具,把指定的表导 ... 明白了,谢谢!
可以使用管理员(dba)账户查询出来插入到另一个用户的表中;
也可以使用plsql导出表,在导入。博客访问: 426696
博文数量: 45
博客积分: 931
博客等级: 准尉
技术积分: 590
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
比如用两个用户user1和user2,现在需要user2能创创建表user1.tblname, 如何能够实现呢?下面三步能够实现上面的功能:1、先用sysdba登陆: grant GRANT ANY PRIVILEGE to user1;2、用user1登录: grant connect,resource to user2;3、用user2登录: 就可以在user1下创建Table了。create table user1.tbl123(id char(20))
阅读(5140) | 评论(1) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
恩,挺方便的,学习了!
请登录后评论。博客访问: 2593364
博文数量: 348
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
OS:AIX5.3Oracle:Oracle10.2.0.1.0标题:在一个数据库中模拟两个数据库(每个数据库中都表的同义词)
需求描述:目前需要在一个数据库中模拟两个数据库(每个数据库中都需要有2个用户访问相同的对象,这就需要建立私有同义词)。原来的数据库中存在一个lhomswas用户,该用户所拥有的对象增删改查权限都赋予给lhdt用户,该用户还创建了与表名一样的公共同义词(public synonym),现在需要新建一个jtomswas用户,这个用户导入其他的数据库,jtomswas用户所拥有的对象都授权给jtdt用户。(这同时需要新建jtdt用户,并在jtomswas用户的表中建立私有的同义词,这样方便jtdt使用)。
因为数据库已经存在了lhomswas用户,并且存在了lhdt用户。1、用lhomswas用户查看自己拥有的同义词
SQL>select * from all_synonyms where table_owner='LHOMSWAS';
如果表中没有公共的同义词,可以创建;把所有的表创建相应的公共同义词sql语句,如:
SQL>select& 'create or replace public synonym '||& table_name ||& ' for lhomswas.'||table_name||';'&& from&& user_
把产生的sql语句导出来,然后在lhomswas用户下执行即可。这样可以把lhomswas用户的所有表建立相应的同义词了。
2、用lhomswas查看自己所拥有的表是否已经授权给了lhdt用户
SQL>select * from user_tab_
如果没有授权,把所有表的增删改查权限授权给lhdt用户sql语句,如:
SQL>select & 'grant select,update,insert,delete on '||table_name||''&& from user_
把产生的sql语句导出来,然后在lhomswas用户下执行即可。这样可以把lhomswas用户的所有表授权给lhdt用户了。
3、在数据库中创建表空间,用来供新创建jtomswas使用
SQL> create tablespace jtomswas
&2 datafile '/home/oraoms/oradata/omsdata/jtomswas.dbf'
3 size 512M autoextend on maxsize 10G;
Tablespace created.
4、创建jtomswas用户
SQL> create user jtomswas
2 identified by jtomswas
User created.
5、授权权限:
SQL> grant connect,resource,
Grant succeeded.(暂时赋予DBA角色的权限,以便导入数据,不然权限不够)
6、现在先导出其他数据库中的数据,以便导入进来(数据库比较大的话,有可能需要好几个小时)在Windows的CMD窗口,或者是Linux、UNIX的命令窗口(前提是能够使用Oracle exp、imp的命令):
exp &jtomswas/password@ORCL&& file=E:\BeiJingDatabaseBackup\beijing.dump&&& log=E:\BeiJingDatabaseBackup\beijing.log
7、导入到目前的数据库中来(数据库比较大的话,有可能需要好几个小时)在Windows的CMD窗口,或者是Linux、UNIX的命令窗口(前提是能够使用Oracle exp、imp的命令):
imp& && &fromuser=jtomswas& &touser=jtomswas& &rows=y& ignore=yes&& grants=no& &file=E:\BeiJingDatabaseBackup\beijing.dump&&& log=E:\BeiJingDatabaseBackup\Impbeijing.log
8、新建jtdt用户
SQL> create& &user &jtdt
&&&&& 2 identified by jtdt;
&User created.
9、给jtdt用户授与权限:
SQL>grant& connect,resource&& to& &
暂时赋予connect,resource的角色。
10、需要把jtomswas用户的表权限仅供jtdt用户使用,所有建立私有的同义词,以便与jtdt通讯,用jtomswas用户查询
SQL>select&& 'create synonym jtdt.'|| table_name || '&& for& &jtomswas.'||table_name||';'&&& from&& user_
把产生的sql语句导出来,然后在jtomswas用户下执行即可。这样可以把jtomswas用户的所有表建立相应的私有同义词了。
11、把jtomswas用户的表权限授予给jtdt用户
SQL>select&& 'grant select,update,insert,delete on &'|| table_name ||'&'&& from user_
把产生的sql语句导出来,然后在jtomswas用户下执行即可。这样可以把jtomswas用户的所有表授权给jtdt用户了。
到此结束!
阅读(2016) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 创建同义词权限 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信