数据库-Oracle数据泵跨版本问题--嘉为科技
- 格式:doc
- 大小:100.03 KB
- 文档页数:5
在关于不同版本的数据库迁移目的在不同版本的数据库之间进行导入和导出的时候存在的兼容性问题。
应用范围本文用于实现在oracle7,oracle8,oracle8i,oracle9i,oracle10g和oracle11g 数据库上进行的导入/导出功能,也就是说将数据从版本为X的数据库中导出,然后再数据导入到版本为Y的数据库中去。
同时也提供了在执行导入/导出功能时,相关的一些版本的使用情况和在进行数据导出的时候需要进行哪些的准备工作。
在不同版本的数据库进行导入和导出的兼容性问题兼容性概要1. 用具有导出功能的数据库将数据导出2. 用具有导入功能的目标数据库将数据导入3. Export data dump生成的dump文件和由原来的导出工具生成的dump文件不兼容4. oracle7的导出工具不支持从oracle9i以及更高的版本导出数据客户端介绍1. 导出/导入客户端使用oracle的导出/导入功能我们可以在不同的数据库间进行数据对象的迁移,即使他们所使用的硬件平台和软件配置不一样。
Oracle的导出工具从数据库中提取对象定义以及表数据,把他们存储在一个oracle的二进制导出转存文件里这个文件一般放在磁盘或者磁带当中。
我们也可以使用FTP或者物理传输(如果是磁带的话)把这个文件传到另外一个站点中去。
导出转存文件在网络中传输时必须以二进制的形式存在。
如果导出文件是以字符模式(ASCII)形式传输的话当进行文件导入的时候就会引起错误,这些错误结果可能是IMP-9或者IMP-10 紧接在错误IMP-0后。
Oracle的导入工具从导出转存文件中读取数据定义以及表数据然后把这些信息插入到目标数据库中去。
2. 导入/导出数据泵从oracle 10g 的第一个版本(10.1.1.x)开始,ORACLE引入了导出数据泵(expdp)和导入数据泵(impdp)功能。
由导出数据泵创建的导出泵文件只能被导入数据泵所读取,由原来的导出功能创建的导出泵文件是不能被导入数据泵的客户端所读取的。
(Oracle管理)Oracle 数据泵导出和导入Oracle10g数据导入导出简介Oracle10g引入了DATAPUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATAPUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。
DATAPUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。
注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。
以下是DATAPUMP的几个优点介绍:1.数据泵(DataPump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。
新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORY按表空间导出:Expdpsystem/mingyue@HS2008dumpfile=tablespace_test.dmptablespaces=HS_HIS_DATA,HS_HIS_IDXlogfi le=tablespace_test.logdirectory=TEST_EXPDPjob_name=hs_hisjob6;导出整个数据库:expdpsystem/mingyue@HS2008dumpfile=full.dmpfull=ylogfile=full.logdirectory=TEST_EXPDPjob_name =hs_hisjob6;使用exclude,include导出数据Include导出用户中指定类型的指定对象仅导出hs_his用户下以HISFU开头的所有表包含与表相关的索引,备注等不包含过程等其它对象类型:expdphs_his/handsome@HS2008dumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPDP job_name=job_hisjob7include=TABLE:\"LIKE\'HISFU%\'\";导出hs_his用户下排除HISFU开头的所有表:expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=include_1.dmplogfile=include_1.logdirecto ry=TEST_EXPDPjob_name=job_hisjob7include=TABLE:\"NOTLIKE\'HISFU%\'\";仅导出hs_his用户下的所有存储过程:expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=include_1.dmplogfile=include_1.logdirectory= TEST_EXPDPjob_name=job_hisjob7include=PROCEDURE;Exclude导出用户中指定类型的指定对象导出hs_his用户下除出TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=exclude_1.dmplogfile=exclude_1.logdirect ory=TEST_EXPDPjob_name=job_hisjob7exclude=TABLE;导出hs_his用户下排除HISFU开头的所有表:expdphs_his/handsome@HS2008dumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPD Pjob_name=job_hisjob7exclude=TABLE:\"LIKE\'HISFU%\'\";导出hs_his用户下的所有对象,但是对于表类型只导出以HISFU开头的表:expdphs_his/handsome@HS2008dumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPD Pjob_name=job_hisjob7exclude=TABLE:\"NOTLIKE\'HISFU%\'\";注意:1.如果content=data_only那么导出时就不能使用exclude,include 2.LINUX及UNIX对于特殊字符都要加一个转义字符如’()等这些字符在参考连接:/edeed/blog/item/9e3b9e2fb2209c3b1f308915.html http:///hzfsai/blog/item/8f1c2d4c4cd346f7d62afcab.html。
Oracle数据泵应用及常见问题1、Oracle数据泵简介Oracle数据泵(Data Pump)是Oracle10G引进的新技术,在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP。
经相关测试,Oracle数据泵方式进行数据导入导出要比以前的IMP/EXP快10倍左右,给大数据量的数据库导入导出提供了方便。
数据泵方式与IMP/EXP的主要区别在于EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
而EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用;IMP只适用于EXP导出文件,不适用于EXPDP 导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
2、Oracle数据泵命令及主要参数a)EXPDP/IMPDP使用前准备运行命令前必须建立工作目录并赋权限,然后执行命令,具体步骤如下:a1在数据库所在机器上建立工作目录,如:d:\dp。
a2用数据库DBA用户SYS登录数据库,执行语句如下语句:create directory dump_dir as ' d:\dp ';grant read, write on directory dump_dir to db_user;(此处dump_dir 是第上面语句中工作目录名称,非实际目录名称,db_user是数据库用户名)。
a3运行EXPDP命令。
b)EXPDP主要参数a1DIRECTORY:导出数据的目录(目录是上面的设定的目录dump_dir)a2DUMPFILE:导出的文件名。
a3VERSION:以哪个版本导出数据,如果在不同的版本间导出导入数据,这个参数非常有用,例如将Oracle11G数据导入到Oracle10G(10.2.0.1.0)的数据库中,参数应写为VERSION=10.2.0.1.0,否则无法导入到低版本的数据库中。
Oracle各版本之间Dmp⽂件的导⼊导出问题
经常做整个数据迁移时遇到下列问题:
1、不是有效的导出⽂件,头部验证失败;
2、EXP-00056: 遇到 ORACLE 错误 6550
ORA-06550: line 1, column 41:
PLS-00302: component 'SET_NO_OUTLINES' must be declared
ORA-06550: line 1, column 15:
PL/SQL: Statement ignored
EXP-00000: 导出终⽌失败
关于导⼊导出问题:
1、在执⾏导出时客户端exp命令和服务器端Oracle版本要⼀致;
2、Oracle10G以上使⽤expdp、impdp
⾼版本导出dmp导⼊低版本Oralce时经常遇到“不是有效的导出⽂件,头部验证失败”这种类似错误,可以通过⼯具进⾏dmp⽂件的修改。
详细见:
导出错误:
在执⾏exp导出命令是经常遇到类似”EXP-00056: 遇到 ORACLE 错误 6550“这种错误,这⼀般是执⾏命令的客户端Oralce版本与服务器不符时,可以换个客户端解决。
数据泵不同工作方式性能比较根据Oracle的文档的描述,数据泵采用不同的方式导出导入,性能也会有明显的差别,这次正好有机会测试一下,迁移表空间、直接路径、外部表方式,以及数据库链方式导出、导入的性能差异。
这篇介绍一下测试环境。
源数据库和目标数据库的版本都是10.2.0.3,不存在版本差异,字符集都是ZHS16GBK,国家字符集都是AL16UTF16字符集,源数据库和目标数据库都是16k的BLOCK_SIZE,因此采用迁移表空间的方式不存在任何的问题:SQL> SELECT GLOBAL_NAME FROM GLOBAL_NAME;GLOBAL_NAME------------------------------------------------------------------------NEWDEMOSQL> SELECT * FROM V$VERSION;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64biPL/SQL Release 10.2.0.3.0 - ProductionCORE 10.2.0.3.0 ProductionTNS for Linux: Version 10.2.0.3.0 - ProductionNLSRTL Version 10.2.0.3.0 - ProductionSQL> SELECT PROPERTY_NAME, PROPERTY_VALUE2 FROM DATABASE_PROPERTIES3 WHERE PROPERTY_NAME LIKE '%CHARACTERSET';PROPERTY_NAME PROPERTY_VALUE------------------------------ --------------------------------------------------NLS_CHARACTERSET ZHS16GBKNLS_NCHAR_CHARACTERSET AL16UTF16SQL> SHOW PARAMETER DB_BLOCK_SIZENAME TYPE VALUE------------------------------------ ----------- ------------------------------db_block_size integer 16384上面是源数据库的查询结果,目标数据库上面的查询结果完全一致,除了GLOBAL_NAME之外:SQL> SELECT GLOBAL_NAME FROM GLOBAL_NAME;GLOBAL_NAME----------------------------------------------------------------------------TJSQSQL> SELECT * FROM V$VERSION;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64biPL/SQL Release 10.2.0.3.0 - ProductionCORE 10.2.0.3.0 ProductionTNS for Linux: Version 10.2.0.3.0 - ProductionNLSRTL Version 10.2.0.3.0 - ProductionSQL> COL PROPERTY_VALUE FORMAT A50SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE2 FROM DATABASE_PROPERTIES3 WHERE PROPERTY_NAME LIKE '%CHARACTERSET';PROPERTY_NAME PROPERTY_VALUE------------------------------ --------------------------------------------------NLS_CHARACTERSET ZHS16GBKNLS_NCHAR_CHARACTERSET AL16UTF16SQL> SHOW PARAMETER DB_BLOCK_SIZENAME TYPE VALUE------------------------------------ ----------- ------------------------------db_block_size integer 16384要迁移的数据分布在两个表空间中:SQL> SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024/10242 FROM DBA_DATA_FILES3 WHERE TABLESPACE_NAME LIKE 'TJ%'4 ORDER BY 1, 2;TABLESPACE_NAME FILE_NAME BYTES/1024/1024/1024--------------- -------------------------------------------------- -------------------- TJSQ /data/oracle/oradata/newdemo/tjsq01.dbf 20TJSQ /data/oracle/oradata/newdemo/tjsq02.dbf 4TJSQ_TMP /data/oracle/oradata/newdemo/tjsq_tmp.dbf 4数据分布在5个SCHEMA中:SQL> SELECT OWNER, SUM(BYTES)/1024/1024/10242 FROM DBA_SEGMENTS3 WHERE TABLESPACE_NAME LIKE 'TJ%'4 GROUP BY OWNER5 ORDER BY 2 DESC;OWNER SUM(BYTES)/1024/1024/1024------------------------------ -------------------------TJSQ_TRADE 14.0916138TJSQ_NDMAIN 8.00140381TJSQ_NDMAIN_OPER 1.71221924TJSQ_TRADE_OPER .194641113TJSQ_GOV .080993652可以看到,用户对象占用了大于24G的空间,仅比数据文件小4G,这种情况还是比较适合迁移表空间方式的,否则如果数据文件中包含了大量的空闲空间,使用迁移表空间方式效率很可能比直接数据泵导入导出效率还低。
网页地址:/17203031/viewspace-732501IMP同库Type对象导入报错ORA-02304(续) 2012-06-11 21:27:02分类:Linux在上篇《IMP同库Type对象导入报错ORA-02304》(/17203031/viewspace-732089)中,我们讨论了由于type 使用特性的原因,如果我们使用exp/imp工具导入到相同数据库中,是会发生报错现象。
当我们使用exp/imp的时候,报错ORA-02304实际上是没有什么特别好的解决方法的。
Type导入相同库报错的本质在于在导出的时候,Oracle会将type的oid 连带导出。
而导入的时候,又希望将其还原为相同的oid从而引发冲突。
那么,是不是我们就没有办法了呢?我们借助Oracle 10g提出的数据泵(Data Dump)工具,是可以避免这个问题的。
1、环境准备我们同样适用Oracle 11gR2进行试验。
SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 Production在scott用户下,我们创建一些type类型对象。
SQL> grant imp_full_database to scott;Grant succeededSQL> grant exp_full_database to scott;Grant succeededSQL> conn scott/tiger@wilson;Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0Connected as scottSQL> create type mt_type as object (xm number, tchar varchar2(10));2 /Type createdSQL> select type_name, type_oid from user_types;TYPE_NAME TYPE_OID------------------------------ --------------------------------MT_TYPE C230A55B1FC34E1DE040A8C0580017C6SQL> create table my_tabletype of mt_type;Table createdSQL> insert into my_tabletype values (1,'df');1 row insertedSQL> commit;Commit complete之后,我们创建用户scottback。
oracle 数据泵使用技巧Oracle 数据泵是一个非常强大的工具,用于在Oracle数据库之间导入和导出数据。
它提供了一种快速和高效的方式,可以将数据从一个数据库迁移到另一个数据库,或者备份和还原数据。
在本文中,我将分享一些使用Oracle数据泵的技巧,希望对您有所帮助。
让我们来了解一下数据泵的基本概念和术语。
数据泵由两个主要组件组成:导出(expdp)和导入(impdp)。
导出是将数据从源数据库导出到文件系统的过程,而导入是将数据从文件系统导入到目标数据库的过程。
在导出和导入过程中,可以使用各种参数和选项来控制数据的导出和导入行为。
一、导出数据1. 导出整个数据库要导出整个数据库,可以使用以下命令:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp full=y```其中,username是数据库用户的名称,password是用户的密码,database_name是数据库的服务名,directory_name是导出文件保存的目录,dumpfile_name.dmp是导出文件的名称。
通过设置full参数为y,可以导出整个数据库。
2. 导出指定的表如果只需要导出特定的表,可以使用tables参数来指定要导出的表的名称:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name```其中,table_name是要导出的表的名称。
可以通过逗号分隔多个表的名称。
3. 导出指定的数据有时候,可能只需要导出表中的部分数据。
可以使用query参数来指定要导出的数据的条件:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name query=condition```其中,condition是指定要导出的数据的条件。
数据泵迁移宏康注:导出源机器下称a机,导入目标机器下称b机。
这里以核心库为例子,另两个库只加注释说明。
1.环境迁移旧数据库的用户10.50.100.11核心数据库(hkprdb):HKAPP、HKLIS、LISACCOUNT和LIS_MONITOR、HKFXQ迁移后新数据库的用户核心数据库(hkprdb):HKAPP、HKLIS、LISACCOUNT和LIS_MONITOR、HKFXQ 财务数据库(hkaccdb):ACC_MONITOR、HKACCOUNT、HKLIFE、HKYSS和HKINVTPRD (旧投资库中的HK555投资用户)。
资讯数据库(hkinvt):FCDB。
确认登陆数据库的库名和语言cat /etc/oratabexport ORACLE_UNQNAME=hkinvtexport ORACLE_SID=hkinvtecho $NLS_LANGSQL> select userenv('language') from dual;2.统计数据库信息最后通过统计下的信息比较a库和b库的数据差别,用以验证数据完整性三个库分别更换in后的用户('HKAPP','HKLIS','LISACCOUNT','LIS_MONITOR','HKFXQ')('ACC_MONITOR','HKACCOUNT','HKLIFE','HKYSS','HKINVTPRD')(‘FCDB’ ,’HK555’)set lines200set pagesize 5000col db_link for a50col host for a150表:select OWNER,TABLE_NAME,TABLESPACE_NAME,STATUS,NUM_ROWS fromdba_tables where owner in('HKAPP','HKLIS','LISACCOUNT','LIS_MONITOR','HKFXQ') order by OWNER,TABLE_NAME;权限:select * from DBA_SYS_PRIVS where grantee in('HKAPP','HKLIS','LISACCOUNT','LIS_MONITOR','HKFXQ') order by GRANTEE,PRIVILEGE;同义词:select * from dba_synonyms where table_owner in('HKAPP','HKLIS','LISACCOUNT','LIS_MONITOR','HKFXQ') order by TABLE_OWNER,TABLE_NAME;数据库链接:select * from dba_db_links order by OWNER,CREATED;无效对象:select owner,object_name,OBJECT_TYPE,STATUS from dba_objects where owner in ('HKAPP','HKLIS','LISACCOUNT','LIS_MONITOR','HKFXQ') and status='INVALID' order by owner,object_name;2.1. 统计表空间数据文件大小根据要求,怕数据文件过大导致读写性能下降,所以每个数据文件10G且关闭自动扩展。
Oracle 数据泵详解一、EXPDP和IMPDP使用说明Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用1)实现逻辑备份和逻辑恢复.2)在数据库用户之间移动对象.3)在数据库之间移动对象4)实现表空间搬移.二、数据泵导出导入与传统导出导入的区别在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项:1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.三、Expdp参数EXPDP命令行选项,可通过expdp help=y查看:E:\emp>expdp help=yExport: Release 10.2.0.1.0- Production on 星期日, 03 5月, 2009 17:54:49Copyright (c) 2003, 2005, Oracle. All rights reserved.数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输数据对象的机制。
该实用程序可以使用以下命令进行调用:示例: expdp scott/tigerDIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导出的运行方式。
具体方法是: 在 'expdp' 命令后输入各种参数。
要指定各参数, 请使用关键字:格式: expdp KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)示例: expdp scott/tigerDUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表USERID 必须是命令行中的第一个参数。
Oracleの⾼版本与低版本之间的数据导⼊导出总结exp命令(export):把数据从远程数据库导出到本地,⽣成⼀个dmp⽂件,常⽤命令如下所⽰:--把数据库QuicklyTest完全导出,⽤户名为qtuser,密码qtuser,导出到D:/QuicklyTest.dmp中(关键字:full)exp qtuser/qtuser@QuicklyTest file=D:/QuicklyTest.dmp full=y--把数据库QuicklyTest中的SYS与SYSTEM⽤户完全导出(关键字:owner)exp qtuser/qtuser@QuicklyTestfile=file=D:/QuicklyTest.dmp owner=(system,sys)--把数据库中的表 sample_report,quickly_report 导出(关键字:tables)exp qtuser/qtuser@QuicklyTestfile=file=D:/QuicklyTest.dmp tables=(sample_report,quickly_report)imp命令(import):把本地的dmp⽂件,导⼊到远程数据库中他⼭之⽯:imp⼯具的版本必须和⽬标库的版本相同。
⽐如,使⽤版本为9.2.0.7的imp⼯具导⼊到版本为9.2.0.8的数据库中,会遇到错误。
exp⼯具的版本必须与源库或者⽬标库中版本较低的相同。
⽐如,从低版本的源库exp导出数据,imp导⼊到⾼本版⽬标库,那么exp的版本必须要和源库相同。
同理,从⾼版本的源库exp导出数据,imp导⼊到低版本⽬标库,那么exp的版本必须和⽬标库相同。
⾃我总结:1、exp命令是使⽤本地的客户端版本,在实际⼯作中应⽤低版本的exp进⾏源头库数据导出。
2、imp命令进⾏数据导⼊的时候,要使⽤与⽬标库版本⼀致版本的imp命令。
场景模拟:本地电脑Oracle版本为12.2.0.1.0,堡垒机终端数据库版本为11.2.0.4.0,远程数据库版本为11.2.0.1.0,需要把远程数据库的数据导⼊到堡垒机终端数据库⾥⾯。
遇到了一个问题,环境描述一下,以便日后能重现环境在研究:环境:刚刚装完12c,然后dbca了一个数据库orcl,建立了一个用户zkm。
create directory dir1 as '/home/oracle/test';create user zkm identified by zkm account unlock default tablespace users;grant connect,create table to zkm;alter user zkm quota 1m on users;create table zkm.test as select * from scott.emp;其实是想做高低版本的导入导出实验,发现高版本导出的dump文件低版本不可以用,这里是从12c到11g。
之前我先做了低到高的实验,就是11g到12c。
11g上建立zkm这个用户稍微有些不一样,但是没差,这里也弄出来吧!create user zkm identified by zkm account unlock;grant connect,resource to zkm;create table zkm.test as select * from scott.dept;11g上:expdp zkm/zkm directory=dir1 dumpfile=zkm.dmp logfile=zkm.log12c上:impdp \'sys/oracle as sysdba\' directory=dir1 dumpfile=zkm.dmp logfile=zkm.log成功导入。
从高到低就不行了,如下:12c上:expdp zkm/zkm directory=dir1 dumpfile=zkm.dmp logfile=zkm.log然后scp过去11g的系统上11g上:[oracle@test test]$ impdp \'sys/oracle as sysdba\' directory=dir1 dumpfile=zkm.dmp logfile=zkm.log version=11.2.0.4.0ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-39142: incompatible version number 4.1 in dump file "/home/oracle/test/zkm.dmp"关于这个version我加了跟没加一样报错。
oracle 数据泵备份步骤(原创版)目录1.Oracle 数据泵简介2.数据泵备份的优势3.数据泵备份的步骤3.1 连接到数据库3.2 创建备份目录3.3 创建物理目录映像3.4 授权用户3.5 使用 expdp 命令进行备份3.6 检查备份文件3.7 设置定时任务正文一、Oracle 数据泵简介Oracle 数据泵(Data Pump)是 Oracle 数据库提供的一个高效、易用的数据传输工具,可以用于在 Oracle 数据库之间传输数据,也可以用于将数据从 Oracle 数据库导入到其他非 Oracle 数据库中。
数据泵采用基于服务器的数据传输方式,可以大大减少客户端的负担,提高数据传输效率。
二、数据泵备份的优势相较于传统的 Oracle 备份方法,如使用 export 工具或逻辑备份,数据泵备份具有以下优势:1.高效:数据泵利用 Oracle 数据库的内部机制进行数据传输,效率更高。
2.灵活:数据泵支持多种数据传输方式,如导出到文件、导入到其他数据库等。
3.可靠:数据泵备份可以实现数据的增量备份,只备份发生变化的数据,减少了备份空间的需求。
4.易用:数据泵提供了丰富的命令和选项,使得备份操作更加简单。
三、数据泵备份的步骤1.连接到数据库使用 plsql 或 developer 软件,以管理员角色连接到 Oracle 数据库。
2.创建备份目录在本地服务器或 Linux 服务器上创建一个备份数据保存目录。
3.创建物理目录映像在连接成功的数据库窗口中创建物理目录的映像。
4.授权用户如果是其他用户要使用这个目录进行导出操作,还需要对这个用户进行授权,如果是管理员用户就不需要再进行授权。
5.使用 expdp 命令进行备份在 dos 命令行中直接使用 expdp 对全库或指定表空间进行备份。
6.检查备份文件在计算机中找到备份文件的保存路径,检查备份文件是否存在。
解决方法一:不同版本的EXP/IMP问题?一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:1、在高版本数据库上运行底版本的catexp.sql;2、使用低版本的EXP来导出高版本的数据;3、使用低版本的IMP将数据库导入到底版本数据库中;4、在高版本数据库上重新运行高版本的catexp.sql脚本。
但在9i中,上面的方法并不能解决问题。
如果直接使用底版本EXP/IMP会出现如下错误:EXP-00008: ORACLE error %lu encounteredORA-00904: invalid column name这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261722,你可以到METALINK 上去查看有关此BUG的详细信息。
BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。
在Oracle9i中执行下面的SQL重建exu81rls视图即可。
CREATE OR REPLACE view exu81rls(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)AS select , , r.pname, r.pfschma, r.ppname, r.pfname,decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),r.check_opt, r.enable_flag,DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)from user$ u, obj$ o, rls$ rwhere er# = o.owner#and r.obj# = o.obj#and (uid = 0 oruid = o.owner# orexists ( select * from session_roles where role='SELECT_CATALOG_ROLE'))/grant select on sys.exu81rls to public;/解决方法二:1. 使用9i客户端exp10g的数据2. 如果出现导出过程中出现EXP-00003: no storage definition found for segment错误,主要由10g中clob字段引起则处理办法如下:$ORACLE_HOME/rdbms/admin/catexp.sql在10g中用sys用户运行CREATE OR REPLACE VIEW exu9tne (tsno, fileno, blockno, length) ASSELECT ts#, segfile#, segblock#, lengthFROM sys.uet$WHERE ext# = 1UNION ALL select * from sys.exu9tneb/GRANT SELECT ON sys.exu9tne TO PUBLIC;导出完成后再用sys用户运行恢复导出前状态CREATE OR REPLACE VIEW exu9tne (tsno, fileno, blockno, length) ASSELECT ts#, segfile#, segblock#, lengthFROM sys.uet$WHERE ext# = 1/GRANT SELECT ON sys.exu9tne TO PUBLIC;关于Oracle Exp-00003问题的解决方法前天在导数据的时候发生了Exp-00003的错误,以前也遇到过这样的问题,当时的解决方法是到数据库服务器本机上导,问题解决了,但是这次是从oracle 9.2.0.1.0客户端上导出(而数据库服务器是10.2.0.1.0),要求是用9.2.0.1.0的export导出,因为导出的DMP文件要导入到9.2.0.1.0上,因此到本机上导出的方法行不通,经过查找相应的文档问题解决了,下面把解决方法作个记录。
Oracle数据泵的导⼊与导出实例详解⽬录前⾔数据泵的导⼊数据泵的导出总结前⾔今天王⼦要分享的内容是关于Oracle的⼀个实战内容,Oracle的数据泵。
⽹上有很多关于此的内容,但很多都是复制粘贴别⼈的,导致很多⼩伙伴想要使⽤的时候不能直接上⼿,所以这篇⽂章⼀定能让你更清晰的理解数据泵。
开始之前王⼦先介绍⼀下⾃⼰的环境,这⾥使⽤的是⽐较常⽤的WIN10系统,Oracle数据库也是安装在本机上的,环境⽐较简单。
数据泵的导⼊导⼊的数据⽂件可能是别⼈导出给你的,也可能是你⾃⼰导出的,王⼦这⾥就是别⼈导出的,⽂件名字是YD.DMP。
在进⾏操作之前,⼀定要问清楚表空间名字,如果表空间命名不统⼀,可能会导致导⼊失败的问题。
所以第⼀步就是建⽴表空间,语句如下:create tablespace VIEWHIGHdatafile 'D:/app/admin/oradata/orcl/VIEWHIGH'size 1M autoextend on next 50M maxsize unlimited;这⾥的datafile路径⼀般选择你本地oracle的数据⽂件路径。
之后,我们可以建⽴⼀个新的⽤户来导⼊数据⽤,这个⽤户名也可以提前问好,最好⽤户名⼀致,否则需要做⼀次⽤户名的映射,这个我们下⽂再说。
建⽴⽤户语句如下:create user DRGS_INITidentified by "vhiadsh"default tablespace VIEWHIGHprofile DEFAULTACCOUNT UNLOCK;建⽴⽤户后需要给⽤户授权,语句如下:--给新建⽤户授DBA权限grant dba to DRGS_INIT;grant unlimited tablespace to DRGS_INIT;接下来我们需要在本地的磁盘中创建⼀个⽂件夹,作为数据泵⽂件夹来使⽤,同时把DMP⽂件放⼊到此⽂件夹下。
罗群【摘要】12c的rman功能有了很大的改进和提高。
其中可以进行table 级别的恢复,使恢复粒度更细。
简单的RECOVER TABLE命令即可从RMAN备份恢复一个或多个表;无需像手动还原、恢复和导出那么费时和复杂。
【正文】一、环境准备RMAN RECOVER TABLE不能恢复SYS 用户的表,以及SYSTEM 、SYSAUX表空间内的表,因此测试在操作前需创建表空间、用户。
创建表并插入数据:SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';Session altered.SQL> create table dave(id number,time date);Table created.SQL> insert into dave values(1,sysdate);1 row created.SQL> commit;Commit complete.SQL> select * from dave;ID TIME---------- -------------------1 2013-12-20 06:33:57[oracle@Server ~]$ rman target sys/oracleRecovery Manager: Release 12.1.0.1.0 - Production on Fri Dec 20 06:34:21 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.connected to target database: CDB1 (DBID=793519755)RMAN>backup as compressed backupset database format '/backup/fullbk_db_%U';三、删除表记录恢复的时间点,然后删除表:SQL> insert into dave values(2,sysdate);1 row created.SQL> commit;SQL> select * from dave;ID TIME---------- -------------------1 2013-12-20 06:33:572 2013-12-20 06:38:33SQL> select sysdate from dual;SYSDATE-------------------2013-12-20 06:40:41SQL> drop table dave purge;四、恢复表RMAN做表恢复:[oracle@Server ~]$ rman target sys/oracleconnected to target database: CDB1 (DBID=793519755)RMAN> RECOVER TABLE DAVE."DAVE"until time "to_date('2013-12-20 06:40:41','yyyy-mm-dd hh24:mi:ss')"AUXILIARY DESTINATION '/tmp/tmptable'REMAP TABLE 'DAVE'.'DAVE':'DAVE_NEW';恢复过程太长,不在这列出,具体的步骤是:A. 在备份文件中查找合适的备份集;B. 创建辅助数据库,并把该库恢复到指定时间,需要指定一个路径来存放辅助数据库,AUXILIARY DESTINATION '/tmp/tmptable',这个路径是必须存在的;C. Expdp导出表;D. 将导出的表导入目标数据库;E. 重命名导入后的表名称。
oracle_关于在不同版本和平台之间进⾏还原或复制的常见问题In this DocumentPurposeQuestions and Answers1) 我能⽤更⾼版本的 Oracle 还原或复制旧版本的数据库吗?2) 我能在两个不同的补丁程序集之间进⾏还原或复制吗?3) 我能在同⼀操作系统的不同版本之间进⾏还原或复制吗?4) Oracle 的位(bit)级别(32 位或 64 位)不匹配时,可以进⾏还原或复制吗?5) 可以将更⾼版本的备份还原到较早版本的 Oracle 吗?6) 我能在两个不同的平台之间还原或复制我的 RMAN 备份吗,例如 Solaris 到 Linux?ReferencesApplies to:Oracle Database - Enterprise Edition - Version 9.0.1.0 and laterInformation in this document applies to any platform.Purpose本⽂档回答了有关如何使⽤ RMAN 从旧版本以及具有不同字长的系统中还原备份的常见问题。
下⾯列出了⼀些常与 Oracle 软件升级相关的情形。
Questions and Answers注意:以下部分中的还原是指⽤户管理的(⾮ RMAN)还原或 RMAN 还原。
复制(Duplicate)是只有 RMAN 才具有的⼀种功能,但在提到复制时,它也适⽤于⽤户管理的数据库克隆。
1) 我能⽤更⾼版本的 Oracle 还原或复制旧版本的数据库吗?RMAN 可将在较旧的数据库版本上进⾏的备份还原到较新的版本中。
旧的备份必须是在 9.2 或更⾼版本的数据库中进⾏的。
此⽅法可⽤作异地(out-of-place)数据库升级的⼀部分,其中,旧的备份被还原到新版本数据库中,然后升级脚本照常运⾏。
由于旧的数据库在升级过程中可以保持连线状态,因此这种⽅法相对于就地(in-place)升级更为可取,在就地升级中数据库必须保持离线状态。
问题:System.Data.OracleClient 需要Oracle 客户端软件8.1.7 或更高版本。
出错的原因:
1.虽然报的是需要安装客户端8.1.7及以上版本但是并非这个,而是.net账户没有访问Oracle\bin文件夹的权限
2.windows2003操作系统安装在NTFS格式的盘中,如果是FAT32也就没有这个问题,看来NTFS格式在安全性这方面作的确实出色。
解决方法:
1.在Oracle\bin文件夹上右键-------共享和安全------安全-----点击“添加”按钮,出现下面的界面
2.点击“高级”----“立即查找”,在下面显示的账户中选择“NTWORK SERVICE”(注意:IIS6中aspnet的账户是NTWORK SERVICE;而在IIS5中是aspnet。
总之,在搜索出的账户中有这两个账户中的哪一个就选哪一个,因为未出现过这两个账户共存的,估计不能共存吧!)----将所有的权限都赋予----确定。
3.在“计算机管理”-----双击右侧的Administrators------将上一步搜索出来的账户添加进去。
4.重新启动IIS即可。
可以在“运行”中输入“IISRESET”。
注意:上面这些是设置权限方面的,如果配置完上面这些报ORA-12154的错误,需要在服务器上配置“Net Configuration Assistant”(如何配置在网上搜一下)。
Oracle 10g 推出数据泵工具,提高数据迁移的效率,Oracle 10g刚推出的时候,跨版本的问题并不明显,而等到11.2推出之后,数据泵同样存在处理跨版本的问题。
Oracle原始的EXP/IMP导出、导入工具的跨版本特性对于从Oracle8、9版本就接触数据库的人来说,应该是基本常识了——低版本导出,目标版本导入。
而对于数据泵来说,很多人并没有意识到这一点,事实上数据泵如果从低版本导出,高版本导入是不需要额外处理的,而大多数的需求不是版本相同,就是版本升级,因此很多人没有注意到数据泵的版本问题。
如果数据泵从高版本导出,低版本导入时,如果不加处理,就会出现下面的错误:
[oracle@rhlinux5 ~]$ expdp test/test directory=expdir
dumpfile=test.dmp TABLES=tab1
Export: Release 11.2.0.3.0 - Production ON Mon Apr 27 09:50:10 2013
Copyright (c) 1982, 2011, Oracle AND/OR its affiliates. ALL rights reserved.
Connected TO: Oracle DATABASE 11g Enterprise Edition Release
11.2.0.3.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
Starting "TEST"."SYS_EXPORT_TABLE_01": test/********
dumpfile=test.dmp tables=tab1
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type
TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "TEST"."TAB1" 6.593 KB 63 rows
Master table "TEST"."SYS_EXPORT_TABLE_01" successfully
loaded/unloaded
Dump file set for TEST.SYS_EXPORT_TABLE_01 is:
/u01/oracle/test.dmp
Job "TEST"."SYS_EXPORT_TABLE_01" successfully completed at 09:50:17 11.2导入的文件,10.2直接导入报错:
[oracle@rhlinux5 ~]$ impdp test/test directory=expdir
dumpfile=test.dmp
Import: Release 10.2.0.4.0 - 64bit Production ON Monday,27 April, 2013 9:50:25
Copyright (c) 2003, 2007, Oracle. ALL rights reserved.
Connected TO: Oracle DATABASE 10g Enterprise Edition Release
10.2.0.4.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing
options
ORA-39000: bad dump file specification
ORA-39142: incompatible version NUMBER 3.1 IN dump file
"/u01/oracle/test.dmp"
正确的方式是在高版本导出的时候指定导出的版本,比如导入版本为10204,那么在11.2
上导出时通过VERSION=10.2.0.4,确保导出的数据和结构和低版本兼容。
[oracle@rhlinux5 ~]$ expdp test/test dumpfile=test.dmp
directory=expdir TABLES=tab1 version=10.2.0.4
Export: Release 11.2.0.3.0 - Production ON Mon Apr 27 09:52:03 2013 Copyright (c) 1982, 2011, Oracle AND/OR its affiliates. ALL rights reserved.
Connected TO: Oracle DATABASE 11g Enterprise Edition Release
11.2.0.3.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
Starting "TEST"."SYS_EXPORT_TABLE_01": test/********
dumpfile=d_tmp:tab110204.dp tables=tab1 version=10.2.0.4.0 Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type
TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "TEST"."TAB1" 6.406 KB 63 rows
Master table "TEST"."SYS_EXPORT_TABLE_01" successfully
loaded/unloaded
Dump file set for TEST.SYS_EXPORT_TABLE_01 is:
/u01/oracle/test.dmp
Job "TEST"."SYS_EXPORT_TABLE_01" successfully completed at 09:52:09这样在10.2.0.4.0数据库上就可以直接导入了。
[oracle@rhlinux5 ~]$ impdp test/test directory=expdir
dumpfile=test.dmp
Import: Release 10.2.0.4.0 - 64bit Production ON Monday, 27 April, 2013 9:54:35
Copyright (c) 2003, 2007, Oracle. ALL rights reserved.
Connected TO: Oracle DATABASE 10g Enterprise Edition Release
10.2.0.4.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
Master TABLE "TEST"."SYS_IMPORT_FULL_01" successfully
loaded/unloaded
Starting "TEST"."SYS_IMPORT_FULL_01": test/********
directory=expdir dumpfile=test.dmp
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."TAB1" 6.406 KB 63 rows
Processing object type
TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "TEST"."SYS_IMPORT_FULL_01" successfully completed at 09:54:36。