700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Oracle imp/impdp 导入dmp文件到数据库

Oracle imp/impdp 导入dmp文件到数据库

时间:2022-11-07 02:57:56

相关推荐

Oracle imp/impdp 导入dmp文件到数据库

项目描述:

将Oracle系统数据库的数据通过expdp命令导出为dmp文件后,现需要在另一台电脑/服务器中将dmp文件导入到本地Oracle数据库中

问题1:

用exp命令导出的dmp文件可以用imp命令导入新的数据库中,基本不需要其他操作,但用expdp导出的.dmp文件只能用impdp导入数据库,且会遇到“表空间不存在”这类问题

解决步骤:

先创建一个同名的表空间,同名是指和导出时的数据库表空间名称相同

CREATE TABLESPACE 表空间名称 DATAFILE ‘D:\XXX.dbf’ SIZE 20m AUTOEXTEND ON;

如果不知道导出时的表空间名称,可以暂时随便命名,但是后面要修改,导入数据时会有报错提示,“表空间XXX2不存在”,这时候用alter tablespace XXX1 rename to XXX2; 重命名;

ALTER TABLESPACE XXX1 rename to XXX2;

创建临时表空间

CREATE TEMPORARY TABLESPACE 临时表空间名称 TEMPFILE ‘D:\XXXTEMP.dbf’ SIZE 2m AUTOEXTEND ON;

创建同名用户,密码最好也相同,没有尝试不相同的话能不能成功

CREATE USER 用户名称IDENTIFIED BY 用户密码DEFAULT TABLESPACE 授权访问的表空间名称TEMPORARY TABLESPACE 临时表空间名称--注意临时表空间和默认表空间不能是同一个

用户授权,需要给sysdba权限

GRANT CONNECT TO 用户名称; GRANT RESOURSE TO 用户名称; GRANT dba TO 用户名称;

创建逻辑目录directory,把.dmp文件放到这个目录指向的本地物理内存中

CREATE directory ZZZZ AS "D:\dump";--注意directory指向的内存路径中不含中文,只能用英文和下划线

查看管理员目录,确认逻辑目录是否创建好了

Select *from dba_directories;

在命令行使用impdp指令导入dmp文件

impdp 用户名/密码@localhost/sid directory=ZZZZ dumpfile=YYYY.dmp full=y'''sid是所用的数据库实例名,ZZZZ写前面设置的逻辑目录,YYYY写要导入的文件的名称直接在命令行运行,结尾无分号'''

问题2

impdp导入操作可以执行,但遇到错误ORA-12899

原因

导出和导入的数据库字符集不同,汉字占的长度不同。中文在ZHS16GBK中占2个字节,在UTF-8中却占3个字节,所以汉字导入UTF-8字符集的数据库就很容易出现字段长度不够。

解决方法:

增加字段长度修改字符集,参考/iamlaosong/article/details/52316844

数据库原本的characterset字符集是AL32UTF8

修改之后为ZHS16GBK

重新执行impdp命令,导入成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。