一: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命令成功导出空表。