免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2809 | 回复: 7
打印 上一主题 下一主题

关于Oracle更改字符集后的备份问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-19 11:06 |只看该作者 |倒序浏览
因为业务的需要,需要更改字符集。我在oracle9i中
SQL>UPDATE PROPS$ SET VALUE$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET' ;
SQL>UPDATE PROPS$ SET VALUE$='UTF8' WHERE NAME='NLS_NCHAR_CHARACTERSET' ;


但是更改完字符集后 用exp命令备份数据库出错:
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user AAA
. exporting PUBLIC type synonyms
EXP-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
EXP-00000: Export terminated unsuccessfully


尝试更改export=export NLS_LANG=UTF-8 之后再exp数据库。报另外一个错误:
EXP-00056: ORACLE error 12705 encountered
ORA-12705: invalid or unknown NLS parameter value specified
Username:

让输入用户名/密码,可是什么用户名密码都不正确。



现在数据库无法备份,有什么解决办法?

论坛徽章:
0
2 [报告]
发表于 2007-10-19 11:09 |只看该作者
不要使用这种方法修改Oracle9i字符集。

使用ALTER DATABASE CHARACTER SET 'xxx';
      ALTER DATABASE NATIONAL CHARACTER SET 'xxxx';
修改字符集是一种非常规操作,而且要考虑很多情况,建议做好修改前后的备份。

论坛徽章:
0
3 [报告]
发表于 2007-10-19 11:14 |只看该作者
问题是 现在已经更改了,数据在更改后的字符集的数据库中,run了1年多了。
现在需要备份数据库,做一个updata的操作。

有什么好办法?

论坛徽章:
0
4 [报告]
发表于 2007-10-19 11:25 |只看该作者
这个错误可能是由于数据字典字符集信息紊乱造成。
建议使用alter database character set INTERNAL_USE 'xxx'来修正

论坛徽章:
0
5 [报告]
发表于 2007-10-19 11:31 |只看该作者
alter database character set INTERNAL_USE 'xxx' 中 xxx 我更改后的字符集是UTF-8么?

如果不是 会不会出现字符集混乱的情况?

论坛徽章:
0
6 [报告]
发表于 2007-10-19 11:34 |只看该作者
还有没有什么好办法?比如物理备份? tar oracle中数据目录?

论坛徽章:
0
7 [报告]
发表于 2007-10-19 12:47 |只看该作者
尝试这个,或者参考metalink notes: 286964.1
做之前先关闭数据库,并作冷备份
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';
    ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
    ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
    SHUTDOWN IMMEDIATE;
    STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo   
    SHUTDOWN IMMEDIATE;
    STARTUP;

论坛徽章:
0
8 [报告]
发表于 2007-10-19 13:42 |只看该作者
我建个测试环境试一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP