oracle数据库远程不落地导入本地数据库

oracle数据库远程不落地导入本地数据库 ---2013.09.29


1. 在要导入数据库的本地主机创建exp(dp)、imp(dp)目录,此处我用的是impdp/expdp:

SQL> create directory dpdump as '/oradata/dpdump';


Directory created.


SQL> select * from dba_directories;查看目录


SQL> grant read,write on directory dpdump to vhfs;


Grant succeeded.


2. 在要导入数据库的本地主机创建dblink

1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库(即数据库导入的源端数据库的tns)。

增加tnsnames.ora文件远程数据库的tnsnames.ora的信息如下:

ORATEST1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oratest1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest1)

)

) 上面这个是本地主机原来的tnsnames.ora文件


Oratest2 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oratest2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest2)

)

) 后来增加的远程数据库tnsnames.Ora的文件



在本地主机上开始创建dblink,在开始创建前要保证本地tnsping oratest2(远程数据库tns) 能通。 (本例中我的数据库实例名和主机名是一样的,这个根据自己环境的实际情况来填写)


以sys用户登录

SQL>create public database link

oratest2_rt connect to oracle identified by oracle using ‘oratest2'


 其中oratest2_rt是你创建的dblink名字,oratest2是远程数据库的实例名(instance),oracle/oracle是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'oratest2'中oracle.tech表sql语句如下所示

SQL> select * from oracle.tech@orc6_rt;

NAME ID PROJECT

---------- -------------------- ----------

白雪 55 钢琴

黎明 22 化学

大猫 29 生物

小猫 18 语文



2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库,

 create database link oratest2_rt

 connect to oracle identified by oracle

 using ‘(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.106)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oratest2)

) 

  )';


  第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。第一种情况tnsnames.ora文件中信息如下:

  Oratest2=

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = oratest2)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVER = DEDICATED)

  (SERVICE_NAME = oratest2)

  )

)


删除及创建DBlink

SQL> drop public database link oratest2_rt;

Database link dropped.

SQL> create public database link

oratest2_rt connect to oracle identified by oracle using 'oratest2';




3. 根据以上步骤创建数据库连接完成后,可以做下面的操作

本地数据库操作远程数据库不落地导入数据:


impdp oracle/oracle DIRECTORY=dpdump NETWORK_LINK=oratest2_rt schemas=oracle


oracle/oracle是远程数据库的用户名和密码,DIRECTORY=dpdump是expdp、impdp目录(此处的目录在不落地导入的时候,只是作为一个中转站,不会有数据存在),NETWORK_LINK=oratest2_rt是DBlink,schemas=oracle是要导入的用户。

注意:

一、在本地数据库下要建立好与远程数据库同样数量和大小的数据文件,然后创建同样的用户oracle并授权,

命令如下:

Sys登录

SQL>create user oracle identified by oracle

default tablespace MGRVHFSTBSDEF 此处是设置默认表空间。

temporary tablespace TEMP 此处是设置默认临时表空间。

profile DEFAULT

quota unlimited on mgrvhfstbs2005 此处是设置可操作的其他表空间

quota unlimited on mgrvhfstbsdef; 此处是设置可操作的其他表空间


用户授权

SQL>grant connect to oracle;

SQL>grant dba to oracle;

SQL>grant unlimited tablespace to oracle;



二、如果用户已存在,则删除用户下所有数据,并重建用户。

1.删除用户

SQL> drop user oracle cascade;

2.创建用户

SQL>create user oracle identified by oracle

default tablespace MGRVHFSTBSDEF 此处是设置默认表空间。

temporary tablespace TEMP 此处是设置默认临时表空间。

profile DEFAULT

quota unlimited on mgrvhfstbs2005 此处是设置可操作的其他表空间

quota unlimited on mgrvhfstbsdef; 此处是设置可操作的其他表空间


用户授权

SQL>grant connect to oracle;

SQL>grant dba to oracle;

SQL>grant unlimited tablespace to oracle;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章