数据库服务器查询格式化显示,在数据库服务器端养成设置NLS_LANG和NLS_DATE_FORMAT环境变量的习惯...
今日凌晨3點左右同事打來電話說,他們在將一個單機版AIX平臺的Oracle數據庫遷移到相同平臺相同版本的RAC數據庫的時候,業務數據所有的中文變成了"?"號。遷移的方法是通過RMAN備份恢復。再查詢原有的數據庫所有中文也變成了"?"號。這就奇了怪了。遷移之前都還好好的咋就出了問題喃!
首先能夠確認的是原有數據庫沒動過,那么數據文件中的內容肯定沒被破壞,也就是說出現亂碼問題可能是配置上的問題。于是我第一反應想到了之前碰到過單實例數據庫遷移到集群數據庫日期處理上會有報錯的情況,需要在節點服務器的oracle用戶下的環境變量中添加NLS_DATE_FORMAT的設置(請參考文章:http://space.itpub.net/23135684/viewspace-628044)。那么,對應字符集的環境變量就是NLS_LANG,讓同事查了下在服務器端是否有設置NLS_LANG環境變量,同事說新、舊環境都未設置。于是讓他們在環境中手動設置了該環境變量,反饋說老環境中文顯示恢復正常了,但新RAC依然是"?"號,猜想應該在使用RMAN恢復數據之前應該先設置好NLS_LANG環境變量,避免有轉碼的情況出現。讓同事先在新環境中設置好NLS_LANG環境變量,再嘗試使用RMAN進行恢復,剛確認這樣操作之后數據就顯示正常了。
由以上這個案例,可以看出在數據庫服務器端設置與數據庫內部相同的NLS_LANG和應用系統中常用的NLS_DATE_FORMAT格式是非常重要的,在執行RMAN備份恢復的時候也要求先設置好這兩個環境變量。在我們的安裝、配置文檔中加入這兩個環境變量的設置,避免出現類似問題。養成好的習慣是我們能夠正常下班的保障!
LANG和NLS_LANG的區別請參考文章:http://space.itpub.net/23135684/viewspace-627431
總結
以上是生活随笔為你收集整理的数据库服务器查询格式化显示,在数据库服务器端养成设置NLS_LANG和NLS_DATE_FORMAT环境变量的习惯...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启用 DHCP
- 下一篇: mysql 导出dmp文件_MySQL数