获得;java.sql.SQLException:ORA-28009:SYS连接应为SYSDBA或SYSOPER;在groovy中

获得;java.sql.SQLException:ORA-28009:SYS连接应为SYSDBA或SYSOPER;在groovy中,java,oracle,groovy,sysdba,Java,Oracle,Groovy,Sysdba,守则如下— import groovy.sql.Sql def driver = "oracle.jdbc.OracleDriver" def jdbcUrl = "jdbc:oracle:thin@myhost:1521:MYSID" def sql = Sql.newInstance(jdbcUrl , "sys", "password", driver) 但我有以下错误 Caught: java.sql.SQLException: ORA-28009: connection as SY

守则如下—

import groovy.sql.Sql

def driver = "oracle.jdbc.OracleDriver"
def jdbcUrl = "jdbc:oracle:thin@myhost:1521:MYSID"
def sql = Sql.newInstance(jdbcUrl , "sys", "password", driver)
但我有以下错误

Caught: java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
        at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:600)
        at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:445)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
        at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:380)
        at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:760)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
按照建议

但现在我明白了

Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied

有什么建议吗?

以下建议确实有效。唯一的区别是驱动程序名

import groovy.sql.Sql

def driver = "oracle.jdbc.driver.OracleDriver"
def jdbcUrl = "jdbc:oracle:thin:@oraclehost:1521:SID"
def sql = Sql.newInstance(jdbcUrl , "sys as sysdba", "syspassword", driver)

首先,你为什么要尝试以SYS身份登录?这是一个非常强大的帐户,应该非常,非常不经常使用。除非您专门为DBA构建一个用于管理数据库的应用程序,并在该应用程序中构建一个实际需要SYS提升权限的屏幕,否则您不会希望使用该帐户连接到数据库。您可能希望使用一个权限要小得多的帐户。@我只是在这方面做一些事情,我需要sys作为sysdba来做。不要通过应用程序以sys身份登录,创建一个用户,授予他们DBA并与他们连接为什么会有什么不同?还说它可以完成,但似乎不起作用,我想知道为什么以前有人经历过这种情况。在上一个例子中,您有“internal_logon”属性,您是否为
SYS
SYSDBA
提供密码?或者你两个都试过了?是的,成功了。事实证明,密码文件已损坏。谢谢。oracle密码文件-Hm。。在这种情况下,您的“sqlplus登录”将失败?不一定:SQL*Plus登录可以使用操作系统组成员身份。用户名必须是作为sysdba的
sys
,而不是
sys
import groovy.sql.Sql

def driver = "oracle.jdbc.driver.OracleDriver"
def jdbcUrl = "jdbc:oracle:thin:@oraclehost:1521:SID"
def sql = Sql.newInstance(jdbcUrl , "sys as sysdba", "syspassword", driver)