字符集問題的初步探討(七)-字符集更改的內部操作
字符集問題的初步探討(七)-字符集更改的內部操作
作者:eygle | English Version 【版權宣告:轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告】連結:http://www.eygle.com/archives/2004/09/nls_character_set_07.html
這部分並未包含於itpub技術叢書《Oracle資料庫DBA專題技術精粹》中,是後來補充的內容.
前面我們提到,通過修改props$的方式更改字符集在Oracle7之後是一種極其危險的方式,應該儘量避免。
我們又知道,通過ALTER DATABASE CHARACTER SET更改字符集雖然安全可靠,但是有嚴格的子集和超集的約束,實際上我們很少能夠
用到這種方法。
實際上Oracle還存在另外一種更改字符集的方式.
如果你注意過的話,在Oracle的alert<sid>.log檔案中,你可能看到過這樣的日誌資訊:
alter database character set INTERNAL_CONVERT ZHS16GBK |
在這裡面,我們看到這樣一條重要的,Oracle非公開的命令:
|
這個命令是當你選擇了使用典型方式建立了種子資料庫以後,Oracle會根據你選擇的字符集設定,把當前種子資料庫的字符集更改為期望字元
集,這就是這條命令的作用.
在使用這個命令時,Oracle會跳過所有子集及超集的檢查,在任意字符集之間進行強制轉換,所以,使用這個命令時你必須十分小心,你必須
清楚這一操作會帶來的風險.
我們之前講過的內容仍然有效,你可以使用csscan掃描整個資料庫,如果在轉換的字符集之間確認沒有嚴重的資料損壞,或者你可以使用有效
的方式更改,你就可以使用這種方式進行轉換.
我們來看一下具體的操作過程及Oracle的內部操作:
SQL> shutdown immediate |
這是alert.log檔案中的記錄資訊:
|
格式化10046跟蹤檔案,得到以下資訊(摘要):
alter session set events '10046 trace name context forever,level 12' |
此處生成的日誌你可以在這裡下載(供參考):
http://www.eygle.com/special/primary_ora_13730.zip
http://www.eygle.com/special/primary_ora_13730.tkf.log
我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使
Oracle資料庫繞過了子集與超集的校驗.
這一方法在某些方面是有用處的,比如測試;應用於產品環境大家應該格外小心,除了你以外,沒有人會為此帶來的後果負責:
結語(我們不妨再說一次):
對於DBA來說,有一個很重要的原則就是:不要把你的資料庫置於危險的境地!
這就要求我們,在進行任何可能對資料庫結構發生改變的操作之前,先做有效的備份,很多DBA沒有備份的操作中得到了慘痛的教訓。
相關文章
- oracle字符集的更改【轉】Oracle
- oracle更改字符集Oracle
- oracle資料庫的字符集更改Oracle資料庫
- oracle字符集問題Oracle
- mysql 字符集造成的效能問題MySql
- 關於Oracle字符集的問題Oracle
- linux字符集的一個問題Linux
- 請教mysql中字符集的問題MySql
- oracle imp字符集問題的解決Oracle
- 字符集合轉換問題
- Linux字符集問題Linux
- [MySQLFAQ]系列–如何更改MySQL的預設字符集MySql
- 淺談MySQL備份字符集的問題MySql
- Oracle字符集問題總結Oracle
- 2.15Python中的字符集問題Python
- PHP和mySQL的字符集編碼問題(1)PHPMySql
- Oracle資料庫字符集問題Oracle資料庫
- CSSCAN使用說明[字符集問題]CSS
- 探討系統中?錢的精度問題
- 專案團隊的信任問題探討
- Export/Import匯入匯出時的字符集問題ExportImport
- sybase字符集與排序操作排序
- 更改Oracle字符集:把字符集ZHS16GBK換成UTF8Oracle
- 生產oracle字符集轉碼問題Oracle
- Oracle資料庫字符集問題解析Oracle資料庫
- ORACLE字符集問題總結 (轉載)Oracle
- Oracle exp/imp字符集相關問題Oracle
- Oracle字符集問題總結(轉貼)Oracle
- 關於mongo原子操作的探討Go
- MySQL 字符集與亂碼與collation設定的問題?MySql
- 探索Oracle之 EXP/IMP過程中的字符集問題Oracle
- JBOSS下的JSP頁面字符集亂碼問題JS
- mysql 5 資料庫匯出與字符集的問題。MySql資料庫
- 給使用者資訊加密的問題探討加密
- 專案團隊的信任問題探討(轉)
- mysql的字符集MySql
- oracle11g更改資料庫字符集Oracle資料庫
- oracle9i 更改字符集步驟方法Oracle