Oracle使用DB_link迁移数据

现在公司要做业务分离大概三千多万条数据存放在oracle,常用的方式可以直接导出一个文件把结构和数据全部都导出去,这样的方式适合小数据,大数据不适合,而且这种方式出问题了很难定位查看日志,而且还的有专门的人看着,太麻烦,我们可以采取DB_Link的方式。


授权:
grant create database link to oracle;
grant create public database link to oracle;
这个需要注意下如果和客户对对接,一般都是客户那边安装oracle,这样的情况下一般您不需要自己去授权,让客户给你授权就完事了。

查询权限,分配权限
select * from user_sys_privs t where t.privilege like upper('%link%');
grant dba,conn,create database link,create public database link to test;

创建连接
create database link your_dblink_name
connect to 用户名 identified BY "密码"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 12.2.2.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclgcjx)
)
)';
参数解释
SERVICE_NAME = 为访问数据的实例名
your_dblink_name:创建的dblink的名称,可以随便命令,但要有意义即可;
username :目标数据库的用户名,无需使用引号括起来。
password:目标数据库的密码,需要使用双引号括起来。
ps:using后的面语句的格式需要注意,注意其中的空格,单个空格键,错误的空格会导致创建的dblink无效。

测试是否连接上
select * from 要查询的表@your_dblink_name (你的link 的名字) ;
如果测试可以查到数据表示成功

开始复制数据(这种方式必须要求表结构必须一致,要不然就是自定义表结构相关字段)
insert into AA
select *
from AA@your_dblink_name;

删除dblink,必须具有owner权限
drop public database link your_dblink_name;
drop database link your_dblink_name;

关闭dblink session
alter session close database link your_dblink_name;

查看dblink使用情况
select * from v$database link;
select * from gv$database link;

查看创建的db_link
select * from dba_db_links;

posted on 2022-09-23 11:16  UnmatchedSelf  阅读(381)  评论(0编辑  收藏  举报

导航