`
panlw
  • 浏览: 54259 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle Dump File Language

阅读更多

Oracle的imp命令导入备份数据

文章来源:考试大 作者: 更新时间:2007-2-27 关键字: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文件中备份的数据库表已经存在,则导入过程会失败,只能先将已经存在的表删除,在进行导入。

分享到:
评论

相关推荐

    oracle数据泵的方式导入导出数据库

    $ impdp system/oracle directory=dump_dir dumpfile=20140304last_hxb.dmp logfile=impdp.log ``` 这条命令将名为 `20140304last_hxb.dmp` 的文件导入到当前数据库,并将导入过程的日志记录在 `impdp.log` 文件中...

    解决Oracle中文乱码.pdf

    *_DUMP 文件字符集(Dump File Character Set):是用于导出和导入数据的字符集。 二、如何查询 Oracle 的字符集 要查询 Oracle 的字符集,可以使用以下方法: * 查看 Oracle 服务器端的字符集:使用 SQL 语句 `...

    oracle安装卸载和导入导出数据

    - 示例命令: `expdp username/password directory=dir_name dumpfile=filename.dmp logfile=filename.log` - `username/password`: 登录Oracle数据库的用户名和密码。 - `directory=dir_name`: 导出文件存放的...

    unix中oracle分区表导出

    这里的`username/password`是数据库连接的用户名和密码,`directory`是指定的Oracle目录对象,用于指定导出文件的存储位置,`dumpfile`是导出文件的名称,`tables`则是要导出的表名。 对于分区表,我们可能希望分别...

    Oracle培训

    - `expdp username/password directory=dir_name dumpfile=file_name.dmp logfile=logfile.log`: 将数据导出到指定文件。 **IMPDP命令** - `impdp username/password directory=dir_name dumpfile=file_name.dmp ...

    oracle执行命令。

    1. 导出数据:`expdp user/password directory=dir_name dumpfile=data.dmp logfile=expdp.log` 2. 导入数据:`impdp user/password directory=dir_name dumpfile=data.dmp logfile=impdp.log` 五、性能监控与优化 ...

    Oracle11g和10g互转导入导出方法.docx

    - 使用`expdp`命令导出数据,例如`expdp hb_elite/letmein directory=hbelite dumpfile=hbdxdb.dmp logfile=hbdxdb.log version=10.2`。 - 导出完成后,验证日志以确保导出成功,可删除创建的目录。 **3. 数据泵...

    Oracle DBA常用SQL语句

    SELECT userenv('language'), userenv('LANG') FROM dual; ``` 9. **SQL优化方式**: 判断SQL优化器使用的是RBO(Rule-Based Optimization)还是CBO(Cost-Based Optimization),可以通过解释计划并检查`PLAN_...

    Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK

    - 使用`IMPDP sg_rue/sg_rue@orcl SCHEMAS=sg_rue DIRECTORY=dbexpdp_dir DUMPFILE=20170909.dmp LOGFILE=20170909_imp.log`命令将之前备份的数据导入到新的字符集环境下的数据库中。注意这里的用户名和密码需要...

    oracle进程监控

    show parameter user_dump_dest; ``` - 通过这个命令,我们可以获取到用户错误日志文件的存放路径,这对于诊断问题非常有用。 - **查看表信息** - 以下SQL语句用于查询未包含特定模式的表的信息: ```sql ...

    Oracle数据库操作大全

    - `max_dump_file_size`: 最大的转储文件大小。 - `global_names`: 是否启用全局名称解析。 - `db_block_size`: 数据块的大小。 - `job_queue_processes`: 工作队列的最大并发进程数。 - `job_queue_interval`:...

    exp和imp用法和介绍

    exp username/password [file=dumpfile] [tables=tablename] [owner=username] [log=logfilename] ``` - `username/password`:指定登录数据库的用户名和密码。 - `file=dumpfile`:指定 dump 文件的名称。 - `...

    PLSQL导入和导出工具的使用

    在IT行业中,PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库管理系统中用于操作数据、管理数据库的一种编程语言。它结合了SQL的查询功能和过程式编程语言的控制结构,使得开发者能更有效地...

    AIX6.1两节点的ORACLE10.2.0.5RAC恢复到单机

    - `*.audit_file_dest`: 设置为`'/home/oracle/admin/lygl/adump'` - `*.background_dump_dest`: 设置为`'/home/oracle/admin/lygl/bdump'` - `*.compatible`: 设置为`'10.2.0.5.0'` - `*.control_files`: 设置...

    oracle_DBA_常用SQL语句

    SELECT USERENV('LANGUAGE') FROM dual; SELECT USERENV('LANG') FROM dual; ``` 9. **判断当前使用哪种SQL优化方式**: 检查EXPLAIN PLAN的POSITION列来确定是RBO(规则基础优化器)还是CBO(成本基础优化器)...

    oracle_DBA_常用SQL语句[借鉴].pdf

    select userenv('language') from dual; select userenv('lang') from dual; ``` SQL优化管理 判断当前正在使用何种SQL优化方式可以使用以下SQL语句: ```sql select decode(nvl(position,-1),-1,'RBO',1,'CBO') ...

    oracle函数大全.doc

    ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...

    oracle常用命令

    - **目录对象创建**:如 **`SET DIRECTORY UTL_FILE_DIR`**,用于设置文件系统目录作为Oracle的文件访问路径。 - **日志文件分析**:涉及 **`V$ARCHIVE_LOGLOGMNR`**、**`DBMS_LOGMNR_D.BUILD`**、**`DBMS_LOGMNR....

    oracle操作手册

    - `max_dump_file_size`: 最大转储文件大小,设置为10240字节。 - `global_names`: 是否开启全局名称解析,设置为true。 - `db_block_size`: 数据块大小,设置为16384字节。 - `job_queue_processes`: 工作队列进程...

Global site tag (gtag.js) - Google Analytics