ORA-00112: value of string is null怎么修复?Oracle远程处理空值异常该怎么做?

文章导读
这个错误通常是因为Oracle的tnsnames.ora文件里某个参数没填值,比如REMOTE_LISTENER或者LISTENER_NETWORKS这些地方留空了。修复方法很简单:打开tnsnames.ora文件,找到对应的参数行,把null或者空字符串改成实际的值。比如REMOTE_LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = yourhost)(
📋 目录
  1. Oracle社区帖子
  2. Stack Overflow讨论
  3. Oracle官方文档摘录
  4. 博客经验分享
  5. 论坛用户解决记录
  6. FAQ
A A

这个错误通常是因为Oracle的tnsnames.ora文件里某个参数没填值,比如REMOTE_LISTENER或者LISTENER_NETWORKS这些地方留空了。修复方法很简单:打开tnsnames.ora文件,找到对应的参数行,把null或者空字符串改成实际的值。比如REMOTE_LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = yourhost)(PORT = 1521)),保存后重启数据库服务就行。如果是分布式事务问题,检查init.ora或spfile里的参数,确保没有空值。简单重启监听器和数据库实例,很多时候就能解决。

Oracle社区帖子

我遇到ORA-00112,是因为REMOTE_LISTENER参数是null。解决办法:用sqlplus连上数据库,执行show parameter remote_listener,看是不是null。然后alter system set remote_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both; 然后重启实例。tnsnames.ora也要同步改。测试连接远程数据库,没问题了。

Stack Overflow讨论

ORA-00112: value of REMOTE_LISTENER is null. This happens when you're trying to register remote listeners for RAC or Data Guard. Fix: In your sqlnet.ora or tnsnames.ora, ensure REMOTE_LISTENER is set properly. Or set it dynamically: ALTER SYSTEM SET remote_listener='your_listener_string' SCOPE=BOTH SID='*'; Make sure the string matches your actual listener config. Restart CMAN or listener if needed.

Oracle官方文档摘录

The ORA-00112 error indicates that a parameter value is null, typically REMOTE_LISTENER or LISTENER_NETWORKS. To resolve, set the parameter to a valid TNS name or address list. For example: REMOTE_LISTENER = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=scan-cluster)(PORT=1521))) Ensure this matches your cluster or remote listener configuration. Use srvctl to update if in RAC environment: srvctl modify instance -db dbname -instance instname -option remote_listener="value".

ORA-00112: value of string is null怎么修复?Oracle远程处理空值异常该怎么做?

博客经验分享

上次搞Oracle 19c,远程连接时报ORA-00112,检查发现tnsnames.ora里REMOTE_LISTENER一行是空的。直接编辑文件,填上(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)),然后lsnrctl reload,重启dbconsole。问题没了。记住,参数名后不能有空格或null字样,直接赋值。

论坛用户解决记录

问题:ORA-00112 value of string is null,在远程XA事务时出现。原因是global_names参数和db_link设置冲突。修复:设置global_names=false,或者正确配置db_link的connect_data。另检查listener.ora的SID_LIST,确保没有空服务名。最终用alter system reset remote_listener;然后手动set值,ok了。

FAQ

Q: ORA-00112常见触发场景是什么?
A: 主要是RAC环境、Data Guard复制或远程监听器注册时,参数如REMOTE_LISTENER为空。

ORA-00112: value of string is null怎么修复?Oracle远程处理空值异常该怎么做?

Q: 不重启数据库能修复吗?
A: 可以,用alter system set命令动态设置SCOPE=BOTH,然后reload监听器。

Q: tnsnames.ora在哪里找?
A: 默认在$ORACLE_HOME/network/admin/目录下。

Q: RAC里怎么批量修?
A: 用srvctl modify database -db dbname -option remote_listener="value"。