忙了一下午,只有兩個字形容:麻煩!
安裝ORACLE1g
首先,我已經提早在虛擬機上配置了windows2008+oracle11g,爲何用server2008呢?我沒有別的,win10作虛擬機以爲不太好,win7鏡像還得下載,你懂的。 而後就是oracle11g是去某電腦上拷過來的,我是一個十分愛惜流量的人,嘿嘿。
咱們老師爲了讓咱們更清楚區分數據庫軟件安裝和數據庫配置,因此在安裝oracle11g的時候選擇的是」只安裝數據庫軟件「(記得是第二個選項),而後安裝的時候字符集都設置的UTF8,其餘的配置基本上都是保持的默認。
好了,安裝的事情不細說,通常狀況下只要是主機沒問題,檢測條件經過,安裝都是不成問題的,下面就開始了配置數據庫。
首先使用
DCA(在oRACLE的開始菜單文件夾裏面,縮寫哦
),打開後會顯示幾個選項,選擇【建立數據庫】,而後下一步,以後的幾個步驟一直到建立數據庫完畢,並無出任何錯誤,因此就很少說了,惟一出現的錯誤可能就是提示相似「沒有監聽,沒法繼續」的對話框,因此就去NCA(和DCA同級目錄)添加監聽,你只需一直下一步就行,默認的監聽端口是1521,而後回到DCA就可以繼續下一步了,一直到最後,須要關注的就是,最後的一個頁面有web管理頁面的URL,此端口號都是https://hostname:port/em這個形式的,hostname就是本機的ip地址,port就是端口號,個人端口號是1158,有的可能不是。
例如個人web管理頁面:https://server2008:1158/em,個人數據庫監聽端口是1521。
管理頁面以下:
若是剛安裝完,紅框中的狀態不對,那麼考慮重裝或者重啓ORACLE各項服務或者重啓ORACLE服務器。
重啓ORACLE服務器的操做以下:
打開cmd輸入如下命令:
sqlplus / as sysdba
shutdown immediate
startup
而後說ORACLE這幾個配置工具的功能:
- DCA:管理數據庫(建立、刪除等等)
- NCA:配置數據庫網絡服務(監聽、服務名等)
- Net Manager:網絡綜合管理工具(監聽、服務名等具體信息查看更改等)
還有一個工具sqlplus也很經常使用,使用它訪問ORACLE數據庫地操做以下(cmd中):
若是是普通用戶
sqlplus username/password@hostname/tnsname
若是是sysdba用戶,例如sys
sqlplus sys/password@hostname/tnsname as sysdba
後面用到地時候你可能會更明白一些。
而後還有三個很重要的文件,其中兩個須要知道一下:
注意路徑哦!
格式:{database_base}\network\admin。
在Net Manager或者NCA中更改監聽或者服務名的信息後可能會映射到這兩個文件,例如我在Net Manager中更改了LISTEN的地址,在listener.ora文件中是有體現的,能夠打開看看,可是最好不要手動地去更改裏面地內容,由於一不當心感受沒錯就可能被人坑了。想要更改,仍是在Net Manager中更改比較合適,例如如今我在Net Manager中將LISTEN地監聽端口由1521變成了1522,打開listener.ora文件能夠看到相應的地方也變了。
Tip:若是你在你不知道什麼狀況的狀況下,你使用Net Manager作了一些操做,並且你也忘了原來是什麼了,沒關係,關閉Net Manager窗口的時候會提示你是否保存,選擇否便可恢復!
說了這麼多沒用的,個人目的還沒實現呢,怎麼在真機中訪問虛擬機內的數據庫呢?
先說明一下
預先條件:
- 我所說的話,都是假設你對計算機瞭解,而且有基礎,思惟敏捷,熟悉VM虛擬機,不懂的請提問。
- 宿主機和虛擬機可以互相ping通,若是不行,嘗試將鏈接方式改成NAT,宿主機中的VMNet8網卡ipv4設置爲自動獲取IP。
- 宿主機中的ORACLE的各項服務都已經正常啓動。
- 還得知道環境變量怎麼配置,不懂的自動百度學習。
個人機器配置以下:
- 虛擬機:VM12.5.7版本
- 宿主機:win10專業版1703
- 虛擬機:server2008r2 企業版,內存2G
- oracle:11g,數據庫實例名稱STD,全局數據庫名STD.CNSIMO.CN,全部密碼惟一:Admin2015,字符集:UTF8,語言:簡體中文
鏈接步驟
- 官網下載instant client,http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。
- 下載基礎包和sqlplus包
![](http://static.javashuo.com/static/loading.gif)
- 一塊兒解壓出來後,獲得一個文件夾
,將它複製到任意位置,例如:D:\PLSQL Developer 12\
- 在D:\PLSQL Developer 12\instantclient_12_2中(如下簡稱{instantclient})新建文件夾network,在network中新建文件夾admin。
- 到{instantclient}\network\admin中新建記事本文件,下列代碼複製進去並保存爲utf-8格式,名稱改成tnsnames.ora【後綴名txt->ora】,注意格式不能變(少一個多一個空格都不行)。
tip:請將STD.CNSIMO.CN改成本身的全局數據庫名,HOST和PORT也改成本身的,首行的STD能夠隨便寫。
STD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.138)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = STD.CNSIMO.CN)
)
)
- 打開PLSQL DEV12,找到【首選項】設置
![](http://static.javashuo.com/static/loading.gif)
- 而後,在connection中安裝圖示設置,instantclient的位置。
- 很重要的一步,到虛擬機註冊表中查看NLS_LANG的值,若無此路徑則直接查找NLS_LANG,複製此鍵值。
![](http://static.javashuo.com/static/loading.gif)
- 很重要的一步,在宿主機中新建系統環境變量NLS_LANG,值與虛擬機中保持一致!
- 很重要的一步,再新建系統環境變量TNS_ADMIN,值爲{instantclient}\network\admin
- 更改環境變量PATH,添加值爲{instantclient}。
- 而後cmd中,運行sqlplus命令鏈接遠程數據庫,命令爲:sqlplus sys/Admin2015@192.168.111.138/STD.CNSIMO.CN as SYSDBA,下圖表明鏈接成功。
- 從新打開PLSQL DEV,嘗試鏈接,填寫用戶名密碼,database下拉框中若是沒有出現以前在tnsnames.ora首行寫的名字STD,就手動輸入STD,並做爲SYSDBA鏈接。成功的話,會進入主界面,不然提示。
解決問題
好了,鏈接的常規步驟已經看完了,可是事實上好多時候並不能真正的如願以償,問題碰到了一堆,常見的問題描述可能以下:
- ORA-12170: TNS:Connect timeout occurred
- ORA-12514: TNS: 監聽程序當前沒法識別鏈接描述符中請求的服務
- ORA-12705: Cannot access NLS data files or invalid environment specified
先解決
第一個問題,你可嘗試ping一下你的遠程主機,可能ping不通,因此須要你更改一下虛擬機和主機之間的網絡鏈接方式;
而後
第二個問題,致使這個問題的根本緣由是在遠程主機上該服務名並無被監聽程序監聽,例如我經過sqlplus鏈接的時候將STD.CNSIMO.CN改成STD或者其它隨便一個,都會報這個錯誤。解決方法以下:
打開Net Manager,選擇服務命名,點擊加號添加服務,列表中顯示的std僅僅具備本地意義,重要的是右邊的服務名,設置成全局數據庫名,鏈接類型選擇 共享服務器。
而後關閉Net Manager並保存配置。
再次嘗試鏈接,若是仍是鏈接不上,嘗試重啓ORACLE數據庫!
Tip:網上可能查到的都是更改虛擬機中tnsnames.ora和listener.ora這兩個文件,擅自更改後可能致使的問題是數據庫鏈接不上、NetManager和NCA中部分功能無反應的問題。由於oracle對這兩個文件的內容格式要求的太嚴格了。紅框的首部不能有空格,藍框的首部必須有空格!
至於
最後一個問題,請檢查環境變量中的NLS_LANG的值是否和遠程主機註冊表中的值相同,切記不要手敲!若是仍是這個問題,多是你剛配置完環境變量,cmd的命令框仍是以前開的,請重開一個cmd再次嘗試。