网上差了很多资料 都很片面 没有实用价值 只好自己写一份留着以后省的忘了
首先按照前面的方法安装配置好64位oracle 并且本机情况下直接可以用32位client 连接进入oracle 才涉及以下问题:
本文要解决的主要问题:其他用户使用他们自己的电脑连接你服务器上的64位oracle 经常提示监听错误
简单说明下原理 以下都说的是服务器端 不是个人电脑 !!!
oracle安装目录下一般都会有几个文件 比如我的目录下D:\app\Louis_chen\product\11.2.0\dbhome_1\NETWORK\ADMIN
有三个文件listener.ora;sqlnet.ora;tnsnames.ora 这些文件就是配置连接数据库的大家都知道,但是具体怎么用可能就不是很清楚了
listener.ora 用来监听别人电脑登录你的oracle 如果自己登录就不用配置了(但是如果你用plsql/developer登录的话就算是用别人的电脑来登陆 这是后你必须配置这个文件)
tnsnames.ora用来配置你要登录的oracle ip 端口 和Instance 这个比较简单就不说了
重点
说下我的环境我在本机的network\admin下面没有那三个ora文件,为什么呢?因为我不需要!我在本机上有oracle server也有client,由于oracle64位的不支持plsql/developer所以解决的办法就是下一个32位的oracle client 然后解压到D:\app\Louis_chen\product下,全路径就是D:\app\Louis_chen\product\instantclient_11_2,这时候再用oracle原来有的那三个ora文件复制到里面 就可以用developer登录64位oracle了,所以我用不上在sever那个network\admin下面配置那三个文件。
这时候如果别人想要用他们本地的developer登录你的64位oracle又出现问题了 还是上不去自己上的去为啥?
第一你的服务器要开启监听,然后配置下监听文件,就在刚才的product\insatantclient_11_2下面 全文如下,红字表示要改的!
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Louis_chen\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Louis_chen\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Louis_chen
这时候这个lisentner的意思就是只监听自己,所以谁都登陆不上去,包括自己电脑用developer也登陆不上去 会提示监听没有打开!
你要把这个localhost改成你64位oracle那个服务器的ip地址,这样就表示他监听的是连接他这个ip的所有session!
第二就是你要配置你自己本地电脑(本地电脑连接服务器)的tnsname.ora 全文如下 红字表示要改的!
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.28.105.149)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.28.105.149)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
hzj =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.28.105.149)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)