Я согласен, что привилегии пользователя базы данных должны быть настроены так, чтобы он не выполнял запросы DML или DDL, но я пытаюсь сделать то же самое со стороны клиента. Сторона JDBC.
Я скачал найденный драйвер Oracle здесь .
Пока драйвер и его JAR-файлы находятся в пути к классам, я запустил следующий фрагмент кода теста:
Connection connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false);
// connection.setReadOnly(true); // Doesn't help
Statement statement = connection.createStatement();
statement.executeQuery("ALTER TABLE GELBANA_TEST.TABLE1 ADD HQ varchar2(40) DEFAULT 'NY'");
connection.rollBack();
Но столбец добавляется в таблицу !!
Я также могу опустить столбец.
Разве этого не должно быть достаточно, чтобы запретить пользователю выполнять запросы DML или DDL? Мне нужно помешать ему внести какие-либо изменения в базу данных. Ему должно быть разрешено только выбирать данные. Я проверил параметры URL-адреса соединения на предмет чего-то, что могло бы отклонить такие запросы, но не нашел ничего близкого.