Oracle 11G数据库导出问题解决

更新时间:2024-05-26 01:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一:11G数据库dmp文件导出问题 问题描述:

Windows 2008 R2无法正常安装64位Oracle 10G,只可安装64位11G和32位10G(兼容性模式)。 由于我们习惯用10G客户端连接11G数据库进行创建表空间等相关操作,此时导出存在一个问题:通过exp命令导出的dmp版本与客户端版本有关,如果10G客户端连接另一台服务器上的11G数据库通过exp导出dmp文件在结束后会提示“转换溢出数据类型错误”,这是因客户端(10G)和数据库(11G)版本号不一致导致。但如果客户端和数据库在同一服务器,导出时会通过环境变量来选择调用相应版本的exp程序,我们在导出窗口中也可以看到相应版本号。所以客户端和数据库在一台服务器时,导出结束后一般不会有问题(由于环境变量的配置而调用了11G数据库的exp程序)。

问题解决: 方法一:

导出11G数据库的dmp文件中无法包含空表,可采用以下方法解决: 导出前在plsql中执行以下语句,用来查询当前用户下数据库中所有空表:

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 将查询出的结果中生成的语句复制到sql窗口中执行,通过给所有空表分配空间的方式就可以通过exp命令成功导出空表。

对于安装Oracle11G的2008 R2服务器,如果数据库和客户端分离,可在客户端服务器安装一个11G客户端,再配合上面的方法,就可以正常导出包含空表的dmp文件,并且因为调用的是11G客户端的exp命令,导出结束也不报错。

但由于导出所用的EXP版本号为11G,直接将DMP文件导入10G会提示头部验证失败:

可以用Notepad++修改版本号用IMP导入10G数据库,经测试导入无错误提示,登录系统可正常使用。

方法二:

Oracle从 10g开始引入了数据泵技术,可以将数据库元数据和数据快速移动到另一个oracle数据库

中。

数据泵导入导出和常规导入导出的区别:

EXP和IMP是客户端工具程序,既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端工具程序,只能在ORACLE服务端使用,不能在客户端使用。

数据泵导入导出中,DUMPFILE参数用于指定文件名称,默认为expdat.dmp,DIRECTORY参数用于指定导出目录,默认为data_pump_dir 导入导出语句:

① 11G的服务器上运行命令导出10G格式dmp文件:

expdp scott/scott123@hnzc directory=DATA_PUMP_DIR dumpfile=hnzc.dmp logfile=hnzc.log version=10.2.0.1.0

② 1)步导出后的文件sdzc.dmp会自动存放在Oracle11G数据库安装路径下,如: D:\\app\\Administrator\\admin\\hnzc\\dpdump 将其拷出,放到10G服务器端如:

D:\\oracle\\product\\10.2.0\\admin\\hnzc\\dpdump ③ 10G的服务器上运行命令导入:

impdp scott/scott123@hnzc dumpfile=hnzc.dmp full=y

另外设置服务器自动备份可修改directory参数将dmp文件导出到指定路径下 打开Plsql,以dba方式登录sys用户,执行下列语句: create directory dmpbackup as 'd:\\googosoft\\databak\\'; grant create session to scott;

grant read, write on directory dmpbackup to scott;

二、有关64位系统中程序部署问题: 问题描述:

64位2003或者2008部署服务器,在程序运行时会有如下提示:

“尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题”

此问题大多为客户端与数据库服务器分离,且客户端服务器仅安装了Oracle 10G客户端

64位系统安装的IIS默认版本为64位,程序连接数据库时会根据环境变量读取相应Oracle路径下的oci.dll文件,当读取到32位Oracle目录时,由于64位系统的IIS无法正常使用32位客户端组件,导致程序报错。 问题解决:

1) 如果WEB服务器只安装了32位客户端,为保证在64位IIS下能够正常读取64位版本的oci.dll

文件,需要在客户端服务器上再安装一个64位数据库,这样程序运行之后就可以正常运行。 2) 如果WEB服务器同时安装了数据库,并且程序运行报错,可查看环境变量,将64位Oracle的bin

路径修改为前面,如下所示:

本文来源:https://www.bwwdw.com/article/wd87.html

Top