2015-04-06 52 views
1

代碼如下 -獲得 「值java.sql.SQLException:ORA-28009:連接,SYS應以SYSDBA或SYSOPER」 在常規

import groovy.sql.Sql 

def driver = "oracle.jdbc.OracleDriver" 
def jdbcUrl = "jdbc:oracle:[email protected]: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) 

我嘗試將用戶替換爲'sys as sysdba',如this SO answer中所述。

我也嘗試使用

Properties props = new Properties() 
props.put("user","sys") 
props.put("password", "password") 
props.put("internal_logon", "sysdba") 
jdbcUrl = "jdbc:oracle:[email protected]:1521:MYSID" 
def sql=Sql.newInstance(jdbcUrl,props) 

的建議here

但在這裏我得到

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

有什麼建議?

+4

爲什麼你想以SYS的身份登錄?這是一個令人難以置信的強大帳戶,應該很少使用。除非您正在構建專門用於DBA的應用程序來管理數據庫並在該應用程序中構建一個實際需要SYS提升權限的屏幕,否則您不希望使用該帳戶連接到數據庫。您希望使用權限較少的帳戶。 –

+0

@JustinCave我正在做的事情只在線,我需要sys作爲sysdba來做到這一點。 –

+0

不通過應用程序以sys身份登錄,創建用戶,授予他們DBA並與他們連接 – kevinsky

回答

4

以下確實工作。驅動名稱唯一不同的是

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) 
+0

是的工作。事實證明,密碼文件已損壞。謝謝。 –

+0

很高興它的工作...哪個密碼文件? – Jayan

+2

oracle密碼文件 - http://docs.oracle.com/cd/B28359_01/server.111/b28310/dba007.htm#ADMIN10241 –