熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

分析oracle登錄失敗的原因

2013-11-13 22:22:14  來源: Oracle 

  初始化首次測試請使用用戶名: scott 口令: tiger
    正在嘗試使用以下用戶 ID 連接:scott
    測試沒有成功
ORA: TNS:no listener 

  登錄到數據庫:orcl

  您的用戶名和/或口令無效

  解決方法

  看看注冊表中的HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Services\OracleOraHomeTNSListener鍵值是否正確(對應TNSLSNRexe)

  手工啟動呢?  
   
      c:\lsnrctl   start  
   
  然後在看狀態  
      lsnrctl>status

  從Oracle的錯誤提示來看是說TNS:no listener 估計是某種服務沒有啟動打開windows管理工具>服務一看有一個OracleOraHomeTNSListener這樣的服務和錯誤信息題是一致基本就可以肯定是這個服務所引發的問題再一看該服務沒有啟動遂手工啟動刷新後一看該服務居然馬上就自動關閉了重試N次結果一樣到Google搜索看看沒想到這還是一個普遍的問題有一個人提出把安裝目錄下的listenerora打開察看d:\oracle\ora\network\admin\listenerora
打開該配置文件後發現如下一段配置信息
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = local)(PORT = ))
      )
    )
  )
 
當看到這一行HOST=local 的時候問題解決了原來是由於幾天裝好Oracle後又改了Windows的計算機名而這個配置文件中記錄的監聽主機名還是原來的名稱這也就怪不得OracleOraHomeTNSListener服務無法啟動了馬上修改為現在的計算機名再次啟動OracleOraHomeTNSListener服務成功PL/SQL Developer連接Oracle數據庫成功不能登陸故障排除

總結Oracle比較強調手動功能調整將一些配置信息放置在配置文件中不像SqlServer一樣幾乎把任何信息都放在注冊表中當然了這也符合Oracle作為一個跨平台數據庫的精神但對初學者來說確有一定難度不像SqlServer那麼傻瓜再解決這個問題時差點又重裝一次Oracle看來遇到問題多Google多分析還是屢試不爽的

  tnsnamesora中的內容

  #   TNSNAMESORA   Network   Configuration   File:   E:\oracle\ora\network\admin\tnsnamesora  
  #   Generated   by   Oracle   configuration   tools  
   
  INST_HTTPSOFTDEPTCOM   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   tt)(PORT   =   ))  
          )  
          (CONNECT_DATA   =  
              (SERVER   =   SHARED)  
              (SERVICE_NAME   =   MODOSE)  
              (PRESENTATION   =  //HRService)  
          )  
      )  
   
  MYGODSOFTDEPTCOM   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   tt)(PORT   =   ))  
          )  
          (CONNECT_DATA   =  
              (SERVICE_NAME   =   mygod)  
          )  
      )  
   
  myDBSOFTDEPTCOM   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   tt)(PORT   =   ))  
          )  
          (CONNECT_DATA   =  
              (SERVER   =   DEDICATED)  
              (SERVICE_NAME   =   myDB)  
          )  
      )  
   
  EXTPROC_CONNECTION_DATASOFTDEPTCOM   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   IPC)(KEY   =   EXTPROC))  
          )  
          (CONNECT_DATA   =  
              (SID   =   PLSExtProc)  
              (PRESENTATION   =   RO)  
          )  
      )  
   
  myDB是安裝時默認創建的mygod時候來創建的前者可以連接後者不行  

  MYGODSOFTDEPTCOM   =  
      (DESCRIPTION   =  
          (ADDRESS_LIST   =  
              (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   tt)(PORT   =   ))  
          )  
          (CONNECT_DATA   =  
              (SERVICE_NAME   =   mydb)  
          )  
      )



From:http://tw.wingwit.com/Article/program/Oracle/201311/18899.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.