如何通过PLSQL在Oracle数据库中设置连接串以实现负载均衡?
- 内容介绍
- 文章标签
- 相关推荐
本文共计950个文字,预计阅读时间需要4分钟。
相关专题:
PL/SQL 连接串里写错 SERVICE_NAME 就连不到备库
很多人在 tnsnames.ora 里照搬主库的 service_name(比如 orcl),结果 pl/sql 一连接就直连主库,根本没走备库。oracle 客户端只认 service_name,不认实例名或 db_name。
必须为备库单独注册一个只读服务,例如:report。RAC 环境下用 srvctl add service;单机可静态注册到 listener.ora 中。然后在 tnsnames.ora 显式定义:
REPORT = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=standby1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=report)))
- 连接时数据库下拉框选
REPORT,不是orcl - Java 应用若用 JDBC,URL 必须带
oracle.net.READ_ONLY=true,否则监听器不触发只读路由 - .NET 客户端需加
ApplicationIntent=ReadOnly
tnsnames.ora 配置项顺序和格式错误导致解析失败
tnsnames.ora 不是普通文本,缩进和括号匹配直接影响解析。
本文共计950个文字,预计阅读时间需要4分钟。
相关专题:
PL/SQL 连接串里写错 SERVICE_NAME 就连不到备库
很多人在 tnsnames.ora 里照搬主库的 service_name(比如 orcl),结果 pl/sql 一连接就直连主库,根本没走备库。oracle 客户端只认 service_name,不认实例名或 db_name。
必须为备库单独注册一个只读服务,例如:report。RAC 环境下用 srvctl add service;单机可静态注册到 listener.ora 中。然后在 tnsnames.ora 显式定义:
REPORT = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=standby1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=report)))
- 连接时数据库下拉框选
REPORT,不是orcl - Java 应用若用 JDBC,URL 必须带
oracle.net.READ_ONLY=true,否则监听器不触发只读路由 - .NET 客户端需加
ApplicationIntent=ReadOnly
tnsnames.ora 配置项顺序和格式错误导致解析失败
tnsnames.ora 不是普通文本,缩进和括号匹配直接影响解析。

