欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

很多情況下,遇到數(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)境變量或者是注冊表

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

select * from nls_session_parameters;

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

重要提示:

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

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

alter session>環(huán)境變量>注冊表>參數(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;

注意

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

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

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

要解決這個問題有兩種方法:

(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有點復(fù)雜,我也不會(逃) ③ 如果上面的方法執(zhí)行有問題

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

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

然后重新啟動oracle或者重新啟動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ù),用以強制完成字符集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次啟動數(shù)據(jù)庫一遍
SHUTDOWN IMMEDIATE;
STARTUP;

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

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

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

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é)

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

相關(guān)文章

  • inner join和left join之間的區(qū)別詳解

    inner join和left join之間的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于inner join和left join之間區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • CMD操作oracle數(shù)據(jù)導(dǎo)庫過程圖解

    CMD操作oracle數(shù)據(jù)導(dǎo)庫過程圖解

    這篇文章主要介紹了CMD操作oracle數(shù)據(jù)導(dǎo)庫過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Oracle Report中加入下載超鏈接操作方法

    Oracle Report中加入下載超鏈接操作方法

    有些朋友可能會在Oracle Report中加入下載超鏈接,本文將介紹如何實現(xiàn)此更能
    2012-11-11
  • Oracle 用戶權(quán)限管理方法

    Oracle 用戶權(quán)限管理方法

    Oracle 用戶權(quán)限管理方法,對于想要學(xué)習(xí)oracle安全的朋友,是個入門級的資料。
    2009-08-08
  • oracle 11g的警告日志和監(jiān)聽日志的刪除方法

    oracle 11g的警告日志和監(jiān)聽日志的刪除方法

    這篇文章主要介紹了oracle 11g的警告日志和監(jiān)聽日志的刪除方法,需要的朋友可以參考下
    2014-07-07
  • Oracle數(shù)據(jù)IMP和EXP命令用法詳解

    Oracle數(shù)據(jù)IMP和EXP命令用法詳解

    這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)IMP和EXP命令用法詳解的相關(guān)資料,我們可以使用Oracle自帶的exp、imp命令來進行數(shù)據(jù)庫備份,imp和exp稱之為導(dǎo)入導(dǎo)出,這種方式也能快速的導(dǎo)入導(dǎo)出table或數(shù)據(jù)庫,需要的朋友可以參考下
    2023-11-11
  • Oracle數(shù)據(jù)庫找到 Top Hard Parsing SQL 語句的方法

    Oracle數(shù)據(jù)庫找到 Top Hard Parsing SQL 語句

    Oracle數(shù)據(jù)庫中的硬解析是指重新解析SQL語句并創(chuàng)建新的執(zhí)行計劃的過程,本文給大家介紹Oracle數(shù)據(jù)庫找到 Top Hard Parsing SQL 語句的方法,感興趣的朋友一起看看吧
    2025-01-01
  • Oracle 觸發(fā)器實現(xiàn)主鍵自增效果

    Oracle 觸發(fā)器實現(xiàn)主鍵自增效果

    這篇文章主要介紹了Oracle 觸發(fā)器實現(xiàn)主鍵自增,說白了就是數(shù)據(jù)確認(after)與安全性檢查(before),此外觸發(fā)器不針對select操作,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2021-12-12
  • linux下oracle設(shè)置開機自啟動實現(xiàn)方法

    linux下oracle設(shè)置開機自啟動實現(xiàn)方法

    你會發(fā)現(xiàn)Oracle沒有自行啟動,這是正常的,因為在Linux下安裝Oracle的確不會自行啟動,必須要自行設(shè)定相關(guān)參數(shù),首先先介紹一般而言如何啟動oracle
    2012-11-11
  • Oracle外鍵不加索引引起死鎖示例

    Oracle外鍵不加索引引起死鎖示例

    這篇文章主要介紹了Oracle外鍵不加索引引起死鎖的情況及解決,需要的朋友可以參考下
    2014-05-05

最新評論