Kimi's NutShell

          我荒廢的今日,正是昨日殞身之人祈求的明日

          BlogJava 新隨筆 管理
            141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks
          近段時間很多網友提出監聽配置相關問題,客戶終端(Client)無法連接服務器端(Server)。本文現對監聽配置作一簡單介紹,并提出一些客戶終端無法連接服務器端的解決思路,愿對廣大網友與讀者有一些幫助。
          ?
          一、 監聽器(LISTENER)
            監聽器是Oracle基于服務器端的一種網絡服務,主要用于監聽客戶端向數據庫服務器端提出的連接請求。既然是基于服務器端的服務,那么它也只存在于數據庫服務器端,進行監聽器的設置也是在數據庫服務器端完成的。
          ?
          二、 本地服務名(Tnsname)
            Oracle 客戶端與服務器端的連接是通過客戶端發出連接請求,由服務器端監聽器對客戶端連接請求進行合法檢查,如果連接請求有效,則進行連接,否則拒絕該連接。
          本地服務名是Oracle客戶端網絡配置的一種,另外還有Oracle名字服務器(Oracle Names Server)等。Oracle常用的客戶端配置就是采用的本地服務名,本文中介紹的也主要是基于本地服務名的配置。
          ?
          三、 Oracle 網絡連接配置方法
            配 置Oracle服務器端與客戶端都可以在其自帶的圖形化Oracle網絡管理器(Oracle Net Manager)里完成(強烈建議在這個圖形化的工具下完成Oracle服務端或客戶端的配置)。在Windows下,點擊“開始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”啟動Oracle網絡管理器工具,在Linux/Unix下,利用netmgr命令來啟動圖形化Oracle網絡管理器,如:
          $ netmgr
          Windows 下啟動Net Manager圖形窗口如下圖示:
          ?
          ????????????????????????????????????????????????????????????? 圖(一)
          ?
          1、? Oracle 監聽器配置(LISTENER)
            如 圖(一)示,選中樹形目錄中監聽程序項,再點擊左上側“+”按鈕添加監聽程序,點擊監聽程序目錄,默認新加的監聽器名稱是LISTENER(該名稱也可以 由任意合法字符命名)。選中該名稱,選中窗口右側欄下拉選項中的“監聽位置”,點擊添加地址按鈕。在出現的網絡地址欄的協議下拉選項中選中 “TCP/IP”,主機文本框中輸入主機名稱或IP地址(如果主機即用作服務端也作為客戶端,輸入兩項之一均有效;如果主機作為服務端并需要通過網絡連 接,建議輸入IP地址),端口文本框中輸入數字端口,默認是1521,也可以自定義任意有效數字端口。配置好的監聽位置如下圖示:
          ?
          ??????????????????????????????????????????????????????????????? 圖(二)
          ?
            選 中窗口右側欄下拉選項中的“數據庫服務”,點擊添加數據庫按鈕。在出現的數據庫欄中輸入全局數據庫名,如myoracle。注意這里的全局數據庫名與數據 庫SID有所區別,全局數據庫名實際通過域名來控制在同一網段內數據庫全局命名的唯一性,就如Windows下的域名控制器,如這里可以輸入 myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myoracle。完整的數據庫服務配置如下圖示:

          ????????? 圖(三)
          ?
            保 存以上配置,默認即可在Oracle安裝目錄下找到監聽配置文件 (Windows下如D:oracleora92networkadminlistener.ora,Linux/Unix下$ ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服務端監聽器配置已經完成。
          ?
          2、?本地服務名配置(Tnsnames)
            本 地服務名是基于Oracle客戶端的網絡配置,所以,如果客戶端需要連接數據庫服務器進行操作,則需要配置該客戶端,其依附對象可以是任意一臺欲連接數據 庫服務器進行操作的pc機,也可以是數據庫服務器自身。如前面所介紹,可以利用Oracle自帶的圖形化管理工具Net Manager來完成Oracle客戶端的配置。選中如圖(一)中的服務命名,再點擊左上側“+”按鈕,彈出如下圖示對話框:
          ?
          ????????????????????? 圖(四)
          ?
            輸入Net服務名,如myoracle,點擊下一步,進入下圖示對話框:
          ?
          ????????????????圖(五)
          ?
          ?選中TCP/IP(Internet協議),點擊下一步,如下圖示:
          ????????????????圖(六)
          ?
            輸入主機名與端口號。注意這里的主機名與端口號必須與數據庫服務器端監聽器配置的主機名和端口號相同。點擊下一步,如下圖示:
          ?
          ???????????????????? 圖(七)
          ?
            選 中(Oracle8i或更高版本)服務名,輸入服務名。這里的服務名實際上就是數據庫服務器端監聽器配置中的全局數據庫名,前者與后者必須相同。連接類型 通常選專用服務器,這要視數據庫服務器的配置而定,如果配置的共享數據庫服務器,這里的連接類型就要選共享服務器,否則建議選專用服務器(關于專用服務器 的介紹請參閱相關文檔)。配置好后點擊下一步,如下圖示:
          ?
          ????????????????圖(八)
          ?
          ? 如 果數據庫服務器端相關服務啟動了,可以點擊測試按鈕進行連接測試。Oracle默認是通過scott/tiger用戶進行測試連接,由于scott用戶是 Oracle自帶的示例用戶,對于正式的業務數據庫或專業測試數據庫可能沒有配置這個用戶,所以需要更改成有效的用戶登錄才可能測試成功。如果這里測試連 接不成功,也不要緊,先點完成按鈕結束配置。
            回 到Oracle網絡管理器(Oracle Net Manager)主窗口,保存配置,默認即可在Oracle安裝目錄下找到本地服務名配置文件 (Windows下如D:oracleora92networkadmintnsnames.ora,Linux/Unix下$ ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務名如下圖示:

          ????????????????? 圖(九)
          ?
            樹形目錄下的服務命名可以通過編輯菜單里的重命名菜單更改成任意合法字符組成的服務名稱,注意服務名稱前不能有空格字符,否則可能無法連接數據庫服務器。
          ?
          3、?連接數據庫服務器
          (1)?? 啟動服務器端監聽器與數據庫服務
          Linux/Unix下,啟動監聽器:
          $ lsnrctl start????????????????????
          關閉監聽器:
          $ lsnrctl stop
          查看監聽狀態:
          $ lsnrctl status
          啟動數據庫:
          $ sqlplus /nolog
          SQL>conn sys@myoracle as sysdba?? --這里的myoracle是前面配置的客戶端本地服務名
          SQL>conn / as sysdba
          SQL>startup
          Windows下,啟動監聽器:
          C:lsnrctl start
          啟動Oracle實例服務:
          C:oradim ?a class="none" title="cs" rel="external">cstartup –sid myoracle??
          關閉Oracle實例服務:
          C:oradim –shutdown –sid myoracle
            以上服務必須同時啟動,客戶端才能連接數據庫。由于默認配置的監聽器名稱是Listener,上述命令可以正常啟動監聽器,如果監聽器名稱是其它名稱,如aListener,則需要用下列方式才能啟動:
          Linux/Unix下:
          $ lsnrctl start aListener
          Windows下:
          C:lsnrctl start aListener
          ?
          (2)?? 測試連接數據庫服務器
            測試的方法多種多樣,可以在上面配置本地服務名時進行測試,也可以是第三方客戶端工具,如PL/SQL Developer,最方便的是用Oracle自帶的sqlplus工具,以下利用sqlplus進行測試:
          C:sqlplus /nolog
          SQL>conn zgh@myoracle
          已連接。
          ?
          ?
          四、客戶端連接服務器端常見問題排除方法
            要排除客戶端與服務器端的連接問題,首先檢查客戶端配置是否正確(客戶端配置必須與數據庫服務器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的連接問題:
          1、?ORA-12541: TNS: 沒有監聽器
          顯而易見,服務器端的監聽器沒有啟動,另外檢查客戶端IP地址或端口填寫是否正確。啟動監聽器:
          $ lsnrctl start
          C:lsnrctl start
          2、?ORA-12500: TNS: 監聽程序無法啟動專用服務器進程
          對于Windows而言,沒有啟動Oracle實例服務。啟動實例服務:
          C:oradim –startup -sid myoracle
          3、?ORA-12535: TNS: 操作超時
            出現這個問題的原因很多,但主要跟網絡有關。解決這個問題,首先檢查客戶端與服務端的網絡是否暢通,如果網絡連通,則檢查兩端的防火墻是否阻擋了連接。
          4、?ORA-12154: TNS: 無法處理服務名
            檢 查輸入的服務名與配置的服務名是否一致。另外注意生成的本地服務名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每項服務的首 行服務名稱前不能有空格。
          5、?ORA-12514: TNS: 監聽進程不能解析在連接描述符中給出的 SERVICE_NAME
            打開Net Manager,選中服務名稱,檢查服務標識欄里的服務名輸入是否正確。該服務名必須與服務器端監聽器配置的全局數據庫名一致。
          6、?Windows下啟動監聽服務提示找不到路徑
            用 命令或在服務窗口中啟動監聽提示找不到路徑,或監聽服務啟動異常。打開注冊表,進入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener項,查看ImagePath字符串項是否存在,如果沒 有,設定值為D:oracleora92BINTNSLSNR,不同的安裝路徑設定值做相應的更改。這種方法同樣適用于Oracle實例服務,同 上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE項,查看ImagePath字符串項是否存在,如果沒有,則新建,設定值為d:oracleora92 binORACLE.EXE MYORACLE。
          以上是Oracle客戶端連接服務器端常見的一些問題,當然不能囊括所有的連接異常。解決問題的關鍵在于方法與思路,而不是每種問題都有固定的答案。
          posted on 2007-11-15 09:54 Kimi 閱讀(1102) 評論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 西藏| 剑阁县| 库伦旗| 泾源县| 伊通| 嘉义市| 扎鲁特旗| 乐山市| 文登市| 新宁县| 柘荣县| 宿迁市| 侯马市| 右玉县| 会泽县| 石城县| 凤山市| 星子县| 乐都县| 绥棱县| 灌阳县| 沙河市| 云和县| 丽江市| 金平| 呼和浩特市| 万源市| 历史| 栾川县| 米易县| 自治县| 周至县| 洱源县| 渭南市| 岚皋县| 阳江市| 诏安县| 道真| 惠水县| 兴业县| 鄢陵县|