expdp/impdp导入导出数据

本文详细介绍了如何使用Oracle的expdp工具导出数据,包括查看和创建逻辑备份目录,设置权限,并展示了一次导出操作的完整流程。接着,文章讲述了impdp导入数据的步骤,包括创建导入目录、目标用户,计算表空间使用情况,以及在导入时使用remap_tablespace参数重定向表空间。在过程中,作者遇到了一些错误并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Expdp导出数据

1:查看现有的逻辑备份目录

SQL> col DIRECTORY_PATH for a50

SQL> set linesize 300

SQL> select * from dba_directories;

 

OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH

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

SYS                            DUMP_DIR                       /home/dump

SYS                            XMLDIR                         /u01/oracle/11g/rdbms/xml

SYS                            ORACLE_OCM_CONFIG_DIR          /u01/oracle/11g/ccr/hosts/dg-master/state

SYS                            DATA_PUMP_DIR                  /u01/oracle/admin/orcl/dpdump/

SYS                            ORACLE_OCM_CONFIG_DIR2         /u01/oracle/11g/ccr/state

 

2:自定导出的物理目录

[root@mail ~]# cd /home

[root@mail home]# mkdir backup

[root@mail home]# ls -l

total 72

drwxr-xr-x.  2 oracle  oinstall  4096 May  9 16:28 archivelog

drwxr-xr-x.  2 root    root      4096 Sep 21 11:48 backup

-rw-r--r--.  1 oracle  oinstall  1572 Jun 28 17:50 crs.txt

[root@mail home]# chown oracle:oinstall backup

 

[root@mail home]# ls -l

total 72

drwxr-xr-x.  2 oracle  oinstall  4096 May  9 16:28 archivelog

drwxr-xr-x.  2 oracle  oinstall  4096 Sep 21 11:48 backup

-rw-r--r--.  1 oracle  oinstall  1572 Jun 28 17:50 crs.txt

 

3:创建oracle导出的逻辑目录并给导出用户服务读写权限

SQL> create directory backup as '/home/backup';

 

Directory created.

 

SQL> grant write,read on directory backup to test;

 

Grant succeeded.

SQL> set linesize 300

SQL> col DIRECTORY_PATH for a50

SQL>select * from dba_directories;

 

OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH

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

SYS                            BACKUP                         /home/backup

SYS                            DUMP_DIR                       /home/dump

SYS                            XMLDIR                         /u01/oracle/11g/rdbms/xml

SYS                            ORACLE_OCM_CONFIG_DIR          /u01/oracle/11g/ccr/hosts/dg-master/state

SYS                            DATA_PUMP_DIR                  /u01/oracle/admin/orcl/dpdump/

SYS                            ORACLE_OCM_CONFIG_DIR2         /u01/oracle/11g/ccr/state

 

4:用expdp导出test这个schema的数据

[oracle@mail ~]$ expdp test/test schemas=test directory=BACKUP dumpfile=test.dmp logfile=test.log

******************************************************************************

Dump file set for TEST.SYS_EXPORT_SCHEMA_01 is:

  /home/backup/test.dmp

Job "TEST"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Sep 21 11:59:08 2017 elapsed 0 00:01:00

查看备份文件

[root@mail backup]# ls

test.dmp  test.log

 

Impdp导入数据

1:创建导入目录和导入的目标用户

[root@mail home]# mkdir impdpdir

[root@mail impdpdir]# pwd

/home/impdpdir

[root@mail impdpdir]# chown oracle:oinstall /home/impdpdir

SQL> create directory imp_dir as '/home/impdpdir';

 

Directory created.

 

SQL> create user test2 identified by test2;

 

User created.

 

SQL> grant dba to test2;

 

Grant succeeded.

SQL> grant write,read on directory imp_dir to test2;

 

Grant succeeded.

 

2:查询源数据库test用户的表空间

SQL>  select tablespace_name from user_tablespaces;

 

TABLESPACE_NAME

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

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS

TBS_ODS

 

6 rows selected.

 

4:计算表空间的使用大小(导入的库建立对应的表空间或者给remap的表空间添加对应大小的数据文件)

select b.file_id 文件ID,

       b.tablespace_name 表空间名,

       b.bytes / 1024 / 1024 || 'M' 字节数,

       (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 || 'M' 已使用,

       sum(nvl(a.bytes, 0)) / 1024 / 1024 || 'M' 剩余空间,

       100 - sum(nvl(a.bytes, 0)) / (b.bytes) * 100 占用百分比

  from dba_free_space a, dba_data_files b

 where a.file_id = b.file_id

 group by b.tablespace_name, b.file_id, b.bytes

 order by b.file_id;

 

 

3imp导入数据(我这里使用remap_tablespace参数把所有的表重指定到users,因为一个users数据文件最大扩展到32G。所以在這没有给users添加数据文件)

[oracle@mail backup]$ cd /home/impdpdir/

[oracle@mail impdpdir]$ ls

test.dmp

[oracle@mail impdpdir]$ impdp test2/test2 remap_schema=test:test2 dumpfile=test.dmp directory=imp_dir logfile=imp.log

报错

ORA-39083: Object type JOB failed to create with error:

ORA-00001: unique constraint (SYS.I_JOB_JOB) violated

 

Job导入失败(这是因为我测试本地导入本地另外一个用户)

 

跳过job导入

SQL> drop user test2 cascade;

 

User dropped.

 

SQL> create user test2 identified by test;

 

User created.

 

SQL>  grant write,read on directory imp_dir to test2;

 

Grant succeeded.

 

[oracle@mail impdpdir]$ impdp test2/test2 remap_schema=test:test2 dumpfile=test.dmp directory=imp_dir logfile=imp.log table_exists_action=replace exclude=job

 

ORA-31684: Object type USER:"TEST2" already exists(此问题可以忽略,因为我们在导入之前已经创建了test2用户。)

 

导入导出完毕。Expdp/impdp较之imp/exp的方式更为灵活,只是需要手工建数据文件或者表空间

 

重定向表空间为Remap_tablespaces=tbs1:users,tbs2:users,tbs3:users .....

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值