两台数据库服务器:
192.168.16.38 上装有oracle7
192.168.16.34 上装有oracle9i
现要将16.38上的数据导入到16.34上的数据库中去,不用imp和exp,如何做?
1、现用powerdesigner7.5导出16.38上的基表结构,包括视图、函数、触发器、序列等。
tools -> export user objects -> export
2、将导出的脚本在16.34的sqlplus中运行,建立基表结构。
3、vi $oracle_home/network/admin/tnsnames.ora
配置16.34上的tnsnames.ora文件,使16.34上的sqlplus能够链接到16.38上的oracle7数据库,假设链接到16.38的tns name是ctgpc1638,加上以下代码:
ctgpc1638 =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.16.38)(port = 1521))
)
(connect_data =
(sid = orcl)
)
)
4、来16.34上运行sqlplus,建立数据库链:
create database link from1638 //from1638:db链名,使用时用它,名字可任取。
connect to ctpgc identified by comdev2399 //ctgpc和comdev2399是远程数据库的用户名和密码
using ctpgc8834 //连接串,即在16.34上tnsnames.ora中配置的tns name
/
5、在16.34的sqlplus中键入:
select insert into ||tname|| select * from ||tname||@from1638; from tab;
6、将屏幕结果copy下列,放到ultraedit中备用,整理成纯脚本,类似如下所示:
insert into code_tables select * from code_tables@from1638;
7、将上面生成的脚本语句粘贴到16.34上的sqlplus中去执行,就可以插入数据了。
8、上面的脚本中可能包含有视图的数据插入语句,这时不用视图的语句,只需用另外的脚本导入视图结构即可,因为它是视图,不用插入数据。
9、关于数据库链的几点说明:
1)使用数据库链操作时,应先建立数据库链。
2)使用时,应使用db链名,而不是连接串。
3)使用db链名时,前面应加上“@”符号。
author: 徐云生 2002/05/14