使用数据泵做导入导出时遇到的问题整理笔记
语法:create or replace directory <路径名称> as ‘备份路径’
create or replace directory file_path as 'C:\软件\数据库文件'
--赋权限给smsdb用户:
grant read,write on directory file_path to smsdb;
1.3:备份数据库(在CMD中执行)
语法:expdp用户名/密码@数据库连接标示符 directory=路径名称 dumpfile=备份的文件名称 logfile=输出的日志名称 schemas=需要备份的数据库用户名
expdp smsdb/123456@oracle11 directory=file_path dumpfile=new.dmp logfile=new.log schemas=smsdb
问题:
ORA-39151: Table "SMSDB"."T_PROVIDER_MOBILE" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
分析:
默认值是skip,但若设置了CONTENT=DATA_ONLY,则默认值是APPEND,不是SKIP。
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP:跳过这张表,继续下一个对象。如果CONTENT设置了DATA_ONLY参数,则不能使用SKIP。
APPEND:会加载数据至对象,但不会影响已存在的行。
TRUNCATE:删除已存在的行,然后加载所有的数据。
REPLACE:drop已存在的表,然后create并加载数据。如果CONTENT设置了DATA_ONLY,则不能使用REPLACE
解决方法:
在imp后面加上 table_exists_action=truncate
--导出表
expdp smsdb/123456@oracle11 tables=t_smsgateway_mt_his directory=file_path dumpfile=2017.5.12.dmp
4.5数据库导入
语法:Impdp 用户名/密码@数据库连接标示符 directory=路径名称 dumpfile=备份的文件名称 logfile=输出的日志名称 schemas=需要备份的数据库用户名
创建路径:(删除路径:DROP DIRECTORY directory_NAME)
create directory file_path as 'C:\软件\数据库文件';
赋权限给smsdb用户:
grant read,write on directory file_path to smsdb;
数据导入(cmd命令下):
impdp smsdb/123456@oracle11 directory=file_path dumpfile=new.dmp logfile=new.log schemas=smsdb ignore=y
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31477110/viewspace-2143040/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31477110/viewspace-2143040/