--==================================
-- 设置 Oracle 监听器密码(LISTENER)
--==================================
监听器也有安全?Sure!在缺省的情况下,任意用户不需要使用任何密码即通过lsnrctl 工具对Oracle Listener进行操作或关闭,从
而造成任意新的会话都将无法建立连接。在Oracle 9i 中Oracle监听器允许任何一个人利用lsnrctl从远程发起对监听器的管理。也容易导致数
据库受到损坏。
1. 未设定密码情形下停止监听
[oracle@test ~]$ lsnrctl stop listener_demo92 -->停止,可以看出不需要任何即可停止
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 08:22:26
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
The command completed successfully
2. 重新启动监听并设置密码
[oracle@test ~]$ lsnrctl
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 08:24:09
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set current_listener listener_demo92 -->设置当前器
Current Listener is listener_demo92
LSNRCTL> start -->启动过程也不需要任何,启动的详细信息省略
LSNRCTL> change_password -->使用change_password来设置
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
Password changed for listener_demo92
The command completed successfully
LSNRCTL> save_config -->注意此处的save_config失败
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password -->输入新设定的验证
Password:
The command completed successfully
LSNRCTL> save_config -->再次save_config成功
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
Saved listener_demo92 configuration parameters.
Listener Parameter File /oracle/92/network/admin/listener.ora
Old Parameter File /oracle/92/network/admin/listener.bak
The command completed successfully
-->增加之后可以看到listener.ora文件中有一条新增的记录,即选项(注:尽管使用了管理方式,仍然可以无需启动)
[oracle@test admin]$ more listener.ora
#----ADDED BY TNSLSNR 26-JUN-2011 05:12:48---
PASSWORDS_listener_demo92 =
#--------------------------------------------
3. 尝试未使用密码的情况下停止监听
[oracle@test ~]$ lsnrctl stop listener_demo92
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 06:09:51
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
TNS-01169: The listener has not recognized the password -->收到错误信息,需要使用认证
4. 使用密码来停止监听
[oracle@test ~]$ lsnrctl
LSNRCTL> set current_listener listener_demo92
Current Listener is listener_demo92
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
The command completed successfully
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 2: No such file or directory
5. save_config失败的问题
-->在 Oracle 9i中,使用save_config命令将会失败
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=<port>)))
TNS-01169: The listener has not recognized the password
-->应该先使用set password之后再save_config,则保存配置成功。
LSNRCTL> set password
Password: <the password you chose>
The command completed successfully
/*在Oracle 10g 中不会出现类似的问题,因为在10g中可以使用基于操作系统验证方式。listener将检测到如果用户属于dba组的成员,
将会被授予改变,保存配置以及停止等权限。 */
6. 配置listener.ora中ADMIN_RESTRICTIONS参数
参数作用:
当在listener.ora文件中设置了ADMIN_RESTRICTIONS参数后,在监听器运行时,不允许执行任何管理任何,同时set命令将不可用
,不论是在服务器本地还是从远程执行都不行。此时对于监听的设置仅仅通过手工修改listener.ora文件,要使修改生效,只能
使用lsnrctl reload命令或lsnrctl stop/start命令重新载入一次监听器配置信息。
修改方法:
在listener.ora文件中手动加入下面这样一行
ADMIN_RESTRICTIONS_<监听器名> = ON
7. 更多参考
有关性能优化请参考
共享池的调整与优化(Sharedpool Tuning)
Oracle表缓存(cachingtable)的使用
有关ORACLE体系结构请参考
Oracle联机重做日志文件(ONLINE LOG FILE)
Oracle回滚(ROLLBACK)和撤销(UNDO)
Oracle实例和Oracle数据库(Oracle体系结构)
有关闪回特性请参考
Oracle闪回特性(FLASHBACK DATABASE)
Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle闪回特性(Flashback Query、FlashbackTable)
Oracle闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考
Oracle基于用户管理恢复的处理(详细描述了介质恢复及其处理)
有关RMAN的备份恢复与管理请参考
RMAN 备份路径困惑(使用plus archivelog时)
有关ORACLE故障请参考
对参数FAST_START_MTTR_TARGET= 0 的误解及设定
SPFILE错误导致数据库无法启动(ORA-01565)
有关ASM请参考
有关SQL/PLSQL请参考
SQL 基础--> 集合运算(UNION与UNION ALL)
SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR)
SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
有关ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
systemsys,sysoper sysdba 的区别
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle补丁全集 (Oracle 9i 10g 11g Path)
Oracle10.2.0.1 升级到10.2.0.4