Можно ли создать новый PDB из Java? - PullRequest
0 голосов
/ 25 января 2019

Для одного из моих документов я хотел бы создать новый PDB из Java.

Я могу получить соединение cdb, скажем,

Connection cdbConnection = DBUtils.getDBConnection(Constants.DB_CDB_NAME, Constants.DB_CDB_USER_NAME, Constants.DB_CDB_PASSWORD);

Теперь я пытаюсь клонировать PDB3: CREATE PLUGGABLE DATABASE PDB5 FROM PDB3;

public static void createPluggableDB(Connection cdbConnection) {
  try (Statement stmt = cdbConnection.createStatement();) {
     stmt.executeUpdate("CREATE PLUGGABLE DATABASE PDB5 FROM PDB3;");
  } catch (SQLException exception) {
    // exception handling
  }
}

Когда я выполняю это, я получаю,

java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1052)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:537)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:255)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:610)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:213)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:37)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:887)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1136)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1754)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1709)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:300)
at com.xit.gtw.db.DBUtils.executeDBScripts(DBUtils.java:43)
at PluggableDBBuilder.createPluggableDB(PluggableDBBuilder.java:51)
at PluggableDBBuilder.main(PluggableDBBuilder.java:35)

Можно ли создать PDB из Java?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 января 2019

У вас не должно быть точки с запятой в строке, которую вы передаете executeUpdate(); это разделитель операторов, а не часть операторов. Удалите это:

stmt.executeUpdate("CREATE PLUGGABLE DATABASE PDB5 FROM PDB3");

Это относится к любому оператору, который вы пытаетесь выполнить с помощью JDBC (или, действительно, с помощью многих других механизмов, включая execute immediate).

...