用数据库链和触发器可以实现,给你一个例子 create or replace trigger tri_syn after insert or update or delete on testtab for each row declare begin if sqlcode=0 then case when inserting then insert into testtab@postkd values(:new.id,:new.sex,:new.dept); --insert into testtab1 select * from testtab t where t.id=:new.id; when updating then update testtab@postkd t set t.id=:new.id,t.sex=:new.sex,t.dept=:new.dept where t.id=:old.id; when deleting then delete from testtab@postkd t where t.id=:old.id; end case; end if; end tri_syn;
数据库链接 Oracle本地要与远程进行连接,要通过数据库链接。1.使用数据库链接进行查询和更新:SELECT * from worker;这样的语句表示在本地进行查询。而对于远程,则需要在语句后加相应的数据库链接。如:SELECT * FROM worker@remote_connect;如果想省去@号后面的字串,可以采用建立一个本地的同义词来实现。如:CREATE SYNONYM WORKER_SYN for WORKER@remote_connect;如果希望进行远程更新的话,类似可以在UPDATE语句中加上远程连接符。如:UPDATE worker@remote_connect SET lodging=’CRANMER’ where lodging=’ROSE HILL’;2.创建数据库链接的语法:创建数据库链接的语法如下:CREATE [PUBLIC] DATABASE LINK remote_connect CONNECT TO username identified by password using ‘connect string’;一般PUBLIC有DBA来创建。个人用户可以不加PUBLIC就是私有的数据库链接。 Oracle系统可以创建链接,但是连接的数量有限制。缺省的并发数是4(由init.ora文件中的OP_LINKS来限制)。为了建立数据库链接,需要有CREATE DATABASE LINKS 系统权限;要与远程的帐号进行连接还需要有CREATE SESSION普通权限。CREATE database link zhao connect to zhaoyuanjie identified by zhao_yuan_jie Using ‘sun450’;这样创建后,可以用下面语句来使用:SELECT * from tst@sun450;需要注意的是,在创建数据库链接时是根据Oracle的Tnsnames.ora参数文件中的连接字符串来填写连接字串。比如上面的连接字串是sun450 。则在tnsmaes.ora中的要有下面的数据项:SUN450 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = s450) ) )
connect usn identified by pwd
using datasource
有2种方法: 1 建视图(view) , 2 insert 。
这2种方法都要先建 dblink ,如 楼上leborety(那只螃蟹) 所示
我对远程数据库只有查询权限,
dblink是在远程数据库建还是本地数据库建呢,
我想定期从远程数据库的一张表tbl_remote更新本地一张同样结构的表tbl_local,而且只更新在远程数据库操作了insert 和 update 后的记录
create or replace trigger tri_syn
after insert or update or delete on testtab
for each row
declare
begin
if sqlcode=0 then
case
when inserting then
insert into testtab@postkd values(:new.id,:new.sex,:new.dept);
--insert into testtab1 select * from testtab t where t.id=:new.id;
when updating then
update testtab@postkd t set t.id=:new.id,t.sex=:new.sex,t.dept=:new.dept where
t.id=:old.id;
when deleting then
delete from testtab@postkd t where t.id=:old.id;
end case;
end if; end tri_syn;
Oracle本地要与远程进行连接,要通过数据库链接。1.使用数据库链接进行查询和更新:SELECT * from worker;这样的语句表示在本地进行查询。而对于远程,则需要在语句后加相应的数据库链接。如:SELECT * FROM worker@remote_connect;如果想省去@号后面的字串,可以采用建立一个本地的同义词来实现。如:CREATE SYNONYM WORKER_SYN for WORKER@remote_connect;如果希望进行远程更新的话,类似可以在UPDATE语句中加上远程连接符。如:UPDATE worker@remote_connect
SET lodging=’CRANMER’ where lodging=’ROSE HILL’;2.创建数据库链接的语法:创建数据库链接的语法如下:CREATE [PUBLIC] DATABASE LINK remote_connect
CONNECT TO username identified by password using ‘connect string’;一般PUBLIC有DBA来创建。个人用户可以不加PUBLIC就是私有的数据库链接。
Oracle系统可以创建链接,但是连接的数量有限制。缺省的并发数是4(由init.ora文件中的OP_LINKS来限制)。为了建立数据库链接,需要有CREATE DATABASE LINKS 系统权限;要与远程的帐号进行连接还需要有CREATE SESSION普通权限。CREATE database link zhao connect to zhaoyuanjie identified by zhao_yuan_jie
Using ‘sun450’;这样创建后,可以用下面语句来使用:SELECT * from tst@sun450;需要注意的是,在创建数据库链接时是根据Oracle的Tnsnames.ora参数文件中的连接字符串来填写连接字串。比如上面的连接字串是sun450 。则在tnsmaes.ora中的要有下面的数据项:SUN450 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = s450)
)
)