Oracle10g的监听安全管理机制和oracle9i有很大的变化,Listener的安全机制使用了Password方式和Local OS Authentication方式,在使用了Local OS Authentication方式下,即使是设置了监听密码,对于启动监听的用户来说,也是可以不需要任何密码就可以停止监听的。如没有在listener.ora文件里特殊设置的话,oracle10g的监听默认是采用Local OS Authentication安全认证方式的。所以在这种情况下,即使你创建了监听密码,也可以不需要输入密码就可以停止监听。
oracle10g具体采用哪种监听认证方式,可以从listener的启动和lsnrctl status中看到,例如:
LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期 12-5月 -2011 18:55:40
正常运行时间 0 天 0 小时 13 分 2 秒
跟踪级别 off
SNMP OFF
监听程序参数文件 c:/oracle/product/10.2.0/db_1/network/admin/listener.o
ra
监听程序日志文件 c:/oracle/product/10.2.0/db_1/network/log/listener.log
。。。。。
从上面的内容“安全性” 可以了解到,监听安全认证的方式是:Password or Local OS Authentication
那如何让oracle10g采用passwod的方式的?只需要在listener.ora文件中添加:LOCAL_OS_AUTHENTICATION_[listener name] = OFF
例如,我现在,在我的listener.ora文件里添加 LOCAL_OS_AUTHENTICATION_LISTENER = OFF
文件内容如下:
# listener.ora Network Configuration File: c:/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
# Generated by Oracle configuration tools.
###skate add
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = c:/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = LENOVEV001)(PORT = 1521))
)
)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = LENOVEV001)(PORT = 1521))
)
)
。。。。。。
修改之后,在像oracle9i里那样设置监听密码,这回就需要输入密码验证了,采用了password的认证方式了,例如
LSNRCTL> service
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "orcl" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已拒绝:0 状态:ready
LOCAL SERVER
。。。。。。
命令执行成功
LSNRCTL> quit
C:/Documents and Settings/Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-5月 -2011 19:1
8:05
8:05
Copyright (c) 1991, 2005, Oracle. All rights reserved.
欢迎来到LSNRCTL, 请键入"help"以获得信息。
LSNRCTL> service
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-01169: 监听程序尚未识别口令
LSNRCTL> set password
Password:
命令执行成功
LSNRCTL> service
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
。。。。。。
命令执行成功
LSNRCTL>
LSNRCTL>
---end----