Просторы интернета

19 Февраль 2015
Earlier
Вт, Июл 31, 2012
On our production servers we have simple function with result_cache, like this:
create or replace function f_rc(p_id number) return number result_cache
is
ret number;
begin
select t.val into ret from rc_table t where t.id=p_id;
return ret;
exception
when no_data_found then
[...]
Source: www.xt-r.com
Сб, Июл 21, 2012
Тестовая таблица:
create table tclob(c clob);

Что будет выведено кодом из нижеследующих блоков с rollback и без:
declare
cl1 clob;
cl2 clob;
cl3 clob;
cl4 clob;
begin
cl1:='1';
insert into tclob values(cl1) returning c into cl2;
[...]
Source: www.xt-r.com
Сб, Июл 14, 2012
Теперь у нас полная семья - и доча и сын :)
Уррррррррраааааа! :) [...]
Source: www.xt-r.com
Сб, Июн 30, 2012
Проблема эта в общем-то старая, но только сейчас благодаря книге "Oracle Core" Джонатана Льюиса удалось узнать в чем собственно проблема и справиться с ней.
Цитата из главы "Latches for lock":

If the enqueue resource is in place already, then pick a row from the relevant enqueue structure (x$ksqeq, [...]
Source: www.xt-r.com
Ср, Июн 27, 2012
Увидев новые пару строк на 11.2.0.3 в списке хинтов(V$SQL_HINT), решил свести их описания в одну удобную заметку, попутно попытавшись разобраться в них.
Описание до конца еще не закончено, постараюсь сделать это на днях.

Cписок хинтов добавленных в 11g
NAMEINVERSEVERSIONFULL_OUTER_JOIN_TO_OUTERNO_FULL_OUTER_JOIN_TO_OUTER11.2.0.3 OUTER_JOIN_TO_ANTINO_OUTER_JOIN_TO_ANTI11.2.0.3TABLE_LOOKUP_BY_NLNO_TABLE_LOOKUP_BY_NL11.2.0.2USE_HASH_GBY_FOR_PUSHDOWNNO_USE_HASH_GBY_FOR_PUSHDOWN11.2.0.2XDB_FASTPATH_INSERTNO_XDB_FASTPATH_INSERT11.2.0.2APPEND_VALUESNOAPPEND11.2.0.1COALESCE_SQNO_COALESCE_SQ11.2.0.1CONNECT_BY_ELIM_DUPSNO_CONNECT_BY_ELIM_DUPS11.2.0.1[...]
Source: www.xt-r.com
Ср, Июн 13, 2012
В документации к dbms_random сказано: It will automatically initialize with the date, user ID, and process ID if no explicit initialization is performed.Из данной фразы не очевидно, какой "process id" будет использоваться для инициализации в случае параллельного выполнения, поэтому приведу наглядный пример, показывающий независимость генератора dbms_random от "process id" [...]
Source: www.xt-r.com
Пт, Май 18, 2012
Эта заметка посвящена известному факту о низкой производительности обработки исключений.
Да, действительно, обработка исключений достаточно медленна, однако, не стоит сразу же пытаться избегать их везде, где только можно, да еще и любыми способами. Например, часто вижу как их пытаются избегать даже в случаях поиска по первичному ключу c минимальной [...]
Source: www.xt-r.com
Сб, Апр 28, 2012
Многие знают о том, что oracle при необходимости сам создает доменные типы, например, когда используют тип объявленный в пакете(до 11g их можно было увидеть в dba_objects с именем like 'PLSQL%').

Факт 1
Точно так же он поступает и при вызове агрегатной функции collect.
-- Сначала проверим есть ли [...]
Source: www.xt-r.com
Сб, Апр 21, 2012
Начиная с 11.2.0.1 появилась новая строка "buffer sort" в планах с for update.
Пример:
DB11G/XTENDER> explain plan for
2 select *
3 from t_for_update
4 where
5 id=1
6 and dt [...]
Source: www.xt-r.com
Сб, Апр 21, 2012

Давно хотел написать о минусах использования "a member of b" перед обычными старыми вариантами вроде a in (select column_value from table(b)).
Резюме: "member of" в sql не умеет хорошо работать с индексами и использовать его желательно только в pl/sql - в этом случае по производительности практически одинаков с собственной [...]
Source: www.xt-r.com
Ср, Апр 18, 2012

Очередная задачка показалась мне интересной: Oracle очень плохо работает с временными таблицами(gtt - global temporary tables) в параллели.

Вообще у gtt в параллели в 11g куча ограничений, а до этого вообще запрещены:
10.2: Restrictions on Temporary Tables:
Parallel DML and parallel queries are not supported for [...]

Source: www.xt-r.com
Вс, Апр 08, 2012
Используйте PL/Scope для анализа вашего PL/SQL кода

С момента первого релиза PL/SQL, Oracle предоставляет набор представлений позволяющих разработчику получать информацию о PL/SQL объектах. Эти представления помогают нам понимать и анализировать наш код. Oracle Database 11g предоставляет еще более мощный аналитический инструмент - PL/Scope, собирающий информацию обо всех идентификаторах в [...]

Source: www.xt-r.com
Пн, Апр 02, 2012
Анализ сжатия производился на двух таблицах с количеством 12314345 и 9759284 записей и обьемом данных до сжатия 220 и 1080 мегабайт соответственно. Измерение производительности производилось командой select count(1) from table. Сервер базы данных версии 11.1.0.7 на операционной системе AIX.

До сжатия среднее время выполнения запросов составляло 17.69 и 13.9 [...]
Source: atyshenko.blogspot.com
Пн, Мар 26, 2012
Various techniques for querying and manipulating long columns. July 2010 (updated March 2012) [...]
Source: www.oracle-developer.net
Чт, Мар 22, 2012
Сегодня очень удивился заметив, что вызов "username:=user;" и "select user into username from dual;" одинаковы по времени выполнения, в отличие от десятикратной разницы dt:=sysdate и select sysdate into dt from dual;. Оказалось все просто, стоило лишь поглядеть трассировку или поглядеть код пакета sys.standard: PL/SQL-ный USER содержит внутри рекурсивный запрос c [...]
Source: www.xt-r.com
Вт, Мар 13, 2012
Каким же сложным может оказаться для многих решение простейшей задачи: определение наличия подстроки в строке, но в немного нестандартной ситуации.

Задача: выбрать из таблицы строки, в которых поле попадает в список значений, перечисленных в строке в виде набора значений через запятую.

Пример:



SQL> create table [...]
Source: oraclemaniacs.blogspot.ru
Пн, Мар 12, 2012
На днях, в поисках способа оптимизировать долгоиграющую процедуру расчета одной модели наткнулся в очередной раз на сравнение COALESCE против NVL.
Для тех, кто не в курсе, у Oracle есть следующие SQL-функции для обработки значений NULL:
NVL(expr1, expr2) – в случае, если expr1 IS NOT NULL, выводится expr1, в противном случае [...]
Source: oraclemaniacs.blogspot.ru
Вс, Мар 11, 2012
Невероятно, но, проскочила информация о том, что Oracle в версии СУБД 12c введет конструкцию для ограничения выдачи, являющуюся аналогом TOP в MS SQL Server или LIMIT в MySQL:
In Database 12c, to limit the number of rows in a query can be simplified by ANSI fetch first/offset keyword via [...]
Source: oraclemaniacs.blogspot.ru
Ср, Ноя 09, 2011
Generate and read TKProf and OraSRP reports in a single SQL*Plus window (or other IDE of choice) using preprocessor external tables. November 2011 [...]
Source: www.oracle-developer.net
Ср, Ноя 02, 2011
Начиная с 10-ой версии СУБД Oracle содержит такой инструмент восстановления случайно удаленных таблиц как корзина (recycle bin), хорошо известный пользователям Windows, MacOS и других операционных систем. При удалении таблицы и их индексы не стираются с диска физически, а специальным образом переименовываются Ораклом, т.е. перемещаются в корзину.

Посмотреть содержимое корзины [...]
Source: OracleForBeginners
Пт, Окт 28, 2011
Предыстория
Мигрировали базу на новый сервер одновременно с обновлением версии Oracle (10.2 -> 11.2). Было решено использовать дамп для переноса, т.к. так уж сложилось, что на исходной базе размер блока был нестандартный (6К) и клонирование было невозможно. Кроме того, клонирование, даже если бы оно работало, занимало лишь на [...]
Source: oraclemaniacs.blogspot.ru
Сб, Окт 22, 2011
A variation on Tom Kyte's invaluable RUNSTATS utility that compares the resource consumption of two alternative units of work. Designed to work under constrained developer environments and builds on the original with enhancements such as "pause and resume" functionality, time model statistics and the option to report on specific statistics. [...]
Source: www.oracle-developer.net
Сб, Окт 22, 2011
A utility to add parent ID and execution order information to plans reported by DBMS_XPLAN. XPlan includes DISPLAY, DISPLAY_CURSOR and DISPLAY_AWR functionality for use in exactly the same way as the DBMS_XPLAN equivalents. Supports versions from 10g onwards. ***Update*** Now available in two formats: 1) as a PL/SQL package and [...]
Source: www.oracle-developer.net
Пт, Окт 21, 2011
Попробуем новый интерфейс Blogspot. На первый взгляд совсем необычно, но попробую, может оказаться интересным. [...]
Source: oraclemaniacs.blogspot.ru
Чт, Окт 06, 2011
A variation on Tom Kyte's invaluable RUNSTATS utility that compares the resource consumption of two alternative units of work. Designed to work under constrained developer environments and builds on the original with enhancements such as "pause and resume" functionality, time model statistics and the option to report on specific statistics. [...]
Source: www.oracle-developer.net
Чт, Окт 06, 2011
A variation on Jonathan Lewis's SNAP_MY_STATS package to report the resource consumption of a unit of work between two snapshots. Designed to work under constrained developer environments, this version has enhancements such as time model statistics and the option to report on specific statistics. ***Update*** Now available in two formats: [...]
Source: www.oracle-developer.net
Вт, Окт 04, 2011
A utility to add parent ID and execution order information to plans reported by DBMS_XPLAN. XPlan includes DISPLAY, DISPLAY_CURSOR and DISPLAY_AWR functionality for use in exactly the same way as the DBMS_XPLAN equivalents. Supports versions from 10g onwards. ***Update*** Now available in two formats: 1) as a PL/SQL package and [...]
Source: www.oracle-developer.net
Ср, Сен 21, 2011
Многие из тех, кому по той или иной причине приходится администрировать СУБД Oracle на платформе Windows Server, кто переехал на 64-битную платформу, были неприятно удивлены, что такая простая штука как hsodbc теперь не работает (касается версий Oracle выше 9.2).

Весьма неприятное известие для тех, кто собирает данные из множества [...]
Source: oraclemaniacs.blogspot.ru
Комментирование отключено.