数据的导入与导出
数据泵导出使用工具EXPDP将数据库对象的元数据(对象结构) 或数据导出到转储文件中。而数据泵导入则是使用工具IMPDP将转储文件中的元数据及其数据导入到Oracle数据库中。假设EMP表被意外删除,那么可以使用IMPDP工具导入EMP的结构信息和数据。
使用数据泵导出或导入数据主要有以下优点:
数据泵导出与导入可以实现逻辑备份和逻辑恢复。通过使用EXPDP,可以将数据库对象备份到转储文件中;当表被意外删除或其他误操作时,可以使用IMPDP将转储文件中的对象和数据导入到数据库中。
数据泵导出和导入可以在数据库用户之间移动对象。例如,使用EXPDP可以将SCOTT方案中的对象导出并存储在转储文件中,然后再使用IMPDP将转储文件中的对象导入到其他数据库方案中。
使用数据泵导入可以在数握库之间移动对象。
数据泵可以实现表空间的转移,即将一个数据库的表空间转移到另一个数据库中。
数据泵工具EXPDP和IMPDP速度上优于EXP和IMP。
EXPDP可以将数据库对象的元数据(对象结构)或者数据导出到存储文件中。
IMPDP则可以将存储文件的数据导入到Oracle数据库中。
调用EXPDP和IMPDP只需要在命令提示符窗口输入即可,无需连接成功数据库。
1.EXPDP导出
EXPDP是【服务端】工具,只能在Oracle服务端使用,不能在Oracle客户端使用。
oracle提供的EXPDP可以导出【表】【模式】【表空间】【全数据库】4种数据。
【注意】
EXPDP工具只能将导出的转储文件存放在dierctory对象对应的磁盘目录中,而不能直接指定转储文件所在的磁盘目录。
因此,在**使用EXPDP工具时候,首先建立directory对象,并且需要为数据库授权使用directory对象的权限**。
前提:创建一个directory对象,并且为某个用户授予使用该目录的权限(我是用的me用户)
creat directory dump_dir as 'd:\dump';
grant read,write on directory dump_dir to me;
导出表
导出表是指一个或者多个表的结构及其数据存储到转储文件中。
普通用户只能导出自身模式中的表,如果要导出其他模式下的表,则要求用户必须拥有EXP_FULL_DATABASE角色或者DBA角色。
在导出表的时候,每次只能导出一个模式中的表。
例子:导出me模式下的dept和emp表
--将文件转存储到tab.dmp文件中,文件位于dump_dir目录对象所对应的磁盘目录中。
C:\>expdp me/me123 driectory=dump_dir dumpfile=tab.dmp tables=emp,dept;
导出模式
导出模式是将一个或者多个模式中所有的对象结构及数据存储到转储文件中。
导出模式的时候,要求用户必须具有DBA角色或者EXP_FULL_DATABASE角色。
例子:导出me模式中的所有对象
C:\>expdp system/Sa123456 directory=dump_dir dumpfile=schema.dmp schemas=me;
导出表空间
将一个或者多个表空间中所有的对象及数据存储到转储文件中。
C:\>expdp systerm/Sa123456 directory=dump_dir dumpfile=tablespace.dmp tablespaces=users;
导出全数据库
将数据库中所有的对象及数据存储到转储文件中。
要求用户必须具有DBA角色或者EXP_FULL_DATABASE角色。
但不会导出SYS,ORDSYS,ORDPLUGINS,CTXSYS,MDSYS,LBACSYS,XDB等模式中的对象。
C:\>expdp system/Sa123456 directory=dump_dir dumpfile=fulldatabase.dmp full=y;
2.IMPDP导入数据
数据泵导入数据时,其转储文件被存储在directory对象所对应的磁盘目录中,不能直接指定转储文件所在的磁盘目录。
导入表
将放在转储文件中的一个或多个表的结构及数据装载到数据库中。
导入模式时候需要使用TABLES参数。
普通用户只能导入自及的模式中,如果要以其它用户身份导入表,则要求用户必须拥有EXP_FULL_DATABASE角色或者DBA角色。
导入表,可以将表导入源模式中,也可以将表导入其它模式中。
例子:将dept,emp导入到system模式中
C:\>impdp system/Sa123456 directory=dump_dir dumpfile=tab.dmp tables=me.dept,me.emp remap_schema=me:system;
导入模式
将放在转储文件中的一个或多个模式下的所有对象装载到数据库中。
导入模式时候需要使用SCHEMAS参数。
普通用户可以将对象导入期自身模式中,如果以其他区用户身份导入模式时,需要该用户必须拥有IMP_FULL_DATABASE角色或者DBA角色。
导入模式时,可以将模式的所有对象导入源模式中,也可以将模式的所有对象导入其它模式中。
例子:将me模式下的所有对象导入system模式中
C:\>impdp system/Sa123456 directory=dump_dir dumpfile=schema.dmp schemas=me remap_schema=me:system;
导入表空间
将放在转储文件中的一个或多个表空间的所有对象装载到数据库中。
导入表空间时候需要使用TABLESPACES参数。
C:\>impdp system/Sa123456 directory=dump_dir dumpfile=tablespace.dmp tablespaces=tbsp_1;
导入全数据库
将放在转储文件中的所有数据库对象的所有对象及其相关数据装载到数据库中。
导入全数据库时候需要使用FULL参数。
C:\>impdp system/Sa123456 directory=dump_dir dumpfile=fulldatabase.dmp full=y;