連接遠程資料庫ORACLE11g,錯誤百出!

来源:http://www.cnblogs.com/lxmwb/archive/2017/10/14/7668725.html
-Advertisement-
Play Games

ORA-12170: TNS:Connect timeout occurred ORA-12514: TNS: 監聽程式當前無法識別連接描述符中請求的服務 ORA-12705: Cannot access NLS data files or invalid environment s... ...


 

客戶機中PLSQL DEV訪問虛擬機中的ORACLE11g,錯誤百出!

創建時間: 2017/10/14 18:44
作者: CNSIMO
標簽: ORACLE

 

忙了一下午,只有兩個字形容:麻煩!   安裝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視窗的時候會提示你是否保存,選擇否即可恢復!   說了這麼多沒用的,我的目的還沒實現呢,怎麼在真機中訪問虛擬機內的資料庫呢? 先說明一下預先條件
  1. 我所說的話,都是假設你對電腦瞭解,並且有基礎,思維敏捷,熟悉VM虛擬機,不懂的請提問。
  2. 宿主機和虛擬機能夠互相ping通,如果不行,嘗試將連接方式改為NAT,宿主機中的VMNet8網卡ipv4設置為自動獲取IP。
  3. 宿主機中的ORACLE的各項服務都已經正常啟動。
  4. 還得知道環境變數怎麼配置,不懂的自動百度學習。
  我的機器配置如下:
  • 虛擬機:VM12.5.7版本
  • 宿主機:win10專業版1703
  • 虛擬機:server2008r2 企業版,記憶體2G
    • oracle:11g,資料庫實例名稱STD,全局資料庫名STD.CNSIMO.CN,所有密碼唯一:Admin2015,字元集:UTF8,語言:簡體中文
  連接步驟  
  1. 官網下載instant client,http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
  2. 下載基礎包和sqlplus包
  3. 一起解壓出來後,得到一個文件夾,將它複製到任意位置,例如:D:\PLSQL Developer 12\
  4. 在D:\PLSQL Developer 12\instantclient_12_2中(以下簡稱{instantclient})新建文件夾network,在network中新建文件夾admin。
  5. {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)     )   )
  1. 打開PLSQL DEV12,找到【首選項】設置
  2. 然後,在connection中安裝圖示設置,instantclient的位置。
         
  1. 很重要的一步,到虛擬機註冊表中查看NLS_LANG的值,若無此路徑則直接查找NLS_LANG,複製此鍵值。
  2.  很重要的一步,在宿主機中新建系統環境變數NLS_LANG,值與虛擬機中保持一致!
            
  1.  很重要的一步,再新建系統環境變數TNS_ADMIN,值為{instantclient}\network\admin   
            
  1. 更改環境變數PATH,添加值為{instantclient}。
  2. 然後cmd中,運行sqlplus命令連接遠程資料庫,命令為:sqlplus sys/[email protected]/STD.CNSIMO.CN as SYSDBA,下圖代表連接成功。
       
  1. 重新打開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再次嘗試。    

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以前上傳證書也遇到過這種類似的提示,按照官網配置流程經過一番折騰總能解決,然而這次折騰了大半天了。。。搞毛線啊,此事必有蹊蹺。最終發現是我Mac系統版本(剛從10.12.6升到10.13)太高了,因為10.12.6的openssl版本是0.9.8zh,而10.13的系統openssl的版本是2.x. ...
  • DatePickerDialog類的實例化需要用到回調介面,如下定義: android.app.DatePickerDialog.DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYe ...
  • 今天我將要講的是fragment間的數據是如何進行傳遞的。這裡我將舉個簡單的例子。 首先要有個MainActivity,它托管了MainFragment,而MainFragment又托管了DatePickerFragment。其間用到了簡單的模型Crime,它只有Date類型的mDate一個屬性。例 ...
  • 傳統font大小適配可能會根據屏幕寬度與iphone5或iphone6寬度的一個比例來適配。但如果有這樣一個需求,在顯示@2x圖片的手機上顯示一種字體,在顯示@3x圖片的手機上顯示另一個固定大小的字體。 所以這裡的重點是要區分手機屏幕顯示圖片是@2x型還是@3x型的。 CGFloat scale = ...
  • mysql中用於表示時間的三種類型date, datetime, timestamp (如果算上int的話,四種) 比較容易混淆,下麵就比較一下這三種類型的異同 相同點 都可以用於表示時間都呈字元串顯示 不同點 1.顧名思義,date只表示'YYYY-MM-DD'形式的日期,datetime表示'Y ...
  • 一、視圖 什麼是視圖【View】 (1)視圖是一種虛表 (2)視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表(3)向視圖提供數據內容的語句為 SELECT 語句,可以將視圖理解為存儲起來的 SELECT 語句(4)視圖向用戶提供基表數據的另一種表現形式(5)視圖沒有存儲真正的數據,真正的數 ...
  • 一、事務 回顧什麼是事務?一個不可分割的子操作形成一個整體,該整體要麼全部執行成功,要麼全部執行失敗。例如:轉帳回顧為什麼要用事務?如果不用事務的話,為轉帳為例,可能出現一個用戶錢增加了,另一個用戶錢不變回顧編程中,事務可用於哪一層?事務放在業務層回顧jdbc編程中,如何使用事務?connectio ...
  • 昨天整理了關於Oracle的查詢的相關知識,今天將之前的學習筆記整理了一下,準備介紹一下關於Oracle增刪改的相關知識。之後博主也會將之前學習的一些學習的基礎的筆記作為博文發出來,希望讀者能夠多多指正,畢竟之前的學習肯定存在了些許的不足之處。整理筆記已經按照分類分類完成了。 一、回顧SQL92/9 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...