Поскольку моя повседневная работа связана с базой данных 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-инъекцию с необходимыми привилегиями, он может запустить шифрование базы данных, которое вы узнаете при следующем перезапуске, когда она запросит кодовую фразу. Поскольку шифрование является «отраслевым стандартом», вам лучше иметь незашифрованную резервную копию или приготовиться заплатить выкуп, если злоумышленник попросит об этом.
Это не удобно использовать как разработчик или администратор базы данных, но стоит знание как администратор базы данных, заботящийся о безопасности.
Если я неправильно процитировал доклад и ошибся, дайте мне знать, и я копну глубже.