?

Log in

Зачем нужны Undo?

В недавней нити обсуждения на OTN-форуме задавался вопрос:

«… так как в redo содержится как прошлая, так и текущая информация, почему нельзя использовать redo-логи для получения этой информации? Зачем нужны undo, если redo уже содержит всю необходимую информацию.»

 

Нить обсуждения содержит некоторые интересные ответы, но по большей части они описывают то, как работают undo и redo вместо объяснения, почему проектировщики Oracle corp. выбрали именно тот способ по реализации undo и redo, который они выбрали. Поделюсь своими мыслями о том, зачем [естественно, автор статьи – не я].

Далее...Свернуть )

 

JOIN. Новый синтаксис.

В Oracle 9i Database была введена поддержка синтаксиса SQL92 join. Этот поддерживаемый синтаксис позволяет вам явно определять условия соединения во фразе FROM предложения SELECT. Синтаксис join стандарта SQL92 поддерживался другими базами данных на протяжении многих лет, однако стал новым для тех из нас, для кого в центре внимания был только Oracle. Совсем недавно [см. дату выхода статьи] при изучении поведения SQL-предложений с использованием нового (для Oracle) синтаксиса, мне пришлось значительно подправить свою умозрительную модель (mental model) соединений, оформив новое понимание того, что представляет собой условие соединения. Я был очень удивлён, возможно вы тоже сильно удивитесь. Прочтите и изучите тонкую, но важную для понимая сторону этого нового синтаксиса.

 

Метки:

Начиная с релиза 6, Oracle начал поддерживать ограниченную форму левого внешнего соединения [left outerjoin], использующую специфическую для Oracle форму записи. В 9i Oracle ввёл поддержку синтаксиса ANSI SQL 92/99 для внутренних соединений [inner joins] и различных типов внешних соединений [outerjoin]. Формы записи для левого внешнего соединения Oracle и для ANSI SQL 92/99 не равнозначны, вторая – более точная.

Оказывается, возникает определённая путаница, касающаяся взаимозаменяемости внешнего соединения в форме ANSI (далее – ANSI-соединения) и синтаксисом внешнего соединения Oracle. Нижеприведённые примеры показывают равносильность и её отсутствие между этими двумя формами записи.

Далее...Свернуть )

 


Метки:

Logical IO и buffer handle

[В квадратных скобках я ввожу свои поясняющие фразы, перевод фраз или фразы из оригинала]

Часто при оценке производительности системы немало внимания уделяется изучению количества операций logical I/O [как количества обращений к буферизованным блокам данных, или, как принято говорить «по-русски» – логическим чтениям блоков], при этом logical I/O рассматривается в качестве грубой оценки затрат CPU. Такой подход нельзя назвать безосновательным, но он может вводить в заблуждение.

Далее...Свернуть )

Когда 2+2=5? (III часть)

(продолжение)

Дополнение (от 7-ого апреля 2006 г.)

Одна из интересных выгод от критики опубликованных в Интернете материалов – это, по-видимому, более качественный отклик по e-mail, в котором, люди могут задавать вопросы. И некоторые из них требуют значительно меньших дополнительных усилий для ответа в смысле широкого распространения правильного взгляда по теме вопроса. Я получил письмо по e-mail на тему этой заметки:

Далее...Свернуть )

Когда 2+2=5? (II часть)

(продолжение)


Дополнение (от 1-ого апреля 2006 г.)

 

Я вижу, что первоначальная статья в блоге была изменена и отражает теперь наблюдения, сделанные в моей вышеприведённой статье. Блоггер делает следующие комментарии:

 

В блоге другого блогового пространства [blogspace] один из экспертов призвал меня к данному вступлению. Я могу сказать только о том, что мы видели при проведении наших тестов. Во-первых, мы видели снижение полных табличных сканирований в представлении V$SQL_PLAN вместе с уменьшением обработанных байтов.

Далее...Свернуть )

spool temp

 

drop table t1;

 

create table t1 as

select * from all_objects

where rownum <= 3000;

 

 

Далее...Свернуть )

Когда 2+2=5? (I часть)

Март 2006

 Только что мне переслали заметку о сообщении в блоге, на которое появились следующие комментарии о запросе с предикатом «where 1 = 2»:

 

Поскольку 1 никогда не равно 2, вы никогда не получите результата запроса, но полное сканирование таблицы [full table scan] всё равно произойдёт. Тестирование на 10gR1 версии 10.1.0.4 и на 9iR2 версии 9.2.0.4 показало, что если не создавать bitmap-индекс на таблице, то использование конструкции «WHERE 1 = 2» приводит к полному сканированию таблицы.

 

 

Далее...Свернуть )

Перевод статьи «Monitoring Open and Cached Cursors» от Natalka Roshak, декабрь 2005


Предисловие.

Здесь слово «разбор» используется в смысле parse, соответственно «мягкий разбор» и «жёсткий разбор» – «soft parse» и «hard parse».

[В квадратных скобках я ввожу свои поясняющие фразы, перевод фраз или фразы из оригинала]

 

Чуть ли не каждый администратор БД имел дело с ошибкой ORA-01000, «Maximum open cursors exceeded» [превышено максимальное число открытых курсоров]. В этой статье будут обсуждаться параметры инициализации, которые влияют на открытые курсоры, разница между открытыми и кэшированными курсорами, закрытие курсоров и, собственно, мониторинг открытых и кэшированных курсоров.

Далее...Свернуть )

 



Выражение «clean»

Предисловие.

Несколько замечаний относительно данной статьи:

·        перевод не дословный и не литературный, а допускающий языковые (надеюсь, не смысловые) вольности, то есть, приближенный к тому, чтобы максимально раскрыть тему;

·        в квадратных скобках я ввожу свои поясняющие фразы (перевод фраз);

·        слова «процесс» и «операция» к объясняемым в статье выражениям применяются в качестве синонимов.

  

Существует некоторая путаница в понимании выражения «clean» в среде Oracle-специалистов. В этой небольшой заметке приводятся разъяснения относительно случаев применения этого выражения к блокам данных Oracle [далее – просто «блок»]. Рассмотрим все пять существующих терминов, связанных с этим выражением: 

  1. clean
  2. commit cleanout
  3. block cleanout
  4. delayed block cleanout
  5. delayed logging block cleanout

Далее...Свернуть )