Я получаю эту ошибку:
java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Как исправить? (Мне нужно быть SYS
). Спасибо.
Я получаю эту ошибку:
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)
Ответы уже есть,
вы пытаетесь подключиться как sys
, но сервер разрешает
либо
sys as sysdba
or
sys as sysoper
просто измените пользовательский параметр как один из приведенных выше
user='sys as sysdba'
or
user='sys as sysoper'
Этот код работает
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);
Если вы пытались подключиться к базе данных следующим образом: connect SYS/<password>
вы использовали синтаксис, который больше не действует (после Oracle 9i).
Вместо этого попробуйте подключиться следующим образом:
connect SYS/<password> as SYSDBA or connect SYS/<password> 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 с параметром user String, например
String user="sys as sysdba"
Мои два цента, когда я столкнулся с тем же исключением. Следующее помогло мне:
try (Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@myserverip:1521:XE", "sys as sysdba", "Hello123")) {
// this worked too - "jdbc:oracle:thin:@myserverip:1521:XE", "system"
if (conn != null) {
System.out.println("Connected to the database!");
} else {
System.out.println("Failed to make connection!");
}
} catch (SQLException e) {
System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}