解决Oracle局域网程序连接访问问题

主要问题是在创建实例的时候采用的是默认的Listener设置和实例设置,IP都采用的是localhost,本地访问正常,而局域网内其他机器访问则不能顺利访问。错误代码如下:

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (The Network Adapter could not establish the connection)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:114)
	at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)

解决此问题需操作Net Manger修改Host为局域网IP,操作图例如下: 

第一步:修改监听HOST 
 
第二步:修改数据库实例HOST 
 
第三步:修改程序数据库配置HOST 
 
注意:不要忘记添加端口1521.否则报错:Cannot create PoolableConnectionFactory (Invalid number format for port number)  
第四步:关闭系统防火墙 
     我的系统是win7 64bit,怎么关闭看下面截图: 

 

关闭后界面如下: 

经过以上设置程序正常启动。

### 如何从局域网连接Oracle 数据库 #### 局域网连接 Oracle 数据库的配置方法 为了成功通过局域网访问 Oracle 数据库,需确保客户端计算机上安装有必要的 Oracle 客户端工具并正确设置了环境变量。通常情况下,可以通过 SQL*Plus 或者其他支持 JDBC 的图形界面工具来完成这一操作。 对于基于命令行的方式,启动 SQL*Plus 后输入指定格式的字符串以建立远程会话: ```bash sqlplus 用户名/密码@//主机地址:端口号/SID名称 ``` 这里的 `SID` 是指特定实例的服务标识符;而现代版本更推荐使用服务名替代 SID 进行连接[^1]。 当采用 Java 应用程序时,则应构建如下形式的数据源 URL 来初始化数据库连接池或直接创建 Connection 对象: ```java String url = "jdbc:oracle:thin:@//host_ip_address:port/service_name"; Connection conn = DriverManager.getConnection(url, username, password); ``` 上述代码片段展示了利用 JDBC Thin Driver 实现与目标服务器之间的通信过程[^2]。 #### 常见问题及其解决方案 - **无法解析主机名** 如果遇到此错误提示,可能是由于 DNS 解析失败或者是 tnsnames.ora 文件中的定义不准确所引起的。建议检查网络设置以及确认 TNS 名称是否匹配实际部署情况。 - **监听器不可达** 此类状况往往意味着本地防火墙阻止了对外部请求的响应或是远端 Listener 没有正常运行。此时应当核查防火墙策略,并验证 listener 是否处于活动状态。 - **认证失败** 输入错误凭证是最常见的原因。务必仔细核对所提供的账号信息无误后再尝试重新登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值