Авг 062013
 

Роль по умолчанию для пользователя - это роль, которая применяется сразу в момент соединения. Т.е. возможна ситуация, когда пользователю дана некая роль, но она не указана как DEFAULT ROLE. В таком случае он часто не может самостоятельно ею воспользоваться, звонит и задаёт неудобные вопросы.
Рассмотрим ситуацию чуть более подробно, проведём небольшой эксперимент: Continue reading »

Дек 292012
 

Начиная с версии 10g, в представлении v$session появилось поле blocking_session, которое содержит SID сессии, блокирующей исходную. В 11.2.0.3 всё стало ещё удобнее, ибо появилось поле final_blocking_session, в котором указан SID сессии, являющейся "корнем" дерева блокировок. Убиваем её и либо всё дерево блокировок разрешается, либо "корнем" становится другая сессия. Как говорится, в таком случае надо смыть, повторить.

Если поля final_blocking_session в v$session нет, то нам поможет иерархический запрос. Continue reading »

Ноя 292012
 

При попытке создать файл в существующей директории пользователь получил такую ошибку:

ORA-29280:	 invalid directory path

Директория была создана ранее и назвалась CUBE:

CREATE DIRECTORY cube AS '/statistics/Cube';
GRANT READ, WRITE ON DIRECTORY cube TO some_user;

В результате небольшого анализа удалось выяснить причину.
Дело в том, что пользователь пытался создать файл примерно таким образом: Continue reading »

Окт 192012
 

Иногда бывает полезно сделать таблицу доступной только на чтение. В ORACLE 11g с этим проблем нет. Есть штатные команды:

ALTER TABLE cube_tab READ ONLY;
ALTER TABLE cube_tab READ WRITE;

В версиях, предшествующих 11g в режим read only можно перевести только табличное пространство целиком. Чтобы никто не смог изменять таблицу, можно написать простенький триггер: Continue reading »

Сен 072012
 

Начиная с ORACLE 10g появилась поддержка так называемых Bigfile tablespaces (далее - BFT). От обычных табличных пространств они отличаются тем, что состоят только из одного файла данных, но при этом файл может быть очень большого размера.
Раньше, например, в версии 9i, размер файла данных не мог превышать 4M - 1 блоков, т.е. для файла с размером блока 8K было ограничение 4 \cdot 8192 \cdot 1024^2 - 8192 = 34359730176 \approx 32G. Поэтому для действительно больших табличных пространств приходилось создавать несколько (иногда очень много) файлов, что усложняло администрирование базы. Continue reading »

Июн 152012
 

Уровень выполнения - это режим функционирования UNIX-системы. Это общее понятие для UNIX и UNIX-подобных систем, но могут встречаться различия в значениях каждого из уровней. В каждый момент времени система находится на одном из уровней выполнения, при этом список запускаемых процессов будет различаться в зависимости от уровня.

Переключаются уровни командой init, например: Continue reading »

Ноя 182011
 

В чём состоит разница между командами ALTER SYSTEM SWITCH LOGFILE и ALTER SYSTEM ARCHIVE LOG CURRENT? На первый взгляд, эти команды выполняют одно и то же:

  1. Вызывают событие checkpoint
  2. Процесс LGWR перестаёт писать в текущий лог и начинает писать в следующий
  3. Процесс ARCH архивирует старый лог

но делают они это немного по-разному. Continue reading »

Ноя 082011
 

При попытке добавить файл данных видим такое сообщение об ошибке:

SQL> ALTER TABLESPACE main_ts ADD DATAFILE
  2  '/dev/vx/rdsk/proddb/main_ts_46.dbf';
alter tablespace main_ts add datafile
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded

Continue reading »

Ноя 032011
 

Начиная с версии 10g в ORACLE появляется т.н. корзина (recycle bin). Если она включена (по умолчанию), то при удалении таблицы с помощью конструкции DROP TABLE, таблица не удаляется, а просто переименовывается, оставаясь в табличном пространстве пользователя.
Посмотреть содержимое корзины можно так: Continue reading »