一、环境说明
源数据库:
IP地址:192.168.137.100 sid:catalog 用户名:rman 密码:rman |
目标数据库:
IP地址:192.168.137.101 sid:orcl 用户名:rman 密码:rman |
二、在目标数据库上创建到源数据库的tnsname。
用oracle用户登录目标数据库,修改 $ORACLE_HOME/network/admin/tnsnames.ora文件,增加如下内容
catalog = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.100)(PORT = 1521)) ) (CONNECT_DATA = (SID = catalog) ) ) |
修改完这个文件之后,执行如下命令,测试创建的tnsname是否正确
$ tnsping catalog |
三、创建 dblink
创建dblink的语句为
CREATE DATABASE LINK CONNECT TO IDENTIFIED BY USING '' |
用oracle用户身份登录目标数据库服务器,执行如下操作
$ sqlplus rman/rman sql> CREATE DATABASE LINK dmp_link CONNECT TO rman IDENTIFIED BY rman USING 'catalog'; |
*************************************
如果出现
ERROR at line 1: ORA-01031: insufficient privileges |
grant create database link to rman; |
然后执行如下语句,测试dblink是否创建成功,能返回结果证明dblink创建成功
SQL> select tname from tab@dmp_link; SQL> exit; |
四、在目标数据库上创建directory对象
以oracle用户登录目标数据库
1、创建一个目录,假设为 /oracle/dmp,并保证这个目录oracle用户可读写
2、以sysdba身份登录数据库,创建directory对象,并给这个对象赋予读写权限
3、然后登录数据库,执行如下语句:
$ sqlplus / as sysdba sql> create or replace directory dmp_dir as '/oracle/dmp'; sql> grant read,write on directory dmp_dir to public; sql> exit; |
五、在目标数据库上执行impdp命令,导入数据
将transdata.sh脚本放到目标数据库的一个目录中,并设置可以用oracle用户运行,然后使用如下命令格式运行
sh transdata.sh |
是目标数据库(要导入的数据库)的用户名
是目标数据库(要导入的数据库)的密码
是目标数据库(要导入的数据库)的实例名(实例名要注意大小写)
六、下面是transdata.sh的脚本
transdata.sh
################################################################################ lv_argc=0 #args count lv_user="" #local database username lv_pwd="" #local database password lv_sid="" #local database sid ################################################################################ lv_argc=$# case ${lv_argc} in 3 ) lv_user=`echo $1| tr "[:lower:]" "[:upper:]"` lv_pwd=$2 lv_sid=$3 ;; * ) echo "usage:$0 username passwd sid" exit ;; esac ################################################################################ export ORACLE_SID=$lv_sid sqlplus $lv_user/$lv_pwd < /dev/null set echo off; set feedback off; set heading off; set pagesize 0; set linesize 120; set termout off; set trimout on; set trimspool on; spool dropobject_tmp.sql Select 'alter table '||t.table_name||' drop constraint '|| t.constraint_name||';' From User_Constraints t Where t.constraint_type='R'; select 'drop '||object_type||' '||object_name||';' from user_objects where object_type not in ('TABLE','INDEX','DATABASE LINK','LOB','TYPE','PACKAGE BODY'); spool off host cat dropobject_tmp.sql|grep -v "^SQL>" > dropobject.sql @dropobject.sql; exit ! ################################################################################ impdp ${lv_user}/${lv_pwd} directory=dmp_dir network_link=dmp_link exclude=USER:"='${lv_user}'" TABLE_EXISTS_ACTION=REPLACE parallel=4 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22049049/viewspace-1029591/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22049049/viewspace-1029591/