oracle查看字符集後修改oracle服務端和客戶端字符集的步驟

1.oracle server端字符集查詢
代碼以下:
select userenv('language') from dual;
sql

server字符集修改數據庫

將數據庫啓動到RESTRICTED模式下作字符集更改:
代碼以下:
SQL>conn /as sysdbabash

SQL>shutdown immediate;  oracle

SQL>startup mountssh

SQL>ALTER  SYSTEM  ENABLE  RESTRICTED  SESSION;  測試

SQL>ALTER  SYSTEM  SET  JOB_QUEUE_PROCESSES=0;  spa

SQL>ALTER  SYSTEM  SET  AQ_TM_PROCESSES=0;orm

SQL>alter database open;  server

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數據庫繞過了子集與超集的校驗

這一方法在某些方面是有用處的,好比測試;應用於產品環境時你們應該當心,可能會有一些意外的問題。

2.oracle client端字符集修改

代碼以下:
$echo$NLS_LANG

client字符集修改:  

 在 /home/oracle與 /root用戶目錄下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句

 關閉當前ssh窗口。

注意:NLS_LANG變量必定要配置正確不然會引發sqlplus失效。

3.修改數據庫字符集爲UTF-8

1.以DBA登陸

2.執行轉換語句:

代碼以下:
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;

注意:若是沒有大對象,在使用過程當中進行語言轉換沒有什麼影響!

可能會出現ORA-12717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解決這個問題的方法

利用INTERNAL_USE 關鍵字修改區域設置代碼以下:ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

相關文章
相關標籤/搜索