1.查询dblink和权限设置
select * from sys.user_sys_privs t where t.privilege like upper('%link%');
CREATE DATABASE LINK --所创建的dblink只能是创建者能使用,别的用户使用不了
CREATE PUBLIC DATABASE LINK --public表示所创建的dblink所有用户都可以使用
2.使用如下sql进行创建
create database link TESTDBLINK connect to scott identified by 000000 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.98)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
TestDblink :表示dblink名字 dbName : 表示远程数据库的用户 dbPassword:表示 远程数据库的密码 HOST : 表示远程数据库IP PORT : 表示远程数据库端口 SERVICE_NAME : 远程数据库的实例名
3.使用dblink访问远程的数据库,查询就和本地一样了
select * from emp@TESTDBLINK;
4.创建dblinkl所需要的的表
select 'create table ' || table_name || ' as select * from ' || table_name || '@TESTDBLINK ;' from dba_tables@TESTDBLINK where owner = 'scott';
5.复制表结构
create table emp as select * from emp@TESTDBLINK where 1=2 ;
6.全表复制
create table emp as select * from emp@TESTDBLINK ;
7.删除dblink
drop public database link TESTDBLINK ;
8.比较两个表的差异值
create table temp_table as select t1.* from (select * from emp minus select * from emp@TESTDBLINK) t1 union select t2.* from (select * from emp@TESTDBLINK minus select * from emp) t2
9.将差异值进行补齐
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO from temp_table