oracle9i同一实例下但不同用户下相同结构的表(多张)之间进行数据复制

hzlong02 2011-08-31 11:19:06
如题,最好能利用PL/SQL Developer,求详细步骤
...全文
275 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenChiM888 2011-08-31
  • 打赏
  • 举报
回复

--1、一起执行没问题 下面这句话的意思是将user1下的a表数据插入到执行用户中
----有几条插入几条,没有记录插入0条,不会影响insert 后面的那个表的数据。
insert a select * from user1.a;

--2、另外如果你user1下和user2下表很多的话,一个一个赋权是必须的。
---或者如果你权限够大,直接付给要同步的用户下面的权限,这样以后user1或者user2下新增表也能正常查到。
grant select any table to 要同步的用户;

hzlong02 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 benchim888 的回复:]
SQL code


--在user1下执行
grant select on a to 同步的用户;
grant select on b to 同步的用户;
--在user2下执行
grant select on b to 同步的用户;
grant select on c to 同步的用户;

--在同步用户下执行
insert a select * from user1.a……
[/Quote]
我只是打个比方,其实有几十张表,能不能一起执行?如果一起执行的话会不会一个用户的空表把另一个用户的数据洗掉?
BenChiM888 2011-08-31
  • 打赏
  • 举报
回复

--在user1下执行
grant select on a to 同步的用户;
grant select on b to 同步的用户;
--在user2下执行
grant select on b to 同步的用户;
grant select on c to 同步的用户;

--在同步用户下执行
insert a select * from user1.a;
insert b select * from user1.b;
insert c select * from user2.c;
insert d select * from user2.d;
commit;

--打完收工。。



[Quote=引用 3 楼 hzlong02 的回复:]
引用 1 楼 luoyoumou 的回复:
-- 不同用户下的所有:相同表名?相同表结构(表字段名、字段类型均相同) ?
-- 的表 相互之间进行复制?要复制的话,主键冲突怎么办?


是这样的,两个用户的模版是一样的,但各用一部分表,比如有a,b,c,d四张表,user1用a,b,user2用才c,d
[/Quote]
hzlong02 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luoyoumou 的回复:]
-- 不同用户下的所有:相同表名?相同表结构(表字段名、字段类型均相同) ?
-- 的表 相互之间进行复制?要复制的话,主键冲突怎么办?
[/Quote]

是这样的,两个用户的模版是一样的,但各用一部分表,比如有a,b,c,d四张表,user1用a,b,user2用才c,d
BenChiM888 2011-08-31
  • 打赏
  • 举报
回复

--举例:用户:U1,U2,U3
表名:U1.T1,U2.T2,U3.T3
--做法:创建一个新的用户U4
CREATE USER U4 IDENTIFIED BY U4;
GRANT CONNECT,RESOURCE TO U4;
GRANT SELECT ANY TABLE TO U4;
GRANT DELETE ANY TABLE TO U4;
GRANT UPDATE ANY TABLE TO U4;
GRANT INSERT ANY TABLE TO U4;

--执行数据复制的话只需要登录到U4上
----假设同步数据 U1.T1到U2.T2,U3.T3
INSERT INTO U2.T2 SELECT * FROM U1.T1;
INSERT INTO U3.T3 SELECT * FROM U1.T1;
COMMIT;

---如果你没有权限建立用户,那就直接把权限付给U1,然后在U1上登录执行操作也可以。


--如果硬要用plsqldev的话
--那就先导出数据为sql,然后再倒入,不过需要切换用户。

luoyoumou 2011-08-31
  • 打赏
  • 举报
回复
-- 不同用户下的所有:相同表名?相同表结构(表字段名、字段类型均相同) ?
-- 的表 相互之间进行复制?要复制的话,主键冲突怎么办?
hzlong02 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 benchim888 的回复:]
7楼的意思是让你将表的增删改查权限付出去,赋权方法我已经给出了。
然后让你在你需要同步的用户中 直接用 用户名.表名的形式对数据进行处理。

如查询:
select * from user1.a;
delete from user1.a;
insert into user1.a values(....);
update user1.a set ......;
相应的,如果你的前台业……
[/Quote]
嗯,谢谢了
BenChiM888 2011-08-31
  • 打赏
  • 举报
回复
7楼的意思是让你将表的增删改查权限付出去,赋权方法我已经给出了。
然后让你在你需要同步的用户中 直接用 用户名.表名的形式对数据进行处理。

如查询:
select * from user1.a;
delete from user1.a;
insert into user1.a values(....);
update user1.a set ......;
相应的,如果你的前台业务逻辑层(假设都是用java写的)操作数据的时候都需要增加[用户名.]


我觉得不符合你的需求。
你自己考虑。
hzlong02 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coolkisses 的回复:]
其实,还有一种更简单的方法。
数据不用复制,只需要将这些表赋权给另一个用户,保证2个用户都能查询(或增、删、改)这些表。这样,也能满足楼主要求,同时,改动最小。
[/Quote]
怎么赋权,求解答
coolkisses 2011-08-31
  • 打赏
  • 举报
回复
其实,还有一种更简单的方法。
数据不用复制,只需要将这些表赋权给另一个用户,保证2个用户都能查询(或增、删、改)这些表。这样,也能满足楼主要求,同时,改动最小。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧