impdp+network link如何跳过expdp直接导入目标库?

分类:编程技术 时间:2024-02-20 15:59 浏览:0 评论:0
0
本文与大家分享impdp+network link如何跳过expdp,直接导入目标库。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

impdp命令有特殊用途,可以将数据库的用户迁移到另一台机器上的数据库用户。如果目标用户不存在,也可以相应创建用户,将A数据库的用户快速迁移到B数据库。

我们来看看命令格式:

在B库下执行命令:(目标库,需要导入数据到数据库)

>Impdp 用户名/密码 schema=userA remap_schema=userA:userB remap_tablespace=tbsA :tbsB network_link=dblink_name

描述:用户id:用户名/密码用户推荐是系统。

Remap_schema: userA:userB。数据库用户映射。对于同一用户,省略该参数

Remap_tablespace: tbsA:tbsB。默认表空间映射。

架构:userA。必须是dblink中指定的用户。建议不指定。

Directory:该模式下,该参数指定日志文件的路径。如果未指定,路径默认为 data_pump_dir。

Network_link:在库B上创建的dblink,用于连接库A。

但是有几个先决条件:

1.用户名:本次操作推荐数据库用户为system,如果是其他用户,需要有dba权限的用户才能执行;

2. dblink:必须能够连接到相应库上的数据库用户。

3. 优点:不用导出数据然后导入,数据直接从源数据库导入到目标数据库。

4.如果从原库导出schema A,并且在schema A上建立了db_link,则原库的schema A用户必须有exp_full_database权限,否则会报错:strong>

使用分区、OLAP 和数据挖掘选项 ORA-31631:需要权限 ORA-39149:无法将特权用户链接到非特权用户

< p>5.此操作是局域网内迁移数据最方便的工具,但也可能是最慢的工具。

6.还可以用这个方法导入表空间,单独的表等......tablespaces=xxx_tbs就可以。 ...

3。在目标数据库上建立到源的db_link时,可以为系统用户建立,这样整个数据库的数据或者表空间就可以建立了ata 可以导出和导入。

7.为用户A创建db_link时,需要赋予用户A导出schema数据的exp_full_database权限。

8.导入过程中,要注意目标数据库中是否存在表数据。可以使用Table_exists_action来处理。

实验一
源库::192.168.56.20 hostname:slient
目标库::192.168.56.12 hostname:wang

一、目标库操作:
1.创建tns连接字符串:
[oracle@wang admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
[oracle@wang admin]$
[oracle@wang admin]$ cat tnsnames.ora
# tnsnames.ora 网络配置文件:/u01/app /oracle/product/11.2.0/db_1/network/admin/tnsnames.ora< br/># 由 Oracle 配置工具生成。

DBDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = wang)(PORT = 1521))
(CONNECT_DATA =
(服务器 = 专用)
(SERVICE_NAME = DBdb)
)< br/> )

20 =
(DESCRIPTION =
(地址 = (协议 = TCP)(HOST =192.168.56.20)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 测试)
)
)
[oracle@wang admin]$ tnsping 20

Linux 版 TNS Ping 实用程序:版本 11.2.0.4.0 - 于 2017 年 8 月 5 日 23:51:59 生产

版权所有 (c) 1997、2013,Oracle。保留所有权利。

使用的参数文件:


使用 TNSNAMES 适配器解析别名
尝试联系 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.20)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test)))
确定(0 毫秒)
[oracle@wang admin] $

注意:检查源库和目标库是否监听。

2.为源数据库创建dblink
SQL> create public database link test connect to scottidentified by Tiger using '20';

数据库链接c表示。

验证:
SQL> set rows 200 Pages 999
SQL> col db_link for a10
SQL> col host for a10
SQL> select OWNER, DB_LINK,用户名,主机,从 dba_db_links 创建;

所有者 ​ ​ ​bsp; ​---------------------------- ---------- ---------- 公开> 创建由 hh 帐户解锁标识的用户 hh;

用户已创建。


2.为导出用户对应的源数据库授予导出权限:
SQL> grant EXP_FULL_DATABASE to scott;

授权成功。

3.导入目标库:
[oracle@wang admin]$ impdp system/oracle schemas=scott remap_schema=scott:hh  network_link=test

导入:Release 11.2.0.4.0 - Production on 2017 年 8 月 6 日星期日 00:54:06

版权所有 (c) 1982, 2011,Oracle 和/或其附属公司。保留所有权利。

连接至:Oracle Database 11g 企业版版本11.2.0.4.0 - 64 位生产
使用分区、OLAP、数据挖掘和真实应用程序测试选项
自动启用闪回以保持数据库完整性。
启动“SYSTEM”。“SYS_IMPORT_SCHEMA_01”: system/******** schemas=scott remap_schema=scott:hh network_link=test
正在使用 BLOCKS 方法进行估计...
正在处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计:256 KB
处理对象类型 SCHEMA_EXPORT/USER
ORA -31684:对象类型 USER:“HH”已存在
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
HH "."DEPT"                                                       14 行
    E “5 行
/>...." 奖金 "0 行
... ."TEST":"P2"                                                                          0 rows
。 br/>。 。已导入 "HH"."TEST123"                                   0 行
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/IND EX /STATISTICS/INDEX_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作业“SYSTEM”。“SYS_IMPORT_SCHEMA_01”已完成,但出现 1 个错误( s) 2017 年 8 月 6 日星期日 00:54:23 已​​过去 0 00:00:15

[oracle@wang admin]$ 

四。验证:
SQL> conn hh /hh;
已连接。
SQL> select * from tab; --------------- ------- ----------
奖金表
DBXLsp;表
DEPT               表
EMP                                         表
TEST123表

选择了7行。


实验2
< br/>目标库:192.168.56.12 主机名:wang db_name:DBdb service_names:service1,service2,service3
源库:192.168.56.11 hostnamerhel db_name:orcl service_names:orcl

1.目标库操作:
--配置tns到源库
[oracle@wang admin]$ cat tnsnames. ora
# tnsnames.ora 网络配置文件:/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# 由 Oracle 配置工具生成。

orcl =
(DESCRIPTION =
(LOAD_BALANCE = yes)
(地址 = (协议 = TCP)(HOST = 192.168.56.11)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
[oracle@wang admin]$

--查看要导入的用户数据
SQL> conn hr/hr;
已连接。
SQL> select * from tab; ----------------------- ------- ----------
国家   ABLE
JOB_HISTORY TABLE
LOCATIONS TABLE
REGIONS   TABLE

选择了 7 行。

--在中创建 hr 用户的 dblink源数据库:
SQL> 创建数据库链接 ol 连接到 hr 使用的 hr 标识的数据库g'ORCL';

数据库链接已创建。
SQL> 从 dba_db_links 中选择 *; -------------- --------------- ---------------------- ------ -------- --------------- ------------
SYS FTLINK SCOTT 20 OL out out 09-DEC-17



二、源数据库检查:
--检查要导出的测试表
SQL> conn hr /hr;
已连接。
SQL> select * from tab;

TNAME TABTYPE Clusterid
------------------------------------------ ----- -- ----------
国家           表
部门                                     表
JOB_HISTORY表
位置表
地区表
SYNO表

已选择 8 行。

SQL> select count(*) from syno;

COUNT(*)
------ ----
35

--创建索引
SQL> create index idx_object_id on syno(object_id );

索引已创建。

SQL>


3.导入目标库:
[oracle@wang ~]$ impdp \'\/ as sysdba\'tables=hr.SYNO network_link=ol

导入:Release 11.2.0.4.0 -制作于 2017 年 12 月 9 日星期六 08:54:17

版权所有 (c) 1982, 2011, Oracle 和/或其附属公司。保留所有权利。

连接至:Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产
具有分区、OLAP、数据挖掘和真实应用程序测试选项
ORA-31631:需要权限
ORA-39149:不能将特权用户链接到非特权用户

[oracle@wang ~]$



错误:需要将exp_full_database权限授予该用户源库要导出。

--源库授权:
SQL> conn / as sysdba
已连接。
SQL> grant EXP_FULL_DATABASE to hr;

Grant


--再次执行目标库中的导入:
[oracle@wang ~]$ impdp \'\/ as sysdba\'tables=hr.SYNO network_link= ol

导入:版本 11.2.0.4.0 - 于 2017 年 12 月 9 日星期六 09:03:34 生产< br/>
版权所有 (c) 1982、2011,Oracle 和/或其附属公司。保留所有权利。

连接到:Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产
具有分区、OLAP、数据挖掘和实际应用程序测试选项
/>启动“SYS”.“SYS_IMPORT_TABLE_01”:“/******** AS SYSDBA”tables=hr.SYNO network_link=ol
使用BLOCKS方法估计正在进行中...
处理中对象类型 TABLE_EXPORT/ TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计:64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
。 。导入“HR”。“SYNO”                                                             ‐                处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
Proc正在处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
作业“SYS”。“SYS_IMPORT_TABLE_01”已于 2017 年 12 月 9 日星期六 09:03:51 成功完成,已过去 0 00 :00:16

[oracle@wang ~]$
发现索引统计等信息已导入


4.验证:
--目标库验证:
SQL> conn / as sysdba
已连接。
SQL> setlines 200
SQL> selectowner,index_name,table_owner, table_name,来自 dba_indexes 的状态,其中 table_name='SYNO'; TABLE_NAME TABLE_NAME 状态
--- ---------------------------------------- ------------ ---------------------------------------------------------------- --------------- ---------------------------
HR                                        bsp; IDX_OBJECT_ID                                                              HR 选项卡;
br/>-------------------------------- ------- -- --------
国家                     表
部门                                      bsp;标签LE
员工表
工作表
JOB_HISTORY表
LOCATIONS表
REGIONS表
SYNO表

已选择8行。
/>
SQL> select count(*) from syno;

COUNT(*)
----------
35

实验三
源库和目标库参考实验二

任务:将源库下scott用户下的表a、b导入到目标库hr下user,表的表空间映射为TS_XXF,索引的表空间映射为TST

1。源数据库操作,模拟测试表a,b
SQL> conn scott/ Tiger;
已连接。
SQL> select * from tab;

TNAME                                                                                                                                                                        老虎; -------------- ---------- ----------
奖金TABLE
SALGRADE          TABLE

SQL> create table a as select * from emp;

已创建表。

SQL> create table b as select * from user_objects;

已创建表。

SQL> 在 (deptno) 上创建索引 idx_deptno;

已创建索引。

SQL> 在 b(object_id) 上创建索引 idx_obj_id;

已创建索引。

SQL> select count(*) from a;
< br/> COUNT(*)
----------
14

SQL> select count(*) from b;

/> COUNT(*)
----------
8

SQL> conn / as sysdba
已连接。
SQL > col SEGMENT_NAME for a15
SQL> select OWNER,SEGMENT_NAME,TABLESPACE_NAME,BYTESfrom dba_segments where SEGMENT_NAME in('A','B');

OWNER SEGMENT_NAME TABLESPACE_NAME BYTES
- -------------- ---- ---------- ---------------------- --------- ---------- -
Scott B 用户 65536
Scott A 用户65536

SQL> 从 dba_indexes 中选择 OWNER、INDEX_NAME、TABLESPACE_NAME、STATUS,其中 TABLE_OWNER='SCOTT' 和 table_name in ('A','B');

OWNER INDEX_NAME INDEX_NAME TABLESPACE_NAME STATUS
---------------- ------------------------------------------ -------------------- --------------- --------
SCOTT IDX_DEPTNO 用户有效
SCOTT IDX_OBJ_ID 用户有效


2.目标库查询:
SQL> col name for a70
SQL> set rows 200 Pages 999
SQL> select f.file#,
2 t.name tablespace,
3 f.name,
4 trunc(f.bytes / 1048576, 2) size_mb,
5       to_char(f.creation_time, 'yyyy-mm-dd')creation_time,
  6        状态
  7   来自 v$datafile f,v$tablespacet
8 其中 f.ts# = t.ts#
9 按 f.creation_time 排序;

FILE#表空间名称 名称 SIZE_MB CREATION_T 状态
---------------- ------------------------------------ -------------------- ------------------------------------------ -------------------- ------ ---------- ---------- ---- ---
1 系统           ; /u01/app/oracle/oradata/DBdb/sysaux01​​.dbfbr/>        4 位用户                                sp; /u01/app/oracle/oradata/DBdb/users01.dbf 3 UNDOTBS1 3466.25 2013-08-24 在线
3 UNDOTBS1 /u01/app/oracle/oradata/DBdb/undotbs01.dbf /u01/app/oracle/ oradata/DBdb/undotbs01.dbf
5 示例                                                                                           /example01.dbf                                                                                                                                                                                                                                                                      自 a/DBDB/newback/ts_xxf_01.dbf 10 2017-12-07 上线
7 TST /u01/app /oracle/oradata/DBdb /tst.dbf            20 2017-12-09 ONLINE

已选择 7 行。

SQL> select df.tablespace_name "表空间名称",
2    totalspace "总空间 M" ,
3 freespace "剩余空间 M",
4 round((1 - 可用空间 / 总空间) * 100, 2) "使用率%"
5 from (select tablespace_name, round(sum (bytes) / 1024 / 1024)totalspace
6 from dba_data_files
7 group by tablespace_name) df,
8 (select tablespace_name, round(sum(bytes)) / 1024 / 1024) freespace
9   from dba_free_space
10 group by tablespace_name) fs
11 where df.tablespace_name = fs.tablespace_name;

表空间名称 总空间M 剩余空间 M 使用率%
---------------------------------------- ---------- -------- ----- ----------
TS_XXF                                                                                                          p; 20 19 5
SYSAUX 710 41 94.23
UNDOTBS1 2585 2118 18.07
用户 3466 3435  29 91.45

已选择 7 行。

--为源库 scott 创建目标库的 dblink
SQL> create database link sc connect to scott recognizes by Tiger using 'orcl';

已创建数据库链接。
< br/>SQL> 选择 *from dba_db_links;
/>
所有者 DB_LINK 用户名------------------ --------------- ----------
SYS FTLINK 斯科特20 2017 年 8 月 13 日
HR ORA HR orcl 08-DEC-17
SYS OL OL HR HR orcl 09-DEC-17
SYS SC SCOTT SCOTT orcl 09-DEC-17

3.目标库执行导入:
导入表(排除,不包括索引)
impdp \'\/ as sysdba\' remap_schema=scott:hr REMAP_TABLESPACE=USERS:TS_XXF except=index table_exists_action=TRUNCATE TABLES= scott.a,scott.b network_link=sc

仅导入索引(包含)
impdp \'\ / as sysdba\' remap_schema=scott:hr REMAP_TABLESPACE=USERS:TST include=index TABLES=scott.a,scott.b network_link=sc

[oracle@wang ~]$ impdp \'\/ as sysdba\' remap_schema=scott:hr REMAP_TABLESPACE=USERS:TS_XXF except=index table_exists_action =TRUNCATE TABLES=scott.a,scott.b network_link=sc

导入:版本 11.2.0.4.0 - 于 2017 年 12 月 9 日星期六 10:32:50 生产

版权所有 (c) 1982、2011,Oracle 和/或其附属公司。保留所有权利。

连接到:Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产
具有分区、OLAP、数据挖掘和实际应用程序测试选项
ORA-31631: 需要权限
ORA-39149: 无法将特权用户链接到非特权用户

[oracle@wang ~]$  
报错时,需要向源数据库 scott 用户授予 exp_full_database 权限。

--源数据库授权操作:
SQL> conn / as sysdba
已连接。
SQL> grant EXP_FULL_DATABASE to scott;

授权成功。

SQL>

--在目标库中再次执行导入操作:
[oracle@wang ~]$ impdp \'\/ as sysdba\ ' remap_schema=scott:hr REMAP_TABLESPACE=USERS:TS_XXF except=index table_exists_action=TRUNCATE TABLES=scott.a,scott.b network_link=sc

导入:版本 11.2.0.4.0 - 生产于2017 年 12 月 9 日星期六 10:37:37

版权所有 (c) 1982, 2011、Oracle 和/或其附属公司。保留所有权利。

连接到:Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产
具有分区、OLAP、数据挖掘和实际应用程序测试选项
启动“SYS”。“SYS_IMPORT_TABLE_01”:“/******** AS SYSDBA” remap_schema=scott:hr REMAP_TABLESPACE=USERS:TS_XXF 排除=索引 table_exists_action=TRUNCATE TABLES=scott.a,scott.b network_link=sc
正在使用 BLOCKS 方法进行估计...
正在处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计:128 KB
正在处理对象类型 TABLE_EXPORT/TABLE/TABLE< br/>。 。导入了“HR”。“A”                            14 行
。 8 行
作业“SYS”。“SYS_IMPORT_TABLE_01”于 2017 年 12 月 9 日星期六 10:37:50 成功完成,已过去 0 00:00:12

[oracle@wang ~]$
[oracle@wang ~]$ impdp \'\/ assysdba\' remap_schema=scott:hr REMAP_TABLESPACE=USERS:TST include=index TABLES=scott.a,scott.b network_link=sc

导入:版本 11.2.0.4.0 - 于 2017 年 12 月 9 日星期六 10:39:07 生产

版权所有 (c) 1982、2011,Oracle 和/或其附属公司。保留所有权利。

连接到:Oracle Database 11g 企业版版本 11.2.0.4.0 - 64 位生产
具有分区、OLAP、数据挖掘和实际应用程序测试选项
启动“SYS”。“SYS_IMPORT_TABLE_01”:“/******** AS SYSDBA” remap_schema=scott:hr REMAP_TABLESPACE=USERS:TST include=index TABLES=scott.a,scott.b network_link=sc
正在使用 BLOCKS 方法进行估计...
使用 BLOCKS 方法进行总计估计:0 KB
处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS /INDEX_STATISTICS
作业“SYS”。“SYS_IMPORT_TABLE_01”于 2017 年 12 月 9 日星期六 10:39:12 成功完成 elapsed 0 00:00:05

[oracle@wang ~]$

4.目标库验证:
SQL> col SEGMENT_NAME for a15
SQL> select OWNER,SEGMENT_NAME,TABLESPACE_NAME,来自 dba_segments 的字节,其中 SEGMENT_NAME in('A','B');

所有者 SEGMENT_NAME TABLESPACE_NAME BYTES
---------------------------- - -------------- ------------------- ----------- ------ ----
人力资源                                                                                                                                                                                                                                  nbsp; A TS_XXF TS_XXF 65536

SQL> select OWNER,INDEX_NAME,TABLESPACE_NAME,STATUS from dba_indexes where table_name in ('A','B');

OWNER INDEX_NAME TABLESPACE_NAME STATUS < br/>-------------- -------------------------------- -- - -------------------------- --------
HR IDX_DEPTNO TST 有效
HR IDX_OBJ_ID TST VALID

SQL>
SQL> conn hr/hr;
已连接。
SQL> select * from tab;
-- ----------
A 表
B 表
国家/地区表
部门表
员工表
工作表
JOB_HISTORYTABLE
位置表
REGIONS TABLE

已选择 9 行。

SQL> select count(*) from a;

COUNT(*)
-- --------
14

SQL> select count(*) from b;

COUNT(*)
--- -------
8

感谢您的阅读!这篇关于《如何跳过expdp,直接用impdp+网络链接导入目标库》的文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家学到更多的知识。如果您觉得文章不错,可以分享出去,让更多人看到!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > impdp+network link如何跳过expdp直接导入目标库?

用户评论