Скрытые возможности Oracle Database
По мере того, как моя ежедневная работа вращается вокруг БД Oracle, я удивляюсь, есть ли какие-то скрытые функции, которые могут пригодиться в повседневной работе с БД как в качестве разработчика, так и в качестве БД?
5 ответов
Как администратор базы данных Oracle, я обнаружил, что более глубокое знание видимых функций базы данных Oracle гораздо полезнее, чем недокументированные и непредсказуемые скрытые функции. Если вы этого еще не сделали, начните с Руководства по концепциям (pdf), а затем прочитайте Руководство администратора (pdf). Для дальнейших опций чтения смотрите некоторые вопросы stackoverflow здесь и здесь.
Не знаю, насколько это "скрыто", но начиная с версии 9i был введен механизм Flashback Query.
С помощью Flashback Query вы можете увидеть содержимое и структуру объектов Oracle в определенный момент в прошлом (до тех пор, пока эта информация все еще хранится в табличных пространствах отмены), например:
select * from
mytable
AS OF TIMESTAMP TO_TIMESTAMP ('2009-05-16 10:20:20', 'YYYY-MM-DD HH24:MI:SS'));
извлекает записи из "mytable", как они были 5 минут назад.
В течение последних нескольких лет техническая поддержка Oracle давала мне недокументированные параметры, но обычно причина, по которой они недокументированы (~= скрыты), заключается в том, что они действительно должны использоваться только для устранения неполадок и конкретных проблем.
На этой странице (автор Donald Burleson) есть хорошая разбивка о том, как найти недокументированные пакеты и представления, но у меня не так много причин использовать...
Учитывая, что скрытые функции могут быть теми, которые вы не ожидаете, я бы проголосовал за вещи, которые вы не хотите использовать против себя (просто потому, что вы не знали, что их нужно отключить).
Я помню сценарий ужасов из разговора о взломах Oracle (я полагаю, что это был этот - также как видео). Наиболее впечатляющей особенностью было полное шифрование базы данных, которое, кажется, доступно, но не лицензировано. Таким образом, если вы атакованы, и кто-то использует SQL-инъекцию с необходимыми привилегиями, он может запустить шифрование базы данных, которое вы узнаете при следующем перезапуске, когда он запросит парольную фразу. Поскольку шифрование является "отраслевым стандартом", лучше иметь незашифрованную резервную копию или подготовиться заплатить выкуп, если злоумышленник попросит об этом.
Это не удобно для использования в качестве разработчика или администратора базы данных, но его стоит знать как администратора безопасности.
Если я неверно процитировал разговор и получил неправильный, дайте мне знать, и я буду копать глубже.
Найти активные сессии:
SELECT SID, Serial#, UserName, Status, SchemaName, Logon_Time
FROM V$Session
WHERE
Status=‘ACTIVE’ AND
UserName IS NOT NULL;
Если у вас есть конфигурация RAC:
SELECT Inst_Id, SID, Serial#, UserName, Status, SchemaName, Logon_Time
FROM GV_$Session
WHERE
Status=’ACTIVE’ AND
UserName IS NOT NULL;
Ссылка: http://dbalink.wordpress.com/2008/06/08/find-active-sessions-in-oracle-database/