今天在虚拟机里面装了个Oracle,之后发现不能从主机访问,觉得是监听程序配错了,开始修改listener.ora(路径是:c:\app\xp\product\11.2.0\dbhome_1\NETWORK\ADMIN),把监听的主机由  localhost 改成虚拟机的IP。

     如下: 

 
    
  1. LISTENER = 
  2.   (DESCRIPTION_LIST = 
  3.     (DESCRIPTION = 
  4.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
  5.     ) 
  6.     (DESCRIPTION = 
  7. #原来的是(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ,也就是把localhost改成你自己机器的ip
  8.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.24.128)(PORT = 1521)) 
  9.     ) 
  10.   ) 

这里再用:sqlplus /@orcl as sysdba 连接,oracle会报:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,通过在这个文件里面加条配置就可以解决:

 

 
    
  1. SID_LIST_LISTENER = 
  2.   (SID_LIST = 
  3.     (SID_DESC = 
  4.       (SID_NAME = CLRExtProc
  5.       (ORACLE_HOME = C:\app\xp\product\11.2.0\dbhome_1) 
  6.       (PROGRAM = extproc
  7.       (ENVS = "EXTPROC_DLLS=ONLY:C:\app\xp\product\11.2.0\dbhome_1\bin\oraclr11.dll"
  8.     ) 
  9. #这是新加上去的
  10.     (SID_DESC = 
  11.       (GLOBAL_DBANAME = orcl
  12.       (SID_NAME = orcl
  13.       (ORACLE_HOME = C:\app\xp\product\11.2.0\dbhome_1) 
  14.     ) 
  15.   )