[orcle]远程连接数据库错误分析

服务器listener.ora文件内容如下,安装好之后的默认内容:

# listener.ora Network Configuration File: E:\devsoft\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\devsoft\oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\devsoft\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = E:\devsoft\oracle

远程连接错误:

一、TNS-12535:TNS:操作超时

原因之一:若lsnrctl status状态正常,有可能远程主机开启了防火墙


二、TNS-12541:TNS:无监听程序

原因之一:若lsnrctl status状态正常,将LISTENER中localhost改为真实的IP地址或域名


三、ORA-12514:TNS:无法解析指定的连接标识符

查看lsnrctl status显示内容,没有期望的SID名称dbjw

服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

将SID_LIST_LISTENER中的SID_LIST添加(也可替换)如下内容:

	(SID_DESC = 
	  (GLOBAL_DBNAME = dbjw)
	  (ORACLE_HOME = E:\devsoft\oracle\product\11.2.0\dbhome_1)
	  (SID_NAME = dbjw)	
	)

GLOBAL_DBNAME对外提供的服务名

SID_NAME待监听实例名

重启监听器,再次查看监听器状态,已包含SID:dbjw

服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "dbjw" 包含 1 个实例。
  实例 "dbjw", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接 Oracle 数据库的步骤如下: 1. 下载并安装 Oracle 数据库驱动程序,将 jar 文件添加到项目的 classpath 中。 2. 加载驱动程序: ``` Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 3. 创建数据库连接: ``` Connection conn = DriverManager.getConnection(url, username, password); ``` 其中,url 格式为 `jdbc:oracle:thin:@<hostname>:<port>:<SID>`。 4. 执行 SQL 语句,获取结果集: ``` Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ``` 5. 处理结果集并关闭资源: ``` while (rs.next()) { // 处理每一行记录 } rs.close(); stmt.close(); conn.close(); ``` 完整的 Java 代码示例: ``` import java.sql.*; public class OracleConnection { public static void main(String[] args) throws ClassNotFoundException, SQLException { // 加载驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 创建数据库连接 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String username = "scott"; String password = "tiger"; Connection conn = DriverManager.getConnection(url, username, password); // 执行 SQL 语句,获取结果集 String sql = "SELECT * FROM emp"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); // 处理结果集并关闭资源 while (rs.next()) { int empno = rs.getInt("empno"); String ename = rs.getString("ename"); String job = rs.getString("job"); System.out.println(empno + "\t" + ename + "\t" + job); } rs.close(); stmt.close(); conn.close(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值