Короткий ответ на ваш вопрос - нет, вы не можете создать сеанс «только для чтения».
Вы получите ошибки «недостаточные привилегии», если у вас есть привилегии SELECT только для таблицы, а затем выполните операторы UPDATE / INSERT / DELETE.
Вы также не можете выполнить операторы UPDATE / INSERT / DELETE внутри транзакции только для чтения, вы получите ошибку. Я думаю, это означает, что то, что, по вашему мнению, вы делаете с «установкой транзакции только для чтения», не будет делать то, что, как я понимаю, вы хотите. Вот что действительно произошло бы:
SQL> set transaction read only;
Transaction set.
SQL> update tbl set code = 'ACTIVE' where id = 10;
update tbl set code = 'ACTIVE' where id = 10
*
ERROR at line 1:
ORA-01456: may not perform insert/delete/update operation inside a READ ONLY transaction
SQL>
Для тестирования вам необходимо:
- Создайте тестовую базу данных, о которой вы не будете плакать, если ее облажаете.
- Используйте База данных флэшбэков , чтобы восстановить исходные данные после каждого теста.