1.oracle server端字符集查詢
復制代碼 代碼如下:
select userenv('language') from dual;
server字符集修改:
將數(shù)據(jù)庫啟動到RESTRICTED模式下做字符集更改:
復制代碼 代碼如下:
SQL>conn /as sysdba
SQL>shutdown immediate;
SQL>startup mount
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>alter database open;
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;
SQL>select * from v$nls_parameters;
重啟檢查是否更改完成:
復制代碼 代碼如下:
SQL>shutdown immediate;
SQL>startup
SQL>select * from v$nls_parameters;
我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使Oracle數(shù)據(jù)庫繞過了子集與超集的校驗
這一方法在某些方面是有用處的,比如測試;應用于產(chǎn)品環(huán)境時大家應該小心,可能會有一些意外的問題。
2.oracle client端字符集修改
復制代碼 代碼如下:
$echo$NLS_LANG
client字符集修改:
在 /home/oracle與 /root用戶目錄下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句
關閉當前ssh窗口。
注意:NLS_LANG變量一定要配置正確否則會引起sqlplus失效。
3.修改數(shù)據(jù)庫字符集為UTF-8
1.以DBA登錄
2.執(zhí)行轉換語句:
復制代碼 代碼如下:
SHUTDOWN IMMEDIATE;
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 UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
注意:如果沒有大對象,在使用過程中進行語言轉換沒有什么影響!
可能會出現(xiàn)ORA-12717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解決這個問題的方法
利用INTERNAL_USE 關鍵字修改區(qū)域設置
復制代碼 代碼如下:
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
您可能感興趣的文章:- Oracle客戶端與plsql查詢數(shù)據(jù)亂碼修改成中文的快速解決方法
- Oracle修改表空間大小的方法
- 修改oracle數(shù)據(jù)庫用戶名及密碼的方法
- 查看oracle數(shù)據(jù)庫的編碼及修改編碼格式的方法
- ORACLE查看并修改最大連接數(shù)的具體步驟
- oracle中修改表名的幾種方式
- oracle查看字符集和修改字符集使用詳解
- 修改計算機名或IP后Oracle10g服務無法啟動的解決方法
- 解決Oracle批量修改問題