java - 使用 Java 连接到 Amazon RDS 实例时如何解决 ORA-12514

标签 java oracle amazon-rds

我正在尝试使用 JDBC 连接到我的 RDS 实例。当我尝试通过代码时,我得到一个:

Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

错误消息。我可以使用相同的凭据、SID 等从 SQL Developer 进行连接,没有任何问题。

对于那些没有使用过 Amazon RDS 的人来说,它是其 AWS 服务上提供的托管数据库。因为它是托管的,所以我无法访问与本地安装相同的设施,并且到目前为止还没有弄清楚是否或如何访问 tnsnames.ora 文件以获取监听器信息。

我的代码如下:

public Connection connectToDatabase() {
        String url = "jdbc:oracle:thin:@//blahblahyadayada-eastnorthest-1.rds.amazonaws.com:1521/ORCL,username,password";
        try {
            return DriverManager.getConnection(url); // <-- error is here
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                return DriverManager.getConnection(url);
            } catch (SQLException e1) {
                e1.printStackTrace(); 

            }
        }
        return null;
    }


public static void main(String[] args) {

    Connection conn = db.connectToDatabase();
        try {
            ResultSet results = db.executeQuery("select 1;", conn);
            if (results.next()) {
                LOGGER.info("Results of query: {}",
                        String.valueOf(results.getInt(1)));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 ....

编辑

通过以下语句找到以下监听器信息:

show parameter db_name;
show parameter remote_listener;
show parameter listener_networks
show parameter local_listener;

NAME                                               TYPE        VALUE                                                                                                
-------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------- 
db_name                                            string      ORCL                                                                                                 

NAME                                               TYPE        VALUE                                                                                                
-------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------- 
remote_listener                                    string                                                                                                           

NAME                                               TYPE        VALUE                                                                                                
-------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------- 
listener_networks                                  string                                                                                                           

 NAME                                               TYPE        VALUE                                                                                                
-------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------- 
local_listener                                     string      (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))   

监听器的 RDS 参数不可修改并显示为动态。

select * from DBA_SERVICES; 显示:

SERVICE_ID NAME                                                              NAME_HASH NETWORK_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     CREATION_DATE CREATION_DATE_HASH FAILOVER_METHOD                                                  FAILOVER_TYPE                                                    FAILOVER_RETRIES FAILOVER_DELAY MIN_CARDINALITY MAX_CARDINALITY GOAL         DTP ENABLED AQ_HA_NOTIFICATIONS CLB_GOAL EDITION                      
---------- ---------------------------------------------------------------- ---------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------------------ ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------- -------------- --------------- --------------- ------------ --- ------- ------------------- -------- ------------------------------
         1 SYS$BACKGROUND                                                    165959219                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  13-05-01                       0                                                                                                                                                                                                   NONE         N   NO      NO                  SHORT                                   
         2 SYS$USERS                                                        3427055676                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  13-05-01                       0                                                                                                                                                                                                   NONE         N   NO      NO                  SHORT                                   
         3 ORCL_A                                                           3453147048 ORCL_A  

我修改了连接字符串以尝试 ORCL_A,但出现相同的错误。

最佳答案

JDBC 连接字符串不正确。

字符串应该是:jdbc:oracle:thin:[user/password]@//<host><:port>/<service>

更改连接字符串解决了该问题。

关于java - 使用 Java 连接到 Amazon RDS 实例时如何解决 ORA-12514,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744644/

相关文章:

sql - Oracle SQL 分析查询 - 递归电子表格式运行总计

sql - Oracle SQL 选择不在 GROUP BY 子句中的行

postgresql - rds postgres 上的 redis_fdw

mysql - 所有数据库的通用数据类型应该是什么

postgresql - 从快照创建的 AWS RDS 实例非常慢

postgresql - 在 Amazon Postgres RDS 上设置 session 授权的权限被拒绝

java - 同步动画的最佳方式

java - 程序输出问题

java - 自定义 TableCellRenderer 不工作(表行呈现)

java - 如何在循环中使用paintComponent?