默认的9I数据库监听是可以远程关闭的,只要能TNSPING通,如下:
-bash-3.2$ lsnrctl stop ora9i
LSNRCTL for Solaris: Version 11.2.0.3.0 - Production on 27-JUN-2013 04:53:08
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.151)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ora9i)))
The command completed successfully
所以我们需要为9I的LISTENER 设置好安全策略为PASSWORD认证,防止这样的情况
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
Password changed for LISTENER
The command completed successfully
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
Saved LISTENER configuration parameters.
Listener Parameter File /home/oracle/product/9.2.0.4/network/admin/listener.ora
Old Parameter File /home/oracle/product/9.2.0.4/network/admin/listener.bak
The command completed successfully
再次远程关闭
-bash-3.2$ lsnrctl stop ora9i
LSNRCTL for Solaris: Version 11.2.0.3.0 - Production on 27-JUN-2013 04:57:17
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.151)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ora9i)))
TNS-01169: The listener has not recognized the password
但是10G过后不存在这个问题因为使用本地认证的模式如下:
LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 11.2.0.3.0 - Production
Start Date 27-JUN-2013 04:44:09
Uptime 0 days 0 hr. 14 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/dg1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dg1)(PORT=1521)))
Services Summary...
Service "dg1" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
Service "ora11gXDB" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>
如果远程关闭如下:
-bash-3.2$ lsnrctl stop test
LSNRCTL for Solaris: Version 11.2.0.3.0 - Production on 27-JUN-2013 05:00:16
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.157)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=test)))
TNS-01189: The listener could not authenticate the user
但是可以在LISTENER文件中设置
LOCAL_OS_AUTHENTICATION_LISTENER = OFF
来关闭本地认证方式,这样就可以设置密码了,但是有什么意义呢?设置密码本来就是防止远程关闭,如果能登录本机设置密码有什么意义
呢?杀掉进程不就可以了
如果你忘记了密码,只要能够登录本机,可以在配置文件中删除关于PASSWORD的记录,然后KILL掉LISTENER进程,最后重启就可以了。