[20130106]整和資料庫--修改字符集.txt
[20130106]整和資料庫--修改字符集.txt
工作需要,需要把幾個資料庫合併在一起,由於以前資料庫使用的字符集是AMERICAN_AMERICA.US7ASCII,而現在的資料庫使用
SIMPLIFIED CHINESE_CHINA.ZHS16GBK,整合的時候需要修改字符集,統一到字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
自己google看了一些blog和文件,最終選擇這個方式,自己做一個記錄:英文字符集轉化到中文字符集。當然這個轉化的前提
條件是應用表中欄位沒有clob欄位型別。
1.轉換方法:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET aq_tm_processes=0;
ALTER DATABASE OPEN;
update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
commit;
--update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';
--commit;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10;
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';
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
--ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
2.CLOB欄位問題:
實際上這種轉換是存在一些小問題的,應用表如果有clob欄位(其他欄位型別目前不是很清楚是否存在這個問題),顯示clob的內容
會存在亂碼!如果這些表不多可以採用exp/imp方式(注意匯出的檔案要做一些小修改)
[注:修改dmp檔案00 01 => 03 54,注意2,3位元組,以及07 do前面的兩處。這種包含clob欄位沒有測試過]
即使這樣,system,sys使用者依舊存在一些欄位是clob型別的,無法避開這些欄位顯示出現亂碼,這不過對應用影響不大。
SELECT owner, table_name, column_name
FROM dba_tab_cols
WHERE data_type = 'CLOB' and table_name not like 'V_%';
執行
select * from sys.METASTYLESHEET;
欄位STYLESHEET顯示的就是亂碼。
SELECT owner, table_name, COUNT (*)
FROM (SELECT owner, table_name, column_name
FROM dba_tab_cols
WHERE data_type = 'CLOB' AND table_name NOT LIKE 'V_%')
GROUP BY owner, table_name
ORDER BY 1, 2
大約19X個,不過許多是空表。還有一些檢視,不過我懶的去解決這些問題,好像對應用影響不大。
關於clob亂碼問題,留待以後研究。
工作需要,需要把幾個資料庫合併在一起,由於以前資料庫使用的字符集是AMERICAN_AMERICA.US7ASCII,而現在的資料庫使用
SIMPLIFIED CHINESE_CHINA.ZHS16GBK,整合的時候需要修改字符集,統一到字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
自己google看了一些blog和文件,最終選擇這個方式,自己做一個記錄:英文字符集轉化到中文字符集。當然這個轉化的前提
條件是應用表中欄位沒有clob欄位型別。
1.轉換方法:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET aq_tm_processes=0;
ALTER DATABASE OPEN;
update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
commit;
--update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';
--commit;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10;
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';
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
--ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
2.CLOB欄位問題:
實際上這種轉換是存在一些小問題的,應用表如果有clob欄位(其他欄位型別目前不是很清楚是否存在這個問題),顯示clob的內容
會存在亂碼!如果這些表不多可以採用exp/imp方式(注意匯出的檔案要做一些小修改)
[注:修改dmp檔案00 01 => 03 54,注意2,3位元組,以及07 do前面的兩處。這種包含clob欄位沒有測試過]
即使這樣,system,sys使用者依舊存在一些欄位是clob型別的,無法避開這些欄位顯示出現亂碼,這不過對應用影響不大。
SELECT owner, table_name, column_name
FROM dba_tab_cols
WHERE data_type = 'CLOB' and table_name not like 'V_%';
執行
select * from sys.METASTYLESHEET;
欄位STYLESHEET顯示的就是亂碼。
SELECT owner, table_name, COUNT (*)
FROM (SELECT owner, table_name, column_name
FROM dba_tab_cols
WHERE data_type = 'CLOB' AND table_name NOT LIKE 'V_%')
GROUP BY owner, table_name
ORDER BY 1, 2
大約19X個,不過許多是空表。還有一些檢視,不過我懶的去解決這些問題,好像對應用影響不大。
關於clob亂碼問題,留待以後研究。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-752174/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改資料庫字符集資料庫
- 修改Oracle資料庫字符集Oracle資料庫
- 修改資料庫字符集(轉)資料庫
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- 怎樣修改資料庫字符集資料庫
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- ORA-12899 修改資料庫字符集資料庫
- Oracle修改資料字符集Oracle
- linux下mysql的預設字符集修改和預設資料庫引擎的修改LinuxMySql資料庫
- 如何在10g中修改資料庫字符集資料庫
- psycopg2 修改資料庫客戶端字符集資料庫客戶端
- 修改oracle9i資料庫字符集的方法(轉)Oracle資料庫
- ORACLE 修改資料庫的字符集編碼為UTF-8Oracle資料庫
- 資料庫字符集修改函式function nls_charset_id_name資料庫函式Function
- 檢視和設定MySQL資料庫字符集MySql資料庫
- [20130106]關於不同字符集下clob欄位的儲存問題.txt
- 資料庫修改資料資料庫
- 修改資料庫資料庫
- oracle資料庫字符集資訊Oracle資料庫
- 關於資料庫字符集資料庫
- 修改資料庫檔名字和路徑資料庫
- mysql資料庫新增和修改欄位MySql資料庫
- oracle國家字符集與資料庫字符集Oracle資料庫
- 資料庫建庫時字符集和排序規則的選擇資料庫排序
- Oracle NID工具修改資料庫DBID和資料庫名稱Oracle資料庫
- 檢視和修改Oracle字符集Oracle
- oracle資料庫的字符集更改Oracle資料庫
- 檢視oracle資料庫字符集Oracle資料庫
- Oracle資料庫字符集介紹Oracle資料庫
- Oracle資料庫字符集問題Oracle資料庫
- Oracle資料庫字符集淺析Oracle資料庫
- 【實驗】【MySQL】模擬將latin1字符集的資料庫修改為gbk字符集MySql資料庫
- 資料型別和字符集資料型別
- 轉載如何修改oracle資料庫字符集_及如何繞過超集報錯Oracle資料庫
- mysql修改表、欄位、庫的字符集MySql
- MySQL修改字符集(mysqldump轉換全庫)MySql
- Oracle字符集的檢視和修改Oracle
- Oracle 字符集的檢視和修改Oracle