Скрытые возможности 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/

Другие вопросы по тегам