oracle中为每个用户建立同义词,在一个数据库中模拟两个数据库(每个数据库中用户都建立表的同义词)...

OS:AIX5.3

Oracle: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_tables;

把产生的sql语句导出来,然后在lhomswas用户下执行即可。这样可以把lhomswas用户的所有表建立相应的同义词了。

2、用lhomswas查看自己所拥有的表是否已经授权给了lhdt用户SQL>select * from user_tab_privs;

如果没有授权,把所有表的增删改查权限授权给lhdt用户sql语句,如:SQL>select   'grant select,update,insert,delete on '||table_name||' to lhdt;'   from user_tables;

把产生的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

3 default tablespace jtomswas ;

User created.

5、授权权限:SQL> grant connect,resource,dba to jtomswas;

Grant succeeded.

(暂时赋予DBA角色的权限,以便导入数据,不然权限不够)

6、现在先导出其他数据库中的数据,以便导入进来(数据库比较大的话,有可能需要好几个小时)

在Windows的CMD窗口,或者是Linux、UNIX的命令窗口(前提是能够使用Oracle exp、imp的命令):exp  jtomswas/password@ORCL   file=E:\BeiJingDatabaseBackup20081215\beijing20081215.dump    log=E:\BeiJingDatabaseBackup20081215\beijing20081215.log

7、导入到目前的数据库中来(数据库比较大的话,有可能需要好几个小时)

在Windows的CMD窗口,或者是Linux、UNIX的命令窗口(前提是能够使用Oracle exp、imp的命令):imp      fromuser=jtomswas   touser=jtomswas   rows=y  ignore=yes   grants=no   file=E:\BeiJingDatabaseBackup20081215\beijing20081215.dump    log=E:\BeiJingDatabaseBackup20081215\Impbeijing20081216.log

8、新建jtdt用户SQL> create   user  jtdt

2 identified by jtdt;

User created.

9、给jtdt用户授与权限:SQL>grant  connect,resource   to   jtomswas;

暂时赋予connect,resource的角色。

10、需要把jtomswas用户的表权限仅供jtdt用户使用,所有建立私有的同义词,以便与jtdt通讯,用jtomswas用户查询

SQL>select   'create synonym jtdt.'|| table_name || '   for   jtomswas.'||table_name||';'    from   user_tables;

把产生的sql语句导出来,然后在jtomswas用户下执行即可。这样可以把jtomswas用户的所有表建立相应的私有同义词了。

11、把jtomswas用户的表权限授予给jtdt用户SQL>select   'grant select,update,insert,delete on  '|| table_name ||'  to jtdt;'   from user_tables;

把产生的sql语句导出来,然后在jtomswas用户下执行即可。这样可以把jtomswas用户的所有表授权给jtdt用户了。

到此结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值