暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

jdbc连接ASM报错ORA-15000:command disallowed by current instance type

48

APPLIES TO:JDBC - Version 11.2.0.3.0 and later


Information in this document applies to any platform.

SYMPTOMS

JDBC connection can't be created due to exception "ORA-15000: command disallowed by current instance type" when one java client try to connect Oracle ASM instance via JDBC string.

jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=<ASM_HOST>)(PORT=<PORT>))
(CONNECT_DATA=
(SERVICE_NAME=<ASM_SERVICE_NAME>)
)
)

 

Exception in thread "main" java .sql.SQLException: ORA-15000: command disallowed by current instance type
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:441)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:436)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:546)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:519)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:615)

 

CAUSE

 ASM instance connection required "/as sysdba"

The asm instance does not have a data file, so the user's password will only be stored in the password file. When connecting to asm, user must connect through a password file, and the password file connection must specify its system role ("/as sysdba")

 

SOLUTION

Please refer below sample code to setup "/as sysdba" when creating JDBC connection to ASM instance.

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.*;

// create one DataSource object
OracleDataSource ods = new OracleDataSource();

// setup 3 DB properties: user, password and sysdba
java.util.Properties prop = new java.util.Properties();
prop.put("user", "sys");
prop.put("password", "");
prop.put("internal_logon", "sysdba");
ods.setConnectionProperties(prop);

// setup jdbc URL
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=asm.host.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=+ASM)))";
ods.setURL(url);

// create connection
Connection conn = ods.getConnection();


文章转载自山东Oracle用户组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论