|
|
|||||||||||||||||||||||||||||
|
Практическое использование средств FGACИсточник: ln
Том, Мы собираемся использовать возможности создания виртуальной приватной базы данных (VPD) сервера Oracle для уже работающей производственной системы оперативной обработки транзакций (ООТ). Идея в том, чтобы возможности системы могли одновременно использовать примерно 40-50 разных компаний. В каждую таблицу приложения добавляется новый столбец, например, COMP_ID. Теперь вопрос: (я знаю о твоем мнении в отношении использования индексов на основе битовых карт в системах ООТ) Не стоит ли использовать индексы на основе битовых карт по столбцам COMP_ID (VPD), просто потому, что количество различных значений в них весьма невелико? Ответ Тома КайтаНЕТ! Индексы на основе битовых карт никогда, ни при каких обстоятельствах не подходят для систем ООТ. Столбец COMP_ID станет атрибутом, который будет добавлен к существующим индексам -- сам столбец COMP_ID индексировать не нужно. Пусть имеется таблица emp: create table emp ( empno number, ename varchar2(30), job varchar2(10) ); И выполнены следующие операторы: alter table emp add constraint emp_pk primary key(empno); create index emp_ename_idx on emp( ename ); Теперь, вы добавляете столбец comp_id и выполняете операторы: alter table emp add constraint emp_pk primary key(EMPNO,COMP_ID); create index emp_ename_idx on emp(ename, COMP_ID); поскольку запрос, который имел вид: select * from emp where empno = :x; теперь будет эквивалентен: select * from emp where empno = :x and comp_id = sys_context(...); Запрос: select * from emp where ename = :x будет изменен аналогично... Вопрос читателя от 26 мая 2003 годаНет ли смысла фрагментировать таблицу по столбцу COMP_ID? Ответ Тома КайтаКонечно, можно и фрагментировать. Особенно если количество разных значений comp_id фиксировано. Будет сложнее (потребует больше действий от администратора), если придется добавлять фрагменты на ходу. А как насчет сжатия?Не будет ли лучше создать индекс со сжатием, например, по столбцам comp_id, empno и сжать по столбцу 1? Ответ Тома КайтаДа, это сработает... Условие, генерируемое при добавлении FGACПеречитал на выходных главу, посвященную средствам тщательного контроля доступа, в твоей книге... Вопросы:
Я попытался сделать следующее:
Как получить реальный текст оператора - я привык видеть при программировании все операторы SQL. Ответ Тома Кайта1) См. это обсуждение 2) При анализе оператора. Вызовы dbms_output в функциях FGAC выполняются в другом сеансе - вот почему вы никогда не увидите их результаты. Ссылки по теме
|
|