在資料庫伺服器端養成設定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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-713507/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle環境變數NLS_LANGOracle變數
- 在Linux中,什麼是環境變數?如何設定和檢視環境變數?Linux變數
- Mac 設定環境變數的位置、檢視和新增PATH環境變數Mac變數
- 設定環境變數變數
- Vue 設定環境變數和模式Vue變數模式
- rman會話中設定nls_date_format和nls_lang會話ORM
- 【NLS_LANG】不同作業系統平臺NLS_LANG環境變數的檢視與設定方法作業系統變數
- 4.2.10.2 設定和取消設定環境變數變數
- 【字符集】“客戶終端字符集”、“NLS_LANG”環境變數以及“資料庫字符集”變數資料庫
- RMAN環境變數的設定變數
- export 設定環境變數Export變數
- oracle環境變數設定Oracle變數
- CentOS環境變數設定CentOS變數
- redhatas 設定環境變數Redhat變數
- rman 設定環境變數變數
- JAVA環境變數設定Java變數
- 設定環境變數(轉)變數
- 環境變數的設定方法(轉)~變數
- java設定-JDK環境變數的設定(轉)JavaJDK變數
- win10環境變數怎麼設定 win10設定環境變數的方法Win10變數
- 為PHP設定伺服器(Apache/Nginx)環境變數PHP伺服器ApacheNginx變數
- Linux設定環境變數Linux變數
- c#環境變數設定C#變數
- XMLBeans 環境變數設定XMLBean變數
- Linux 環境變數設定Linux變數
- java JDK環境變數設定JavaJDK變數
- 養成良好的開發習慣
- 在solaris環境下,根據java程式的不同,設定不同的環境變數Java變數
- Linux環境變數的設定和檢視方法Linux變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- rust程式中設定和訪問環境變數Rust變數
- Golang環境變數設定詳解Golang變數
- JDK1.8環境變數設定JDK變數
- Centos7環境變數設定CentOS變數
- Mac上設定Java環境變數MacJava變數
- CentOS 6.5 Oracle 環境變數設定CentOSOracle變數
- npm scripts設定環境變數方法NPM變數
- JDK 1.6環境變數如何設定?JDK變數