怎样用lsnrctl恢复默认设置
删除或备份listener.ora和tnsnames.ora后重启lsnrctl,可自动生成默认配置文件;也可手动编辑替换HOST、ORACLE_HOME等参数恢复默认。操作前务必备份,RAC环境每节点需单独执行。此方法适用于Oracle监听配置异常时的快速恢复,确保监听服务正常启动。
lsnrctl 是 Oracle 数据库里管理监听器的利器。但有时候配置文件改来改去,或者迁移环境后,你会想把监听器恢复成出厂设置——说白了,就是回到默认状态。这事儿其实不复杂,关键看你选哪种方式。下面两个方法,总有一个适合你。

方法一:直接清空配置文件,让监听器自动重建
这招最省事儿——删掉或移走现有的 listener.ora 和 tnsnames.ora,让 lsnrctl start 自己生成一套默认的。具体分四步走:
先停止监听器:
lsnrctl stop强烈建议先做备份(万一后悔还有回头路):
cp $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.bak cp $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora.bak把现有的配置文件挪走,不让它们干扰默认生成:
mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.old mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora.old启动监听器,系统会自动创建默认的配置文件:
lsnrctl start这一步完成后,
$ORACLE_HOME/network/admin/目录下就会多出全新的listener.ora和tnsnames.ora,内容就是 Oracle 自带的默认模板。
方法二:手动编辑,恢复默认内容
如果不想动文件名结构,或者只想精准替换某些参数,那手改配置文件可能更顺手。不过要注意,默认配置里的 HOST、ORACLE_HOME 路径、SERVICE_NAME 这些值需要根据你本机的实际情况填写,不能直接照搬。
编辑 listener.ora
打开 $ORACLE_HOME/network/admin/listener.ora,把内容调整为如下结构(注意替换 your_hostname 和 /path/to/your/oracle/home):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /path/to/your/oracle/home)
(PROGRAM = extproc)
)
)
编辑 tnsnames.ora
打开 $ORACLE_HOME/network/admin/tnsnames.ora,默认的服务名通常叫 ORCL,你可以按需修改 your_hostname 和 orcl:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
几点提醒
- 动文件之前,备份是底线。这点怎么强调都不为过。
- 编辑
$ORACLE_HOME/network/admin/下的文件需要有操作系统层面的写权限,检查一下当前用户身份。 - 如果在 RAC 集群中操作,每个节点都得重复一遍上面的步骤,别忘了。
两种方法都能让 lsnrctl 重回默认状态。方法一更彻底、路径最短,适合配置乱到不想看的时候用;方法二更灵活,适合只调整部分参数或者需要保留其他自定义内容的情况。选哪种,看你的场景就好。


































