当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

<b>EXP碰到ORA-06552错误的办理-性能调优</b>[Oracle防范]

赞助商链接



  本文“<b>EXP碰到ORA-06552错误的办理-性能调优</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    有一个建好的数据,Oracle 9.2.0.4 for linux,字符集是缺省的WE8ISO8859P1,没有改成ZHS16GBK. 库中暂时没有任何数据.

    由于字符集不是超集/子集关系,无法通过ALTER DATABASE CHARACTER SET改正字符集.

    当不时间慌张,就没有重建数据库,而是直接改正prop$表,将NLS_CHAR字符集改成ZHS16GBK. update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';重启后建表、insert数据,一切正常……直到本日要exp出数据.

    履行 exp userid=system owner=username …… 报错!

    行将导出指定的用户…

    正在导出 pre-schema 历程对象和操作

    正在导出用户 USERNAME 的外部函数库名称

    导出 PUBLIC 范例同义词

    EXP-00008: 碰到 ORACLE 错误 6552

    ORA-06552: PL/SQL: Compilation unit analysis terminated

    ORA-06553: PLS-553: character set name is not recognized

    EXP-00000: 导出终止失利

    隐隐感受与当时的字符集设置有关 "正式改正字符集时,Oracle至少需求更改12张数据字典表,而这种直接更新props$表的方法只完成了此中十二分之一的工作,潜在的完好性隐患是不可思议的."

    但是若何办理呢?后来搜索到未公开的INTERNAL_USE用法,强迫完成字符集一致化,办理了问题.

    首先,确认字符集能否改正的不完好.

SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
DECODE(TYPE#, 1,
DECODE(CHARSETFORM, 1, 'VARCHAR2', 2, 'NVARCHAR2', 'UNKOWN'),
9,
DECODE(CHARSETFORM, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112,
DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
FROM SYS.COL$
WHERE CHARSETFORM IN (1, 2)
AND TYPE# IN (1, 9, 96, 112);

    假如上面的查询的确显示有多个字符集的设定,则举行以下处理:SHUTDOWN IMMEDIATE;

STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

    ——INTERNAL_USE是没有写在文档中的参数,用以强迫完成字符集一致化

ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

SHUTDOWN IMMEDIATE;
STARTUP;

    —— 再次启动数据库一遍

SHUTDOWN IMMEDIATE;
STARTUP;

    至此,EXP问题得到了办理.

    注意:改正字符集只是改正了数据字典,并没有对数据举行字符集转换!   以上是“<b>EXP碰到ORA-06552错误的办理-性能调优</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .