Chinaunix首页 | 论坛 | 博客
  • 博客访问: 606039
  • 博文数量: 30
  • 博客积分: 8020
  • 博客等级: 中将
  • 技术积分: 1125
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-31 16:14
文章分类

全部博文(30)

文章存档

2011年(1)

2010年(3)

2009年(5)

2008年(21)

分类: Oracle

2008-03-27 22:14:54

解决问题
(此文仅供Oracle初学者参考只用)
 
/**********************************************
** 文章名称:Oracle 10G命令--解决问题(linux)
** 版权信息:可以任意转载,但要注明出处及作者信息
** 作   者: 隗公万
** 时   间: 2008.3.27
***********************************************/

一、我的环境:
    版  本: CentOS release 5 (Final)
    内  核: 2.6.18-8.el5
    数据库: oracle 10G

二、问题说明:
    装了好久的操作系统和oracle 10G数据库一直都是只用些英文的数据和数字,今天突然有日文数据的需求了,所以就顺手插入些日文数据,问题随即就来了居然全是乱码或问号。顺便又试了试中文,居然效果跟日文一样都是乱码或问号。这下就有些郁闷了。只好去网上搜索,去DBA的群中问,无奈大家的方法都解决不了我的问题,最后他们都让我重装系统。唉……这个怎么能重装呢,里面还那么多东西呢!

三、解决问题:
    首先,要先明白这个问题的原因:是由于数据库的客户端、服务器端、还有个会话的字符集不统一并且有无法显示日文的字符集。
    然后,查看下系统的这些字符集,很简单直接输入一些命令就可以查到:
    select * from sys.nls_database_parameters;--查看数据库参数
    select * from sys.nls_instance_parameters; --查看客户端参数
    select * from sys.nls_session_parameters; --查看会话的参数
    最后,修改这些NLS_LANGUAGE的值,我的就修改成了一致的WE8ISO8859P1。并且在环境变量中增加了export NLS_LANGUAGE=Japanese_Japan.WE8ISO8859P1的环境变量。再从sqlplus登入oracle数据插入中文或者日文都可以正常显示了。到此问题就算是解决了。

四、一个简单步骤;   

-- 先停止本数据库服务:

SQL>shutdown immediate;
-- 这些信息是更改正确字符集后的提示信息,一般应该是英文的)


--再启动数据库

SQL>startup restrict; --此处要注意启动方式要加 restrict参数


--修改字符集


SQL> alter session set sql_trace=true;

  Session altered.

SQL> alter system enable restricted session;

  System altered.

SQL> alter system set job_queue_processes=0;

  System altered.

SQL> alter system set aq_tm_processes=0;

    System altered.

SQL> alter database open;

  Database altered.

SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

SQL>ALTER DATABASE character set INTERNAL_USE zhs16gbk;

 Database altered.

--重启数据库


SQL> shutdown immediate;

SQL> startup;


阅读(2407) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:编码转换程序

给主人留下些什么吧!~~