1. 程式人生 > >本地連線遠端Oracle(oracle虛擬機器)一般步驟以及碰到的問題

本地連線遠端Oracle(oracle虛擬機器)一般步驟以及碰到的問題

一般步驟:
1. 需要安裝Oracle client的客戶端
http://blog.csdn.net/lanchengxiaoxiao/article/details/39251947
(上述博文中包含了配置tnsnames.ora的操作)


2. 配置本機Oracle client的環境變數


變數名 ORACLE_HOME
變數值E:\Oracle\product\11.2.0\client_1


變數名 TNS_ADMIN
變數值 E:\Oracle\product\11.2.0\client_1\network\admin


變數名 NLS_LANG
變數值 SIMPLIFIED CHINESE_CHINA.ZHS16GBK


碰到的問題:

用Net Configuration Assistant測試連線,報錯為TNS-12541: TNS: 無監聽程式:
有可能是tnsnames.ora沒有配置正確,
本地例項名 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 遠端資料庫IP地址)(PORT = 遠端伺服器埠號))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 遠端資料庫服務名)
    )
  )
其中中文部分是需要修改的部分,除第一個“本地例項名”外,其他需要跟遠端資料庫管理員諮詢,本地例項名就是方便自己識別資料庫的一個名字,可以自定義。


我的設定:
ROAD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = road)
    )
  )
設定之後發現還是沒用,就在linux伺服器端(虛擬機器圖形模式)輸入命令netmgr來檢視配置伺服器的listener locations和database service。發現配置中的的ip和HOST不一致。改完配置之後在本地cmd中輸入 tnsping road,仍然報錯為TNS-12541: TNS:no listener。之後發現是oracle虛擬機器中監聽程式沒有啟動,使用的命令為
lsnrctl start --啟動

lsnrctl stop  --停止

lsnrctl status --檢視狀態 

(注:必須在oracle使用者下執行)

啟動成功之後顯示"The command completed successfully"。用tnsping road測試也顯示ping通了。之後Net Configuration Assistant測試連線,發現錯誤變成了ORA-27101 Shared memory realm does not exist,查閱之後發現是沒有開啟oracle服務,解決辦法是直接開啟oracle相關資料庫服務或按照下面的步驟操作:

lsnrctl start
sqlplus '/as sysdba'
sql> startup
emctl start dbconsole
isqlplusctl start
http://blog.chinaunix.net/uid-21795529-id-1815088.html

按照上述博文做到sql> startup這步就發現測試連線成功了,後兩步沒做。


監聽命令詳解:

http://blog.csdn.net/haiross/article/details/13629959  

PL SQL設定:
個人下的是綠色版,tools-preferences配置為:
注意:登陸PL SQL前需要在遠端伺服器(虛擬機器)上建立登陸的使用者和表空間,然後用新建的使用者登陸。
http://www.cnblogs.com/furenjian/articles/2889787.html