Oracle利用impdp 导入数据库的归纳
来源:互联网 发布:武汉软件新城吧 编辑:程序博客网 时间:2024/05/18 22:42
我们知道,当我们要导入一个数据库的时候,说起来很简单,但是其中会遇到各种问题,这个就占个位置慢慢整理吧:
1, 利用impdp导入数据库分类
a, 完整导入:就是加入full=y这个关键词,不能和schemas, tables,等关键词重用
impdp \"/ as sysdba\" full=y directory=expdump dumpfile=test1.dmp logfile=test1_impdp.log PARALLEL=100
b, 根据用户导入:即选择Schema来导入,加入schemas=.... 或者 remap_schema=.... 把dump文件中的某个schema 改名
impdp \"/ as sysdba\" schemas=user1,user2 remap_schema=user1:user3,user2:user4 directory=EXPDUMP dumpfile=test.dump logfile=test_schemas_impdp.log PARALLEL=20
c, 改变表空间导入:其实就是利用remap_tablespace来导入原来数据库使用的表空间,这样可以不需要再取创建表空间
impdp \"/ as sysdba\" schemas=user1,user2 remap_tablespace=tp1:tp3, tp2:tp4 directory=EXPDUMP dumpfile=test.dump logfile=test_schemas_impdp.log PARALLEL=20
2, 导入impdp的整个过程
a, 试图获得要导入的数据库数据的导出日志
b, 了解原来数据库的信息,比如字符集、本地字符集、数据库时区等等,判断源数据库和目标数据库是否一致
c, 获得要导入的schema,查看当前数据库是否已有改schema。如果有,则最好运行drop user cascade。如果没有,则判断是否需要更改密码,若不需要,则无需手动创建改用户
d, 获得要导入的数据库数据相关的表空间
e, 了解要导入的数据库数据、用户的权限问题
f, 然后就可以开始导入了
3, 导入过程中可能会遇到这些问题:
a, 目录没有创建或者没有权限
ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-39087: directory name expdump is invalid
说明expdump 目录可能没有在数据库上建立,运行下面语句就可以创建
create directory expdump as "/expdump";
也可能是用来导入数据的用户没有权限,运行下面语句就可以
grant read on directory expdump to imp_user
b, 创建tablespace失败,或者tablespace不存在
ORA-01119: error in creating database file '/dbdata/dbservice1/test01.dbf'ORA-27040: file create error, unable to create fileLinux-x86_64 Error: 2: No such file or directory
在新的数据库文件路径不一样,所以创建不成功,方法就是先创建它
CREATETABLESPACE "test" DATAFILE '+FDA1/dbservice1/test01.dbf' SIZE 16597383
CREATE BIGFILE TABLESPACE "test" DATAFILE '+FDA1/dbservice1/test01.dbf' SIZE 16597383
c, 客户端字符集的问题
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS [TABLE_STATISTICS]ORA-06502: PL/SQL: numeric or value errorLPX-00231: invalid character 63 ('?') found in a Name or Nmtoken
导致这种问题主要是因为客户端的字符集和数据库的字符集不符,解决方法如下:
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';VALUE----------------------------------------WE8MSWIN1252Linux-Host: EXPORT LANG=WE8MSWIN1252
d, 数据库本地字符集的问题
ORA-39083: Object type TABLE:"test"."TESTLOG" failed to create with error:ORA-00910: specified length too long for its datatype
原因是某些本地字符集能支持的最大长度只有2000,即NVARCHAR2(2000), 而要创建的表超过2000,就报错,改为UTF8,能支持最大4000。
但是改字符集是个很大的工程,涉及export full (backup), character scan, character convert, drop national character related data, alter database national character等等,下面是简单的方法,但internal_use 一般来说,Oracle不推荐用
SHUTDOWN IMMEDIATE;STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;SHUTDOWN IMMEDIATE;
e, 操作系统线程、文件问题
ORA-39095: Dump file space has been exhausted: Unable to allocate 8192 bytes
第一种可能是:dump的文件不够大,空间不足,操作系统能支持的文件大小不够等,只要增加dump文件就可以
39095, 00000, "Dump file space has been exhausted: Unable to allocate %s bytes"// *Cause: The Export job ran out of dump file space before the job was// completed.// *Action: Reattach to the job and add additional dump files to the job// restarting the job.
第二种可能是:因为线程太多,比如 parallel=100, 线程在写入文件的时候冲突导致写入失败,datadump认为dump文件不足,但奇怪的是,删除文件再执行同样的命令还会报错,报错的时间以及生成的文件大小都不一样。把parallel相应减小,比如 parallel=6, 就不再报错
f, 系统对象失效
OBJECT_NAME--------------------------------------------------------------------------------OBJECT_TYPE OWNER------------------- ------------------------------_ALL_REPCONFLICTVIEW SYS_ALL_REPPARAMETER_COLUMNVIEW SYS_ALL_REPRESOLUTIONVIEW SYS_ALL_REPCOLUMN_GROUPVIEW SYS
利用sysdba运行命令@?/rdbms/admin/utlrp.sql 基本就可以解决
- Oracle利用impdp 导入数据库的归纳
- oracle导入数据库步骤--impdp
- Oracle数据库的impdp导入操作以及dba_directories使用方法
- example:利用impdp通过dblink导入数据库
- example:利用impdp通过dblink导入数据库
- Oracle数据库EXPDP/IMPDP导出导入
- ORACLE impdp 导入数据
- impdp导入到数据库
- Oracle 10g 数据库导入工具impdp使用Windows的网络驱动器 ORA-31640
- oracle数据库导入导出之imp,exp,impdp,expdp等工具的使用
- Oracle impdp参数说明和导入数据库的SQL语句写法
- Oracle expdp/impdp导出导入命令及数据库备份(转)
- Oracle expdp/impdp导出导入命令及数据库备份(转)
- Oracle datapump expdp/impdp 导入导出数据库时hang住
- Oracle expdp/impdp导出导入命令及数据库备份(转)
- Oracle数据库导入导出: imp/exp与impdp/expdp
- Oracle expdp/impdp导出导入命令及数据库备份
- Oracle数据库导入导出,exp/imp expdp/impdp
- .net面试题目
- spring小结二
- 分布式搜索Elasticsearch——创建客户端(五)
- Hook Adobe Products For Data Protection (拦截adobe的产品,保护数据安全)
- Leetcode: Binary Tree Zigzag Level Order Traversal
- Oracle利用impdp 导入数据库的归纳
- ArcGIS For JavaScript API Dynamically create layer list(动态创建图层列表)————(八)
- SQL更改表字段为自增标识
- 字符串处理用到的函数 脑袋记不全 Mark
- 使用jquery moblie进行移动智能开发(2)
- 单例Bean
- 我们在囧途之程序员转型记
- 应该知道的Linux技巧
- android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket