如何在Java中将SYS连接到Oracle?
我收到此错误:
java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
怎么修? (我需要是SYS
)。 谢谢。
尝试这个 :
import java.sql as jsql import java.lang as lang driver, url, user, passwd = ( "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@localhost:1234:xxx1", "sys as sysdba", "xxx1") lang.Class.forName(driver) c = jsql.DriverManager.getConnection(url,user,passwd)
这段代码有效
String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName).newInstance(); String nameForConnect = "sys as sysdba"; String pass = "password"; String url = "jdbc:oracle:thin:@192.168.0.1:1521:ORCL"; Connection conn = DriverManager.getConnection(url, nameForConnect, pass);
答案已经存在,
您尝试连接为sys
但服务器允许
sys as sysdba
要么
sys as sysoper
只需将用户参数更改为上面的任何一个
user='sys as sysdba'
要么
user='sys as sysoper'
如果您尝试连接到数据库,请执行以下操作: connect SYS/
您使用的语法不再有效(在Oracle 9i之后)。
而是尝试连接如下:
connect SYS/ as SYSDBA or connect SYS/ as SYSOPER
你能使用OracleDataSource对象吗?
public class Database { static OracleDataSource ods; public static Connection openConnection(String URL, String user, String password, String option) throws SQLException { Connection conn = null; Properties properties = new Properties(); properties.put("user", user); properties.put("password", password); ods = new OracleDataSource(); ods.setURL(URL); if(option != null) { properties.put("internal_logon", option); } ods.setConnectionProperties(properties); conn = ods.getConnection(); return conn; } }
并称之为:
Connection con = null; con = Database.openConnection("YourJDBCConnectionURL", "YourSYSUser", "YourSYSPassword", "sysdba");
如果要将数据库与“sys”以外的用户连接为“sysdba”,则必须将驱动程序从“thin”更改为“oci”以成功连接。
try { Class.forName("oracle.jdbc.driver.OracleDriver"); String DB_URL="jdbc:oracle:oci:@localhost:1521:orcl"; OracleDataSource ds1=new OracleDataSource(); Properties prop1 = new Properties(); prop1.setProperty("user","ravi"); prop1.setProperty("password","******"); prop1.setProperty("internal_logon","sysdba"); ds1.setConnectionProperties(prop1); ds1.setURL(DB_URL); OracleConnection conn1 = (OracleConnection)ds1.getConnection(); Statement stmt = conn1.createStatement(); ResultSet rs = stmt.executeQuery("select * from dba_users"); while (rs.next()) System.out.println(rs.getString(1)); conn1.close(); } catch (Exception e) { System.out.println(e); }
你需要把sysdba和用户字符串参数放在一起
String user="sys as sysdba"