数据库链接DB_LINK

通过数据库链接,可以访问另外一个数据库中的表。

select * from table_name@db_link;

数据库链接通常分为公有的和私有的:

1.Private数据库链接,只能由创建的用户使用,创建用户需要被授予CREATE DATABASE LINK的系统权限,创建语句为:

CREATE DATABASE LINK DB_LINK_NAME USING 'NET_SERVICE_NAME';

其中NET_SERVICE_NAME是通过在TNSNAME.ORA中配置的网络服务名。

2.Public数据库链接,创建公有数据库链接需要有CREATE PUBLIC DATABASE LINK权限,删除需要有DROP PUBLIC DATABASE LINK系统权限,public数据库链接可以被当前数据看所有用户使用,创建的语句:

CREATE PUBLIC DATABASE LINK DB_LINK_NAME USING 'NET_SERVICE_NAME';

数据库用户的映射:

本地用户通过使用数据库链接连接到远程数据库,在远程数据库中将以那个数据库用户来发送请求。

1.上面的两个创建数据库链接的例子中都是映射为同名用户,本地数据库当前用户映射为远程数据库同名用户来执行命令;

2.使用如下语句指定一个固定的远程数据库用户,在远程数据库执行命令:

CREATE (PUBLIC) DATABASE LINK DB_LINK_NAME CONNECT TO SCOTT IDENTIFIED BY PASSWORD USING 'NET_SERVICE_NAME';

另外,在本地创建数据库链接时,并不会去验证远程数据库是否有同名用户或是指定的用户,以及密码是否正确,即使有错误,数据库链接也能创建成功,只是以后使用的过程用会报错。

相关数据字典:DBA_DB_LINKS,ALL_DB_LINKS以及USER_DB_LINKS

通常应用:

1.把表1的数据拷贝到表2:

INSERT INTO 表2(列1,列2...)

SELECT 列1,列2... FROM 表2@DB_LINK WHERE 字句;

2.表2不在数据库中:

CREATE TABLE 表2(列1,列2...)

SELECT 列1,列2... FROM 表2@DB_LINK WHERE 字句;




你可能感兴趣的:(oracle,数据迁移)