求助:从Oracle Application Express导入数据到ElasticSearch集群的连接问题
解决Logstash连接Oracle APEX测试数据库的问题
我来帮你排查这个连接失败的问题,从你的配置和Oracle APEX的环境来看,有几个关键的地方需要修正:
1. 错误的JDBC连接端口和格式
你当前用的8080是Oracle APEX网页控制台的端口,不是Oracle数据库的监听端口。Oracle XE默认的数据库监听端口是1521,而且连接字符串的格式也需要调整——XE的服务名通常是大写的XE,正确的JDBC连接字符串应该是:
jdbc:oracle:thin:@//127.0.0.1:1521/XE
注意开头的双斜杠,这是Oracle Thin驱动针对服务名连接的标准格式。
2. 混淆了APEX工作区和数据库用户
你填的jdbc_user => "TEST"是APEX的工作区名称,但APEX工作区和数据库用户是两个不同的概念。你需要找到person表所属的实际数据库用户名:
- 登录APEX的TEST工作区
- 进入「SQL Workshop」→「Object Browser」
- 找到你创建的
person表,查看它的所属用户(比如可能是TEST_USER或者你手动创建的用户名) - 把这个实际的数据库用户名填到
jdbc_user字段中
3. 额外的验证步骤
在调整Logstash配置之前,建议先通过其他工具验证数据库连接是否正常:
- 用SQL Developer或者Oracle SQL*Plus,用修正后的连接字符串、正确的用户名密码连接数据库,确认能查询到
person表的数据 - 检查Windows服务中的
OracleServiceXE和OracleXETNSListener是否处于运行状态,如果没启动,手动启动它们
修正后的Logstash配置示例
input { jdbc { jdbc_driver_library => "C:\Users\ADMIN\Downloads\ojdbc7.jar" jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" jdbc_connection_string => "jdbc:oracle:thin:@//127.0.0.1:1521/XE" # 替换为你找到的实际数据库用户名 jdbc_user => "ACTUAL_DB_USER" jdbc_password => "pass" statement => "SELECT * from person" } } output { stdout { codec => rubydebug } }
内容的提问来源于stack exchange,提问作者SLFl
相关产品推荐
相关产品推荐

