• Базы данных
  • Oracle
  • Сбор и воспроизведение нагрузки базы данных Oracle 11g Database Replay

Таблицы только для чтения в Oracle 11g Release 1

ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;

Следующий скрипт создает таблицу, добавляет в нее несколько строк, затем устанавиливает таблицу в режим "только для чтения".

CREATE TABLE ro_tab (
  id NUMBER
);
INSERT INTO ro_tab VALUES (1);
INSERT INTO ro_tab VALUES (2);
INSERT INTO ro_tab VALUES (3);
INSERT INTO ro_tab VALUES (4);
ALTER TABLE ro_tab READ ONLY; 

Любое предложение DML которое будет применятся к данным таблицы и запросы SELECT ... FOR UPDATE будут возвращать ошибку ORA-12081.

SQL> INSERT INTO ro_tab VALUES (5);
INSERT INTO ro_tab VALUES (5)
  *
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE "TEST"."RO_TAB"

SQL> UPDATE ro_tab SET id = 2;
UPDATE ro_tab SET id = 2
  *
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE "TEST"."RO_TAB"

SQL> DELETE FROM ro_tab;
DELETE FROM ro_tab
  *
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE "TEST"."RO_TAB"

Предложения DDL так же будут ограничены.

SQL> TRUNCATE TABLE ro_tab;
TRUNCATE TABLE ro_tab
  *
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE "TEST"."RO_TAB"

SQL> ALTER TABLE ro_tab ADD (description VARCHAR2(50));
ALTER TABLE ro_tab ADD (description VARCHAR2(50))
*
ERROR at line 1:
ORA-12081: update operation not allowed on TABLE "TEST"."RO_TAB" 

Операции над индексами связанными с этой таблицей не будут применятся, если таблица в режиме только для чтения. DML и DDL операции пройдут нормально, как только таблица будет переключена в режим записи.

SQL> ALTER TABLE ro_tab READ WRITE;
TABLE altered.

SQL> DELETE FROM ro_tab;
1 row deleted. 

Статус таблицы можно узнать из столбца READ_ONLY представлений DBA_TABLES, ALL_TABLES, USER_TABLES.

Читайте также:
  • Фрагментация таблиц в Oracle
    Следует понимать, что фрагментация таблиц отлична от файловой фрагментации. Когда выполняется серия операций DML над таблицей, таблица фрагментируется, потому что DML не освобождает свободное пространство до HWM.HWM - это индикатор использования блоков (USED BLOCKS) в базе данных. Блоки идущие до ли...
  • Управление табличными пространствами в Oracle Database
    Default Permanent Tablespace Переименование табличного пространстваТабличное пространство SYSAUX Составное табличное пространство TempDefault Permanent TablespaceOracle 9i ввел понятие временного табличного пространства по умолчанию (default temporary tablespace), что позволило предотвратить случайн...
  • Ручное создание базы данных в Oracle 11g
    Процедура создания практически не отличается от предыдущих версий - 9i и 10g. В создаваемой базе данных будем использовать следующие опции:OMF (Oracle Managed File) для файлов данных, файлов журналов повторного выполнения и управляющих файлов. FRA (Flash Recovery Area) для архивных журналов или резе...
  • Управление SQL-планами в Oracle Database 11g
    Невозможность гарантировать, что все изменения плана всегда будут в лучшую сторону, привела некоторых заказчиков к тому, чтобы закрепить свои планы выполнения (хранимые планы) или блокировать статистику оптимизатора. Однако, если поступать подобным образом, мы лишаем себя возможности когда-либо испо...
  • Производительность PL/SQL
    Native compilation – это не совсем новая возможность, однако теперь нет «узких» мест её использования, например, установка компилятора C (Oracle назвал эту замечательную возможность "Real Native Compilation"). Кроме того, новый тип данных simple_integer делает выполнен...