安裝oracle的帖子比較多.而且一般傻瓜式安裝就好了.就不詳細記錄了.
安裝帖子:
https://blog.csdn.net/m0_38025207/article/details/81010593
大致三步.
1.點擊setup安裝oracle服務.
2.點擊net manager assistant 配置監聽.(不配置就無法遠程連接)
3.創建oracle實例.(這裏有一步指定編碼方式比較重要,建議選擇默認GBK,這步也可以在安裝的時候直接創建)
直接說一下安裝時出現的疑惑.
1.需要配置listener.ora、sqlnet.ora和tnsnames.ora嗎
https://www.jellythink.com/archives/313
到這,基本服務端就結束了.
得出的結論是.sqlnet.ora一般不會改,可以配置一些.訪問數據庫的順序
tnsnames.ora也是可有可無的.tnsnames.ora配置一些連接地址的信息.這樣訪問數據庫的時候就可以直接同過這個名字訪問了.不需要輸入ip端口
listener.ora是必須的,用來監聽本機,是否有遠程連接.
然後是遠程連接的客戶端.因爲一遍遠程連接客戶端比較重.基本都是用plsql和instantclient進行代替
各種帖子一般都會讓配置以下兩個環境變量
1.TNS_ADMIN 指向 instantclient下面的tnsnames.ora,文件.
經過看上面的帖子,我們明白這個步驟不是必須的.一般如果我們是直接輸入ip地址和端口號
進行訪問.那麼這裏是不用配置的,當然不配置就無法使用上面截圖的別名訪問.
2.NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
推薦這篇帖子
https://blog.csdn.net/pan_tian/article/details/7745717
nls_lang建議配置 和安裝時一樣NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
那麼我還是有疑問
1.NLS_LANG 的配置是服務器端配置一個. 遠程客戶端連接一個嗎,
再加上數據庫本身的編碼方式.應該是有三個值.
三個值是否應該一樣.
個人理解.nls_lang配置的作用是.他來控制oracle中數據如何在client中渲染展示.數據庫本身在安裝的時候有選擇編碼格式.配置nls_lang應該和數據庫中一樣.但服務器端一般是不需要進行配置的.因爲一般都是遠程連接.服務器端配置.試了下會對sqlplus生效,而導致亂碼.但客戶端和服務端的要一樣(圖上是服務端配置的)
2.查詢數據庫編碼sql,這三個sql有什麼區別.爲什麼有時會顯示不一樣?這個問題還以有疑惑
1.select * from nls_database_parameters;
nls_database_parameters來源於props$,是表示數據庫的字符集。在創建數據庫的時候設定的,一般不會改變.
2.SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET' ;
v$nls_parameters 顯示當前會話值 ,他受客戶端nls 的控制。和userenv比較類似;
3.select userenv('language') from dual;
返回當前用戶環境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
總的來說nls_lang是爲了解決顯示亂碼的,不影響數據庫本身編碼.數據庫是什麼.客戶端就應該配置什麼.上述解釋還是有很多不明白.大概就先這麼理解吧,只要數據庫編碼相同應該就不影響數據庫移植,nls_lang呢.只要client查詢不亂碼就好了.
關於國家字符集.數據庫字符集解釋
https://blog.csdn.net/clong2015/article/details/54963053