提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
用EXPDP/IMPDP搭建测试库,本地无可用空间,需要直接将数据导出到测试机。
在sys as sysdba下查看是否有权限创建dblink
SQL> select * from user_sys_privs t where t.privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
sys as sysdba用户有创建私有dblink、公有dblink和删除dblink的权限
换一个普通用户test查看一下是否有权限
SQL> conn test
Enter password:
Connected.
SQL> select * from user_sys_privs t where t.privilege like upper('%link%');
no rows selected
查询发现无权限,在sys as sysdba下给用户test授权
SQL> grant create database link to test;
Grant succeeded.
SQL> grant create public database link to test;
Grant succeeded.
SQL> conn test
Enter password:
Connected.
SQL> select * from user_sys_privs t where t.privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ --------------------------------
TEST CREATE PUBLIC DATABASE LINK NO
TEST CREATE DATABASE LINK NO
create public database link HISDBLINK connect to system identified by manager using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.101.122)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
create public database link HISDBLINK connect to system identified by manager using '192.168.101.122/orcl';
drop (public) database link HISDBLINK;
SQL> select * from dba_db_links;
源库t2表数据内容
SQL> select * from t2;
NAME
--------------------
uu
ning
远程库t2表内容
SQL> select * from sys.t2@HISDBLINK;
NAME
--------------------
uu
注:
HISDBLINK:dblink名,自己随便写,只要不和现有dblink名冲突。
private dblink(创建时不加public选项): 只有创建的schema才能删除,sys也删除不了;
public dblink: 任意schema都可以删除,只要权限够。
1.将远程主机hisdb上的数据库导出到hisdg主机上并产生dmp和log文件存放在hisdg的directory里
[oracle@hisdg dump]$ expdp system/manager directory=dir_dp dumpfile=t2.dmp logfile=t2.log full=y network_link=HISDBLINK;
2.直接将远程主机hisdb上的数据库导入到hisdg主机上的数据库中不产生dmp文件(导入之前要建好对应表空间和数据文件)
全库导入
impdp system/manager network_link=HISDBLINK full=y
按用户导入
impdp system/manager network_link=HISDBLINK schemas=test