DBLINK的创建和数据抽取查看使用

it2025-05-30  4

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

 

最新回复(0)