linux下静态监听配置问题

时间:2021-09-07 08:34:30
配置成静态监听,在不启动实例的情况下,为什么远程无法登录呢?
listener.ora配置如下: 
LISTENER =
  (ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))
 SID_LIST_LISTENER=
   (SID_LIST=
(SID_DESC=
          (GLOBAL_DBNAME=mydb)
          (SID_NAME=mydb)
          (ORACLE_HOME=/oracle/product/10.2.0/db_1)
         (PRESPAWN_MAX=20)
  (PRESPAWN_LIST=
           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
         )
        )
       )
在另一台机子上登录:
SQL> conn sys/pwd@192.168.40.133:1521/mydb as sysdba
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

21 个解决方案

#1


能够直接ping 通192.168.40.133吗 ?

#2



    可以通
Pinging 192.168.40.133 with 32 bytes of data:

Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64
Reply from 192.168.40.133: bytes=32 time<1ms TTL=64
Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64
Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64

Ping statistics for 192.168.40.133:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = -6ms, Average = 1073741819ms
连接没有问题的,你看报的错:
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
这说明能连接到监听。而且我只要报实例启动,就可以正常连接了。

#3


试试这个帖子。
http://www.cnblogs.com/xufung/archive/2008/08/05/693731.html

#4


按照这些参数试试:


静态注册实例:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u0/oracle/product)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME =/u0/oracle/product)
      (SID_NAME = orcl)
    )  )

#5


试了,还是不行,你们的这样配置就可以了吗?
不能用静态监听真是太麻烦了,每次要重启数据库的话,还得到服务器去操作。

#6


修改成
LISTENER =
  (ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

SID_LIST_LISTENER=
  (SID_LIST=
     (SID_DESC=
          (GLOBAL_DBNAME=mydb)
          (SID_NAME=mydb)
          (ORACLE_HOME=/oracle/product/10.2.0/db_1)
      )
   ) 


试试。

然后在服务器端 lsnrctl stop  
lsnrctl start.

我测试过可以的。

#7


这就怪了,你是不是连同数据库实例启动了,我是说在不启动实例的情况下,不能远程登录,启动了实例也是可以的。
我再试试吧。

#8


呵呵,测试还是要重启服务的。

#9


我以前在windows下配置都是没有问题的,这次数据库改在linux下就遇到麻烦了。

#10


或者试试不重启数据库,而运行ALTER SYSTEM REGISTER,看看会怎么样?

#11


我修改listener.ora之后,每次都是重启监听了。

#12


我测试过了,需要重启oracle 服务,才能登陆的。

#13


不是不重启数据库,是数据库实例根本就不启动。
配置静态监听,不就是要在数据库实例不启动的状态下连接的吗?
这样可以在远程关闭和启动数据库实例,而不用每次都到服务器上去操作。

#14


配置静态监听,不就是要在数据库实例不启动的状态下连接的吗? 

不可能吧。数据库实例都没有启动怎么可能连接呢?

#15


是呀,静态监听不就是提供这个功能的吗?
原来oracle装在windows下都是这样操作的,我都是在我的电脑上远程登录远程oracle,然后执行关闭,启动的操作的。
>sql /nolog
sql> conn sys/pwd@192.168.40.133:1521/mydb as sysdba
sql> shutdown immediate
sql> startup
这样都是没问题的。可以把oracle关闭再启动。

#16


是sqlplus /nolog

#17


引用 15 楼 yataoding 的回复:
是呀,静态监听不就是提供这个功能的吗?
原来oracle装在windows下都是这样操作的,我都是在我的电脑上远程登录远程oracle,然后执行关闭,启动的操作的。
>sql /nolog
sql> conn sys/pwd@192.168.40.133:1521/mydb as sysdba
sql> shutdown immediate
sql> startup
这样都是没问题的。可以把oracle关闭再启动。


配置为动态监听也可以是可以的呀。
监听和远程启动关闭数据库没有关系。

#18


如果真是这样的话,那我就要重新学习这部分的东西了。
难道我以前都错了?
在windows下刚装上oracle的时候默认是动态监听,那时我在自己电脑上把oracle停掉,就启动不了了,得跑到服务器那去重新启动数据库,
后来配了个静态的,才解决了问题。

#19


如何配置监听,可以远程启动关闭数据库?
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

#20


引用 19 楼 yataoding 的回复:
如何配置监听,可以远程启动关闭数据库? 
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

只需静态注册你的实例即可。

#21


引用 20 楼 vc555 的回复:
引用 19 楼 yataoding 的回复:
如何配置监听,可以远程启动关闭数据库?
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

只需静态注册你的实例即可。

能说详细点吗?
我在windows下注册一个静态监听就可以了,可是在linux下怎么也弄不出来。
我按照上面帖子的配置,问题出在哪里,能帮忙看看吗?

#1


能够直接ping 通192.168.40.133吗 ?

#2



    可以通
Pinging 192.168.40.133 with 32 bytes of data:

Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64
Reply from 192.168.40.133: bytes=32 time<1ms TTL=64
Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64
Reply from 192.168.40.133: bytes=32 time=-6ms TTL=64

Ping statistics for 192.168.40.133:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = -6ms, Average = 1073741819ms
连接没有问题的,你看报的错:
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
这说明能连接到监听。而且我只要报实例启动,就可以正常连接了。

#3


试试这个帖子。
http://www.cnblogs.com/xufung/archive/2008/08/05/693731.html

#4


按照这些参数试试:


静态注册实例:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u0/oracle/product)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME =/u0/oracle/product)
      (SID_NAME = orcl)
    )  )

#5


试了,还是不行,你们的这样配置就可以了吗?
不能用静态监听真是太麻烦了,每次要重启数据库的话,还得到服务器去操作。

#6


修改成
LISTENER =
  (ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

SID_LIST_LISTENER=
  (SID_LIST=
     (SID_DESC=
          (GLOBAL_DBNAME=mydb)
          (SID_NAME=mydb)
          (ORACLE_HOME=/oracle/product/10.2.0/db_1)
      )
   ) 


试试。

然后在服务器端 lsnrctl stop  
lsnrctl start.

我测试过可以的。

#7


这就怪了,你是不是连同数据库实例启动了,我是说在不启动实例的情况下,不能远程登录,启动了实例也是可以的。
我再试试吧。

#8


呵呵,测试还是要重启服务的。

#9


我以前在windows下配置都是没有问题的,这次数据库改在linux下就遇到麻烦了。

#10


或者试试不重启数据库,而运行ALTER SYSTEM REGISTER,看看会怎么样?

#11


我修改listener.ora之后,每次都是重启监听了。

#12


我测试过了,需要重启oracle 服务,才能登陆的。

#13


不是不重启数据库,是数据库实例根本就不启动。
配置静态监听,不就是要在数据库实例不启动的状态下连接的吗?
这样可以在远程关闭和启动数据库实例,而不用每次都到服务器上去操作。

#14


配置静态监听,不就是要在数据库实例不启动的状态下连接的吗? 

不可能吧。数据库实例都没有启动怎么可能连接呢?

#15


是呀,静态监听不就是提供这个功能的吗?
原来oracle装在windows下都是这样操作的,我都是在我的电脑上远程登录远程oracle,然后执行关闭,启动的操作的。
>sql /nolog
sql> conn sys/pwd@192.168.40.133:1521/mydb as sysdba
sql> shutdown immediate
sql> startup
这样都是没问题的。可以把oracle关闭再启动。

#16


是sqlplus /nolog

#17


引用 15 楼 yataoding 的回复:
是呀,静态监听不就是提供这个功能的吗?
原来oracle装在windows下都是这样操作的,我都是在我的电脑上远程登录远程oracle,然后执行关闭,启动的操作的。
>sql /nolog
sql> conn sys/pwd@192.168.40.133:1521/mydb as sysdba
sql> shutdown immediate
sql> startup
这样都是没问题的。可以把oracle关闭再启动。


配置为动态监听也可以是可以的呀。
监听和远程启动关闭数据库没有关系。

#18


如果真是这样的话,那我就要重新学习这部分的东西了。
难道我以前都错了?
在windows下刚装上oracle的时候默认是动态监听,那时我在自己电脑上把oracle停掉,就启动不了了,得跑到服务器那去重新启动数据库,
后来配了个静态的,才解决了问题。

#19


如何配置监听,可以远程启动关闭数据库?
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

#20


引用 19 楼 yataoding 的回复:
如何配置监听,可以远程启动关闭数据库? 
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

只需静态注册你的实例即可。

#21


引用 20 楼 vc555 的回复:
引用 19 楼 yataoding 的回复:
如何配置监听,可以远程启动关闭数据库?
简单一句话:服务器与开发室是隔开的,我不能每次重启数据库都要到放服务器的那个屋,太麻烦了。

只需静态注册你的实例即可。

能说详细点吗?
我在windows下注册一个静态监听就可以了,可是在linux下怎么也弄不出来。
我按照上面帖子的配置,问题出在哪里,能帮忙看看吗?