修改TNSLSNR的端口

本文介绍了如何通过SQL命令更改Oracle服务中TNSLSNR.exe使用的端口,避免与其他程序冲突,包括将HTTP端口从8080更改为8081及FTP端口从2100更改为2111的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle 服务一启动 TNSLSNR.exe 会占用8080端口,这时,如果我们其他程序需要使用8080端口就会比较麻烦,所以需要改一下端口:

 

用dba账户登录

CMD>sqlplus sys/123 as sysdba


SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081));

/
-- 把FTP端口从2100改到2111
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111));
/


SQL> commit;
SQL> exec dbms_xdb.cfg_refresh;
-- 检查修改是否已经成功
SQL> select dbms_xdb.cfg_get from dual;

这样,TNSLSNR.exe就会使用8081端口了

转载于:https://www.cnblogs.com/ego/p/5987279.html

<think>我们正在讨论的是在修改了Oracle数据库的监听端口后,如何重新启动数据库实例。用户已经在SQL*Plus中启动了实例,现在需要关闭它以释放端口(11521),然后修改监听端口,再重新启动实例。根据引用[1],我们可以通过以下方式连接数据库:1.操作系统认证:`sqlplus/assysdba`,这种方式不需要监听器,即使数据库未启动也可以连接。2.用户名密码认证:`sqlplususername/password`,这种方式需要数据库处于可用状态,但不需要监听器(因为是本地连接)。修改监听端口后,我们需要重新启动监听器,并确保数据库实例能够通过新的端口被访问。步骤概述:1.关闭当前运行的数据库实例(在SQL*Plus中执行`shutdownimmediate`)。2.修改监听器的配置文件(listener.ora)将端口改为新的端口(例如11521)。3.重新启动监听器(`lsnrctlstart`)。4.重新启动数据库实例(在SQL*Plus中执行`startup`)。但是,这里有一个注意点:在关闭数据库实例后,我们修改监听端口,然后重新启动实例。由于启动实例时,我们使用的是`sqlplus/assysdba`(操作系统认证),不需要监听器,所以即使监听器还没有启动或者端口改变了,我们也可以启动实例。然后我们再启动监听器,这样客户端就可以通过新的端口连接到数据库。详细步骤:1.**关闭数据库实例**(在SQL*Plus中):```sqlSQL>shutdownimmediate;```2.**修改监听器配置文件**(listener.ora):找到`listener.ora`文件(通常在`$ORACLE_HOME/network/admin`目录下),修改端口号。例如:```iniLISTENER=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=11521))```如果同时监听多个实例(如引用[3]所示),可以配置SID_LIST部分,但通常动态注册可以自动完成,所以如果只有一个实例,可以不配置SID_LIST。3.**重启监听器**(在操作系统命令行中):```bashlsnrctlstop#先停止(如果之前已经在运行)lsnrctlstart#启动监听器```4.**重新启动数据库实例**(在SQL*Plus中):```sqlSQL>startup;```5.**验证监听器是否注册了实例**:```bashlsnrctlstatus```在输出中应该看到实例的状态为`READY`,并且监听的端口是11521。另外,为了确保数据库实例能够动态注册到监听器,我们可以设置`local_listener`参数(可选):```sqlALTERSYSTEMSETLOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=11521))'SCOPE=BOTH;```这个命令可以在数据库启动后执行,这样实例就会向新的监听端口注册。注意:如果修改监听端口后,客户端连接也需要使用新的端口,因此客户端的`tnsnames.ora`文件也要相应修改。现在,我们将这些步骤整理成清晰的回答。</think>### 修改监听端口后启动 Oracle 数据库实例的完整步骤 #### 1. **关闭当前运行的数据库实例** ```sql -- 以 sysdba 身份登录 sqlplus / as sysdba -- 安全关闭实例 SQL> shutdown immediate; ``` > **注意**:使用 `immediate` 模式确保事务回滚和数据一致性[^1] #### 2. **修改监听器配置文件** 编辑 `$ORACLE_HOME/network/admin/listener.ora`: ```ini LISTENER = (ADDRESS = (PROTOCOL = TCP)(PORT = 11521)) # 修改为所需端口 ``` #### 3. **重启监听器** ```bash lsnrctl stop # 停止旧监听 lsnrctl start # 启动新监听 lsnrctl status # 验证新端口生效 ``` > 输出应显示:`Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=11521)))` #### 4. **启动数据库实例** ```sql -- 通过操作系统认证连接(无需监听器) sqlplus / as sysdba -- 启动实例 SQL> startup; ``` #### 5. **验证端口注册状态** ```sql -- 查看动态注册状态 SQL> SELECT * FROM V$REGISTERED_SERVICES; -- 强制重新注册(可选) SQL> ALTER SYSTEM REGISTER; ``` > 输出应显示新端口 `11521` 的监听服务状态为 `READY` #### 6. **配置客户端连接** 修改客户端 `tnsnames.ora`: ```ini DB_SERVICE = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 11521)) ``` #### 关键原理说明 1. **操作系统认证**: `sqlplus / as sysdba` 绕过监听器直接连接实例,这是修改端口后启动实例的关键[^1] 2. **动态服务注册**: 实例启动后自动向监听器注册服务,无需手动配置 `SID_LIST`(Oracle 11g+ 默认行为) 3. **端口冲突处理**: 若启动失败提示 `ORA-12514`,执行: ```sql ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(PORT=11521))' SCOPE=MEMORY; ALTER SYSTEM REGISTER; ``` #### 操作流程图 ```mermaid graph LR A[关闭实例 shutdown] --> B[修改 listener.ora] B --> C[重启监听器] C --> D[操作系统认证登录] D --> E[执行 startup] E --> F[验证端口注册] ``` > **诊断技巧**:检查日志 `$ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log` 获取端口绑定详情[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值