DATABASE LINK

首先两个库是必须的
这里我的两个库分别是orcl1与cradle_218
首先在cradle_218中建立实验要用到的表
--创建实验表
create table FOO
(
fid VARCHAR2(10) not null,
fname VARCHAR2(20),
fsex CHAR(4),
fage NUMBER(4)
);
-- 建立主键
alter table foo add constraint pk_foo_id primary key(fid);
--创建实验序列
create sequence SEQ_TESTID1
start with 1
increment by 1
nomaxvalue
nocache
nocycle;
--循环插入几条数据
declare
fid varchar2(20);
fname varchar2(20);
fsex char(4);
fage number(4);
flag number(4);
begin
fname :='test';
fsex := '1';
fage :=20;
for i in 1..10 loop
select SEQ_TESTID1.NEXTVAL into fid from dual;
insert into foo values(fid,fname,fsex,fage);
commit;
end loop;
end;

--查询foo的结果
select * from foo;
可以查到我们循环插入的10条数据。

我们 登陆到orcl1库下,同样建立foo表。sql语句与上面一致。只是不要执行下面的过程不要向里插入数据,建张空表即可。

下来我们在orcl1库中建立dblink来连接orcl1
代码如下 鄙人手写
create public database link
connect to identified by
using 'cradle_218' ;
第一句话,创建一个连接,连接的名字自己取
第二句话,给定要连接的库的用户名及密码
很多时候会有一个问题,就是连接不上,尝试一下将用户名和密码使用双引号括起来例如“username” “password”
第三句话,告诉本地数据库,对方数据库的描述符,一般都在tnsnames.ora文件中可以找到 .
接着测试连接:我们在orcl1库中输入:
select 1 from dual@cradle_218;
如果查出来结果那就证明已经连接OK了。
----------------------------------------------------------------------------------------------------------------------------
下面来一个比较白痴的测试:
在orcl1库中:select * from foo;
结果为空表。
依旧在orcl1中:select * from [url=mailto:foo@db_cradle]foo@db_cradle[/url];
结果为我们在cradle_218中建立的foo表并有已经插入的数据。很明显我们已经跨数据库进行了查询。
-----------------------------------------------------------------------------------------------------------------------------
此外也可以在orcl1中写入insert into [url=mailto:foo@db_cradle]foo@db_cradle[/url] values(...);
如果你插入的values中有sequence那么需要将global_names的参数改成true
在init.ora中修改并重启数据库。
update [url=mailto:foo@db_cradle]foo@db_cradle[/url] set ..where ..;
delete from [url=mailto:foo@db_cradle]foo@db_cradle[/url] where ...;
能否在orcl1中删除cradle_218中的表的呢。。。经测试是不行滴~~至于是否有办法删我不太清楚。
-----------------------------------------------------------------------------------------------------------------------------
GO ON
先将orcl1中的空的foo表删掉
创建目录
create directory chunf as 'd:\' ;
grant
grant read,write on directory chunf to public;
-----------------------------------------
impdp
c>:impdp [url=mailto:system/******@orcl1]system/******@orcl1[/url] directory=chunf network_link=db_cradle tables=foo logfile = chunf.log
这样就可以把cradle_218中的foo表(数据)导入到orcl1下了。
-----------------------------------------------------------------------------------------------------------------------------
在整个的实验中orcl1数据库的角色相当于一个操作者而cradle_218库相当于一个被操作者。
一开始先由操作者orcl1发起操作,创建了dblink,跨库操作了被操作者cradle_218中的数据库表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值