oracle imp命令导入dmp文件|Oracle的imp命令导入备份数据

Oracle学习 2021-08-28 网络整理 可可

【shitiku.jxxyjl.com--Oracle学习】

        笔者在做项目过程中遇到以下问题,在客户提供的数据库备份文件需要导入到数据库中,以便使用,数据库为oracle 9.1.1,安装在windows server 2000 jp系统中,服务器端字符集

为japanese_japan_utf8,而客户端使用的是中文windows server 2000系统,字符集为simplified chinese_china.zhs16gbk。
在插入数据过程中出现如下问题:
c:\oracle\ora90\bin>imp scott/tiger@sdes full=y file=c:\expdat.dmp
import: release 9.0.1.1.1 - production on 星期一 1月 22 19:05:43 2007
(c) copyright 2001 oracle corporation.  all rights reserved.
连接到: oracle9i release 9.0.1.1.1 - production
jserver release 9.0.1.1.1 - production
imp-00016: 不支持要求的字符集转换(从类型830到852)
imp-00000: 未成功终止导入
使用2进制文件编辑工具,如uedit32。打开导出的dmp文件,获取2、3字节的内容,如00 01,先把它转换为10进制数,为1,使用函数nls_charset_name即可获得该字符集:
sql> select nls_charset_name(1) from dual;
nls_charset_name(1)
-------------------
us7ascii
可以知道该dmp文件的字符集为us7ascii,如果需要把该dmp文件的字符集换成zhs16gbk,则需要用nls_charset_id获取该字符集的编号:

笔者遇到的问题为830到852类型转换错误,进入oracle的sqlplus,进行以下查询:
sql> select nls_charset_name(830) from dual;
nls_charset_na
--------------
ja16euc
sql> select nls_charset_name(852) from dual;
nls_charset_name
----------------
zhs16gbk
sql>

sql> select nls_charset_id("zhs16gbk") from dual;
nls_charset_id("zhs16gbk")
--------------------------
852
把852换成16进制数,为354,把2、3字节的00 01换成03 54,即完成了把该dmp文件字符集从us7ascii到zhs16gbk的转化,这样,再把该dmp文件导入到zhs16gbk字符集的数据库就可以了。

影响oracle数据库字符集最重要的参数是nls_lang参数。它的格式如下: nls_lang = language_territory.charset .它有三个组成部分(语言、地域和字符集),每个成分控制了nls子集的特性。
其中: language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:american _ america. zhs16gbk .
可以使用以下命令获取字符集名称:
sql> select userenv("language") from dual;
userenv("language")
-------------------------------------------------------------------------------
simplified chinese_china.utf8
sql>
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几m或几十m,可以用ultraedit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下sql查出它对应的字符集:
sql> select nls_charset_name(to_number("0354","xxxx")) from dual;
nls_charset_name(to_number("0354","xxxx"))
--------------------------------------------------------------------------------
zhs16gbk
sql>
03 03 3e 45 .....其中的033e就是字符集对应的值。
上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,如us7ascii,we8iso8859p1,zhs16cgb231280,zhs16gbk基本都可以改。因为改的只是dmp文件,所以影响不大。
  具体的修改方法比较多,最简单的就是直接用ultraedit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为zhs16gbk,可以用以下sql查出该种字符集对应的16进制代码:
  sql> select to_char(nls_charset_id("zhs16gbk"), "xxxx") from dual;
  0354
  然后将dmp文件的2、3字节修改为0354即可。

另外,如果dmp文件中备份的数据库表已经存在,则导入过程会失败,只能先将已经存在的表删除,在进行导入。

本文来源:https://shitiku.jxxyjl.com/oraclexuexi/7703.html

  • 【weblogic配置oracle数据源】WebLogic与ORACLE数据库的连接配置

    weblogic6 0通过oracle客户端访问oracle 所以在weblogic6 0所在的机器上要正确安装oracle客户端才行 weblogic6 0可采用type2或type4的jdbc driver 与oracle数据库相连。下面分别介绍它们的配置方法:type2 jdbc drive...

    发布于:2021-08-28

    详细阅读
  • oracle数据库入门教程|如何学习Oracle?

    经常有一些oracle的初学者问到这个问题,这里算是一个统一答复。 1、如果有一定的数据库基础,知道sql是怎么回事,即使写不出来简单的sql,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和sql语言,不需要很深,更不需要去记忆那些复杂的sql命令,...

    发布于:2021-08-28

    详细阅读
  • [sql语句学习]PL/SQL学习笔记(七)

    层次查询select [level],column,expr from table [where condition][start with]起点(自底向上 自顶向下)[connect by prior + 主键 外键=外键 主键] 看你往哪个方向查自顶向下 左边放主键,右边放外键select...

    发布于:2021-08-28

    详细阅读
  • [oracle10g重建监听]oracle10g重建emdbcontrol

    oracle 10g重建em db control 1 drop configuration files and repository run :emca -deconfig dbcontrol db -repos drop 2 logon sqlplus as user sys or syste...

    发布于:2021-08-28

    详细阅读
  • [oracle]Oracle PL/SQL语言基础

    pl sql是oracle对标准数据库语言的扩展,oracle公司已经将pl sql整合到oracle 服务器和其他工具中了,近几年中更多的开发人员和dba开始使用pl sql,本文将讲述pl sql基础语法,结构和组件、以及如何设计并执行一个pl sql程序。   pl sql...

    发布于:2021-08-28

    详细阅读
  • 【oracle重建密码文件】重建密码文件--解决ORA-01991错误

    统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来)。 为了省事,直接冷备份oracle的数据文件,安装好oracle后,直接恢复到原来对应的目录。启动,出现:...

    发布于:2021-08-27

    详细阅读
  • ocp考试通过率|参加OCP考试的小技巧

    下面这些小技巧能帮助你准备和通过每个考试。   每个ocp考试包含55~80个问题,考试时间90分钟。首先回答你会的问题,这样不至于时间不够用。   许多问题的答案选项第一眼看上去都是一样的,要仔细阅读问题,不要直接跳到答案,一定要弄确切每个问题到底问什么。   大部分测试题都是基于场景的,有些场景...

    发布于:2021-08-27

    详细阅读
  • [jdbc连接oracle数据库的连接字符串]通过JDBC连接oracle数据库的几个技巧

    java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。   1、在客户端软件开发中使用thin驱动程序 在开发java软件方面,oracle的数据库...

    发布于:2021-08-27

    详细阅读
  • vi编辑器的使用技巧_VI的常见使用技巧

    一、简介 vi命令可以说是unix linux世界里最常用的编辑文件的命令了,很多人不喜欢vi因为它 的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。 本文旨在更有条理有归纳性地介绍vi的一些最常用命令和一些高级的应用。 二、基本命令介绍 1) 光标命令...

    发布于:2021-08-27

    详细阅读
  • 会话跟踪技术|用改变跟踪技术加速Oracle递增备份

    oracle 8i引进了恢复管理(rman),首次实现了真正的递增备份。在rman之前,数据库输出也能够递增进行,但一旦某个表的任何一块发生改变,整个表都需要重写。rman递增备份则仅需在给定的数据文件中重写被修改的部分,由此可大大节约了空间。  然而在版本10g之前,递增备份需要对...

    发布于:2021-08-27

    详细阅读

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计