Назад | Перейти на главную страницу

Скрытые возможности Oracle Database

Поскольку моя повседневная работа связана с базой данных Oracle, мне интересно, есть ли какие-нибудь скрытые функции, которые могут пригодиться при повседневной работе с базой данных, как в качестве разработчика, так и в качестве администратора базы данных?

Как администратор базы данных 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 давала мне недокументированные параметры, но обычно причина, по которой они недокументированы (~ = скрытые), заключается в том, что они действительно должны использоваться только для устранения неполадок и конкретных проблем.

Эта страница (Дональд Берлесон) имеет хорошее представление о том, как найти недокументированные пакеты и представления, но у меня не так много причин для использования ...

Найдите активные сеансы:

 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/

Учитывая, что скрытые функции могут быть теми, на которые вы не рассчитываете, я бы проголосовал за то, что вы не хотите использовать против себя (только потому, что вы не знали, что вам нужно их отключить).

Я помню хоррор-сценарио из разговора о взломах Oracle (кажется, вот этот - также как видео). Самой впечатляющей особенностью было полное шифрование базы данных, которое вроде бы доступно, но не лицензировано. Таким образом, если вы подвергаетесь атаке, и кто-то использует SQL-инъекцию с необходимыми привилегиями, он может запустить шифрование базы данных, которое вы узнаете при следующем перезапуске, когда она запросит кодовую фразу. Поскольку шифрование является «отраслевым стандартом», вам лучше иметь незашифрованную резервную копию или приготовиться заплатить выкуп, если злоумышленник попросит об этом.

Это не удобно использовать как разработчик или администратор базы данных, но стоит знание как администратор базы данных, заботящийся о безопасности.

Если я неправильно процитировал доклад и ошибся, дайте мне знать, и я копну глубже.