<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/oracle-db-services-charset-step/</link>
<title><![CDATA[oracle数据库服务器字符集更改步骤]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[数据库]]></category>
<pubDate>Fri, 15 Oct 2010 07:48:03 +0000</pubDate> 
<guid>https://www.heckjj.com/oracle-db-services-charset-step/</guid> 
<description>
<![CDATA[ 
	<span style="font-family: 微软雅黑;">数据库服务器字符集更改步骤<br/><strong><span style="color: #4169E1;">问题描述：</span></strong><br/>在客户端插入字符“咪咪”，从数据库中查询显示时出现乱码<br/><br/><span style="color: #4169E1;"><strong>处理步骤：</strong></span><br/>1.对数据库做全库导出，备份全库数据，以防故障发生<br/>首先设定客户端的字符集，必须以ZHS16GBK的字符集导出，然后才能在更改失败后顺利倒入新建的库。<br/>#setenv NLS_LANG &quot;SIMPLIFIED CHINESE_CHINA.ZHS16GBK&quot;;<br/>#stty -istrip -parity cs8;<br/>#setenv LANG zh<br/>拟在/sybdata（磁盘阵列）下建立一个目录orabak,用于存放dmp文件。<br/>#mkdir /sybdata/orabak<br/>#chown oracle:oinstall /sybdata/orabak<br/>#su – oracle<br/>#cd /sybdata/orabak<br/>%exp system/manager@hnsdh file=hnsdh_2010-8-17 log=hnsdh_exp_2010-8-17 full=y<br/>(此处命名为示例，以实施当日日期为准)<br/>察看日志结尾，以判定导出是否成功。<br/>#cat hnsdh_2010-8-17.dmp &#124; od -x &#124; head<br/>看第二和第三个字节组成的十六进制数是多少可判断导出文件的字符集。</span>[font=微软雅黑]<br/>示例如下<br/>#cat example.dmp &#124; od -x &#124; head<br/>0000000 0303 5445 5850 4f52 543a 5630 392e 3032<br/>。。。<br/>0000220 646d 7000 0000 0000 0000 0000 0000 0000<br/>十六进制的0354化为十进制为852，参造下表<br/>NLS_CHARSET_ID NLS_CHARSET_NAME HEX_ID<br/>-------------- ------------------------------ -------------<br/>1 US7ASCII 1<br/>2 WE8DEC 2<br/>3 WE8HP 3<br/>4 US8PC437 4<br/>5 WE8EBCDIC37 5<br/>6 WE8EBCDIC500 6<br/>7 WE8EBCDIC1140 7<br/>8 WE8EBCDIC285 8<br/>...................<br/>850 ZHS16CGB231280 352<br/>851 ZHS16MACCGB231280 353<br/>852 ZHS16GBK 354<br/>853 ZHS16DBCS 355<br/>860 ZHT32EUC 35c<br/>861 ZHT32SOPS 35d<br/>862 ZHT16DBT 35e<br/>863 ZHT32TRIS 35f<br/>864 ZHT16DBCS 360<br/>865 ZHT16BIG5 361<br/>866 ZHT16CCDC 362<br/>867 ZHT16MSWIN950 363<br/>868 ZHT16HKSCS 364<br/>870 AL24UTFFSS 366<br/>871 UTF8 367<br/>872 UTFE 368<br/>即可得出这个dmp文件的字符集为ZHS16GBK。<br/>2. 在数据库中直接更改字符集参数<br/>操作步骤如下：<br/>SQL&gt; shutdown immediate<br/>SQL&gt; startup mount<br/>SQL&gt; ALTER SYSTEM ENABLE RESTRICTED SESSION;<br/>SQL&gt; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;<br/>SQL&gt; ALTER SYSTEM SET AQ_TM_PROCESSES=0;<br/>SQL&gt; ALTER DATABASE OPEN;<br/>SQL&gt; alter session set events &#039;10046 trace name context forever,level 12&#039;;<br/>SQL&gt; alter database character set INTERNAL_USE ZHS16GBK;<br/>SQL&gt; shutdown immediate<br/>SQL&gt; startup<br/>察看系统字符集<br/>SQL&gt; SELECT * FROM NLS_DATABASE_PARAMETERS;<br/>看NLS_CHARACTERSET的值为多少，如果为ZHS16GBK则说明改动成功。<br/>如果执行正常，则按照下一节进行测试操作。<br/>3. 更改成功后的测试<br/>测试1，在数据库服务器端下测试<br/>%setenv NLS_LANG &quot;SIMPLIFIED CHINESE_CHINA.ZHS16GBK&quot;;<br/>%stty -istrip -parity cs8;<br/>%setenv LANG zh<br/>%sqlplus /nolog<br/>SQL〉conn / as sysdba<br/>SQL〉create table test_tq (a char(20));<br/>SQL〉insert into test_tq<br/>1&gt;(a) <br/>2&gt;values (&#039;洣洣&#039;);<br/>SQL〉select * from test_tq;<br/>如显示为<br/>A<br/>--------------------<br/>洣洣<br/>则成功。<br/>测试2，Windows客户端环境下测试<br/>运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE， 第三步选择 ORACLE， 第四步选择 NLS_LANG， 键 入 与服 务 器 端 相 同 的 字 符 集（本例为：AMERICAN_AMERICAN.US7ASCII）。<br/>右击我的电脑，然后点击属性，“高级”页面下，点击“环境变量”，在系统变量中添加：<br/>变量名：NLS_LANG<br/>变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK<br/>运行cmd，输入echo %NLS_LANG%，查看系统变量设置时否成功<br/>然后运行：<br/>$sqlplus system/manager@hnsdh<br/>SQL〉conn / as sysdba<br/>SQL〉create table test_tq (a char(20));<br/>SQL〉insert into test_tq<br/>1&gt;(a) <br/>2&gt;values (&#039;洣洣&#039;);<br/>SQL〉select * from test_tq;<br/>如显示为<br/>A<br/>--------------------<br/>洣洣<br/>则成功。<br/>4. 更改不成功时的措施<br/>新建数据库，设定字符集为ZHS16GBK,其他参数先照搬原来的，并倒入数据。建库时所需的具体参数在重建之前要搜集。注意在配置控制文件时设定最大数据文件数。<br/>建好数据库以后，执行以下命令即可恢复数据库<br/>%cd /sybdata/orabak<br/>%imp system/manager@hnsdh full=y ignore=y file=hnsdh_2010-8-17 log=hnsdh_imp_2010 -8-17 <br/>Tags - <a href="https://www.heckjj.com/tags/%25E6%2595%25B0%25E6%258D%25AE%25E5%25BA%2593/" rel="tag">数据库</a> , <a href="https://www.heckjj.com/tags/%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8/" rel="tag">服务器</a> , <a href="https://www.heckjj.com/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">字符集</a> , <a href="https://www.heckjj.com/tags/%25E6%259B%25B4%25E6%2594%25B9/" rel="tag">更改</a> , <a href="https://www.heckjj.com/tags/%25E6%25AD%25A5%25E9%25AA%25A4/" rel="tag">步骤</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/oracle-db-services-charset-step/#blogcomment</link>
<title><![CDATA[[评论] oracle数据库服务器字符集更改步骤]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/oracle-db-services-charset-step/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>