最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

修改Oracle字符集為UTF-8解決中文亂碼問題

 更新時(shí)間:2023年12月02日 09:51:43   作者:芽孢八疊球菌  
這篇文章主要介紹了修改Oracle字符集為UTF-8解決中文亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

很多情況下,遇到數(shù)據(jù)庫查詢數(shù)據(jù)中文亂碼,一般都是字符集的問題,下面記錄一下oracle字符集的查看方法,并提供UTF-8字符集的修改方式。

1、查看數(shù)據(jù)庫字符集

以下操作均在sqlplus或客戶端中執(zhí)行

數(shù)據(jù)庫服務(wù)器字符集:

select * from nls_database_parameters;

其來源于props$,是表示數(shù)據(jù)庫的字符集。

客戶端字符集環(huán)境:

select * from nls_instance_parameters;

其來源于v$parameter,

表示客戶端的字符集的設(shè)置,可能是參數(shù)文件,環(huán)境變量或者是注冊(cè)表

會(huì)話字符集環(huán)境:

select * from nls_session_parameters;

其來源于v$nls_parameters,表示會(huì)話自己的設(shè)置,可能是會(huì)話的環(huán)境變量或者是alter session完成,如果會(huì)話沒有特殊的設(shè)置,將與nls_instance_parameters一致。

重要提示:

客戶端的字符集要求與服務(wù)器一致,才能正確顯示數(shù)據(jù)庫的非Ascii字符。

如果多個(gè)設(shè)置存在的時(shí)候:

alter session>環(huán)境變量>注冊(cè)表>參數(shù)文件

2、修改oracle的字符集為UTF-8

① 在SQL PLUS 中,以DBA登錄

conn sys/sys as sysdba;

② 執(zhí)行轉(zhuǎn)換語句:

SHUTDOWN IMMEDIATE; --先關(guān)掉數(shù)據(jù)庫
STARTUP MOUNT EXCLUSIVE; 
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET AL32UTF8; --此處修改字符集關(guān)鍵語句
SHUTDOWN immediate; --修改完畢后重啟數(shù)據(jù)庫
STARTUP;

注意

如果沒有大對(duì)象,在使用過程中進(jìn)行語言轉(zhuǎn)換沒有什么影響,(切記設(shè)定的字符集必須是ORACLE支持,不然不能start)

上述過程可能會(huì)出現(xiàn)提示:

ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists

要解決這個(gè)問題有兩種方法:

(1) 利用INTERNAL_USE關(guān)鍵字修改區(qū)域設(shè)置

SHUTDOWN IMMEDIATE; --同樣需要關(guān)閉數(shù)據(jù)庫
STARTUP MOUNT EXCLUSIVE; 
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USEAL32UTF8; --此處加上了INTENAL_USER
SHUTDOWN immediate;
startup;

(2) 利用re-create,但是re-create有點(diǎn)復(fù)雜,我也不會(huì)(逃) ③ 如果上面的方法執(zhí)行有問題

可以在sqlplus中強(qiáng)制轉(zhuǎn)換執(zhí)行如下語句

update sys.props$ set value$= 'AL32UTF8' WHERE name = 'NLS_CHARACTERSET';
commit;

然后重新啟動(dòng)oracle或者重新啟動(dòng)Linux系統(tǒng)。

一定要再執(zhí)行如下代碼:

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是沒有寫在文檔中的參數(shù),用以強(qiáng)制完成字符集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次啟動(dòng)數(shù)據(jù)庫一遍
SHUTDOWN IMMEDIATE;
STARTUP;

至此,EXP問題得到了解決。

注意:修改字符集只是修改了數(shù)據(jù)字典,并沒有對(duì)數(shù)據(jù)進(jìn)行字符集轉(zhuǎn)換!

④ 如果語言環(huán)境不一致,語言環(huán)境同時(shí)更新掉:

update   sys.props$   set   value$= 'SIMPLIFIED CHINESE'   WHERE   name   =   'NLS_LANGUAGE';
update   sys.props$   set   value$= 'SIMPLIFIED CHINESE'   WHERE   name   =   'NLS_DATE_LANGUAGE';
update   sys.props$   set   value$= 'CHINA'   WHERE   name   =   'NLS_TERRITORY';
update   sys.props$   set   value$= 'CHINA'   WHERE   name   =   'NLS_ISO_CURRENCY';
update   sys.props$   set   value$= '?'   WHERE   name   =   'NLS_CURRENCY';
update   sys.props$   set   value$= '?'   WHERE   name   =   'NLS_DUAL_CURRENCY';
commit;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Oracle多表級(jí)聯(lián)更新詳解

    Oracle多表級(jí)聯(lián)更新詳解

    我們?cè)谄綍r(shí)的工作中可能遇到過,多表級(jí)聯(lián)更新,我也在網(wǎng)上看到過不少的方法,但是使用這些方法一般都沒成功過,所以今天我給大家介紹一種稍微麻煩的方法,有需要的朋友可以參考下
    2013-07-07
  • Linux下修改Oracle密碼的詳細(xì)指南

    Linux下修改Oracle密碼的詳細(xì)指南

    使用Navicat連接Oracle數(shù)據(jù)庫時(shí),您需要輸入正確的用戶名和密碼,如果您遺忘了密碼,或者需要為用戶設(shè)置新密碼,則需要通過Linux系統(tǒng)中的Oracle管理工具修改密碼,本文將為您提供詳細(xì)的步驟,需要的朋友可以參考下
    2024-12-12
  • sqlplus登錄\連接命令、sqlplus命令的使用大全

    sqlplus登錄\連接命令、sqlplus命令的使用大全

    Oracle的sql*plus是與oracle進(jìn)行交互的客戶端工具。在sqlplus中,可以運(yùn)行sqlplus命令與sqlplus語句
    2013-08-08
  • Oracle執(zhí)行計(jì)劃及性能調(diào)優(yōu)詳解使用方法

    Oracle執(zhí)行計(jì)劃及性能調(diào)優(yōu)詳解使用方法

    在Oracle數(shù)據(jù)庫中,通過使用EXPLAIN PLAN、AWR、SQL Trace等工具可以對(duì)SQL性能進(jìn)行詳細(xì)分析,EXPLAIN PLAN可以展示SQL執(zhí)行計(jì)劃和關(guān)鍵性能指標(biāo)如操作類型、成本、行數(shù)等,本文給大家介紹Oracle執(zhí)行計(jì)劃及性能調(diào)優(yōu)詳解使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 解決ORA-12170:TNS connect timeout occurred問題

    解決ORA-12170:TNS connect timeout occurred問題

    這篇文章主要介紹了解決ORA-12170:TNS connect timeout occurred問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • PLSQL Developer連接Oracle11g 64位數(shù)據(jù)庫配置詳解(圖文)

    PLSQL Developer連接Oracle11g 64位數(shù)據(jù)庫配置詳解(圖文)

    這篇文章主要介紹了PLSQL Developer連接Oracle11g 64位數(shù)據(jù)庫配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Oracle基礎(chǔ)多條sql執(zhí)行在中間的語句出現(xiàn)錯(cuò)誤時(shí)的控制方式

    Oracle基礎(chǔ)多條sql執(zhí)行在中間的語句出現(xiàn)錯(cuò)誤時(shí)的控制方式

    今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ)多條sql執(zhí)行在中間的語句出現(xiàn)錯(cuò)誤時(shí)的控制方式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Oracle中查看引起Session阻塞的2個(gè)腳本分享

    Oracle中查看引起Session阻塞的2個(gè)腳本分享

    這篇文章主要介紹了Oracle中查看引起Session阻塞的2個(gè)腳本分享,本文給出了2個(gè)腳本來查詢導(dǎo)致Session阻塞的原因,并給出Kill引起阻塞的Session方法,需要的朋友可以參考下
    2014-10-10
  • Oracle中計(jì)算除法,解決除數(shù)為零報(bào)錯(cuò)的問題及分析

    Oracle中計(jì)算除法,解決除數(shù)為零報(bào)錯(cuò)的問題及分析

    在Oracle數(shù)據(jù)庫中,進(jìn)行除法運(yùn)算時(shí),如果除數(shù)可能為零,直接使用除法運(yùn)算符(/)會(huì)導(dǎo)致錯(cuò)誤,解決方法是使用`DECODE()`函數(shù)來處理除數(shù)為零的情況
    2025-11-11
  • 快速解除oracle dataguard的方法

    快速解除oracle dataguard的方法

    文章介紹了如何快速解除Oracle Data Guard配置的過程,包括備份SPFILE到PFILE、調(diào)整主庫模式、修改主庫DG配置參數(shù)、刪除Standby Log以及重啟數(shù)據(jù)庫等步驟,感興趣的朋友一起看看吧
    2025-03-03

最新評(píng)論

伊金霍洛旗| 新乡市| 土默特左旗| 滨海县| 凤庆县| 伊通| 广昌县| 三穗县| 奉节县| 新闻| 公主岭市| 武宁县| 朝阳区| 江西省| 新宁县| 江门市| 太仆寺旗| 武乡县| 涞源县| 乌苏市| 哈密市| 漳浦县| 桓台县| 巴林左旗| 栾城县| 黎川县| 苍溪县| 彩票| 永定县| 宜兰县| 莎车县| 海林市| 潼南县| 南涧| 宁蒗| 大荔县| 舒兰市| 彩票| 宁河县| 化州市| 阿合奇县|