<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21381265</id><updated>2024-08-29T04:48:09.346+03:00</updated><category term="Oracle"/><category term="разное"/><category term="FAQ"/><category term="Покупки и продажи"/><category term="о жизни"/><category term="фишки"/><category term="security"/><category term="Just for Fun"/><category term="bug"/><category term="News"/><category term="Linux"/><category term="SQL.RU"/><category term="запомнить"/><category term="Blogger"/><category term="Oracle Metalink"/><category term="Oracle vs SAP"/><category term="Tom Kyte"/><category term="rman"/><category term="OpenSource"/><category term="проектирование"/><title type='text'>Oracle. Администрирование и разработка.</title><subtitle type='html'>Администрирование Oracle. Программирование на PL\SQL. А также все что касается лидера разработки корпоративного ПО.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>161</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21381265.post-239582511488212195</id><published>2012-03-13T15:55:00.000+04:00</published><updated>2012-03-13T15:57:24.251+04:00</updated><title type='text'>Закостенелость мышления</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Каким же сложным может оказаться для многих решение простейшей задачи: определение наличия подстроки в строке, но в немного нестандартной ситуации.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Задача:&lt;/b&gt; выбрать из таблицы строки, в которых поле попадает в список значений, перечисленных в строке в виде набора значений через запятую.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;
SQL&amp;gt; create table comparison (serialnum varchar2(10), 
                                   name varchar2(50));

SQL&amp;gt; insert into comparison values (&#39;TST0010021&#39;,&#39;Table 01&#39;);

SQL&amp;gt; insert into comparison values (&#39;MON0000001&#39;,&#39;Monitor&#39;);

SQL&amp;gt; insert into comparison values (&#39;COMP000002&#39;,&#39;Desktop computer&#39;);

SQL&amp;gt; insert into comparison values (&#39;COMP000003&#39;,&#39;Notebook&#39;);

SQL&amp;gt; insert into comparison values (&#39;COMP000004&#39;,&#39;Notebook for travel&#39;);

SQL&amp;gt; select * from comparison;

SERIALNUM&amp;nbsp; NAME
---------- --------------------
TST0010021 Table 01
MON0000001 Monitor
COMP000002 Desktop computer
COMP000003 Notebook
COMP000004 Notebook for travel&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
Самое простое решение &quot;в лоб&quot; - искать подстроку в строке, но большинство даже не подумает сделать обратное сравнение: не &quot;serialnum LIKE &#39;%MP%&#39;&quot;, а наоборот:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;SQL&amp;gt; var nums varchar2(33)

SQL&amp;gt; exec :nums := &#39;MON0000001,COMP000004,TST0010021&#39;

PL/SQL procedure successfully completed.

SQL&amp;gt; select * from comparison where :nums like &#39;%&#39;||serialnum||&#39;%&#39;;

SERIALNUM&amp;nbsp; NAME
---------- --------------------
TST0010021 Table 01
MON0000001 Monitor
COMP000004 Notebook for travel&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
Не говорите только, что в таком подходе огромное пространство для разработки SQL-инъекций. Это не так, если использовать связанные (bind) переменные. Но в любом случае, данный пример предназначен для демонстрации обратного сравнения.&lt;br /&gt;
&lt;br /&gt;
Не думайте шаблонами, разминайте мозги!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/239582511488212195/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/blog-post.html#comment-form' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/239582511488212195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/239582511488212195'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/blog-post.html' title='Закостенелость мышления'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-5027026280067966852</id><published>2012-03-12T11:48:00.000+04:00</published><updated>2012-03-20T16:39:28.391+04:00</updated><title type='text'>Производительность NVL против COALESCE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
На днях, в поисках способа оптимизировать долгоиграющую процедуру расчета одной модели наткнулся в очередной раз на сравнение COALESCE против NVL.&lt;br /&gt;
Для тех, кто не в курсе, у Oracle есть следующие SQL-функции для обработки значений NULL:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;NVL(expr1, expr2) – в случае, если expr1 IS NOT NULL, выводится expr1, в противном случае – expr2&amp;nbsp;&lt;/li&gt;
&lt;li&gt;NVL2 (expr1, expr2, expr3) - в случае, если expr1 IS NOT NULL, выводится expr2, в противном случае – expr3&lt;/li&gt;
&lt;li&gt;COALESCE (expr1, expr2, … exprN) – возвращает первый NOT NULL аргумент, т.е. для трех аргументов аналогично NVL(expr1,NVL(expr2, expr3))&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
По своей сути COALESCE с двумя параметрами полностью аналогичен NVL, однако COALESCE «умнее». NVL обязательно расчитывает оба аргумента перед выдачей результата, а COALESCE расчитывает аргументы в порядке проверки. Смотрим тесты на 10`000`000 проходах.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример 1.&lt;/b&gt; Статичные аргументы:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;SQL&amp;gt; 
BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF NVL(&#39;y&#39;,&#39;x&#39;)=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 0,562 seconds

BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF COALESCE(&#39;y&#39;,&#39;x&#39;)=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 0,156 seconds&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример 2.&lt;/b&gt; Первый аргумент вычисляемый, второй статичен:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;SQL&amp;gt; 
BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF NVL(sys_context(&#39;USERENV&#39;,&#39;HOST&#39;),&#39;x&#39;)=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 19,484 seconds

BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF COALESCE(sys_context(&#39;USERENV&#39;,&#39;HOST&#39;),&#39;x&#39;)=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 18,36 seconds&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пример 3.&lt;/b&gt; Оба аргумента вычисляемые:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;SQL&amp;gt; 
BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF NVL(sys_context(&#39;USERENV&#39;,&#39;HOST&#39;),sys_context(&#39;USERENV&#39;,&#39;HOST&#39;))=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 36,656 seconds

BEGIN
&amp;nbsp;&amp;nbsp;FOR i IN 1..10000000 LOOP
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF COALESCE(sys_context(&#39;USERENV&#39;,&#39;HOST&#39;),sys_context(&#39;USERENV&#39;,&#39;HOST&#39;))=&#39;x&#39; THEN
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END IF;
&amp;nbsp;&amp;nbsp;END LOOP;
END;
/

PL/SQL procedure successfully completed

Executed in 18 seconds&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
Цифры лучше любых слов показывают разницу.&lt;br /&gt;
&lt;br /&gt;
Но стоп! Почему только PL\SQL? Забыли про SQL?&lt;br /&gt;
&lt;br /&gt;
Нет, далее смотрим разные варианты при использовании запросов. В тестовой таблице 10`000`000 записей, в поле val1 25% значений NULL.&lt;br /&gt;
Для любителей использовать DECODE (ну не правильно это делать, неправильно!) вместо NVL или COALESCE примеры тоже добавлены. Кроме того для полной картины добавлен и вариант с CASE:
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;-- Статические параметры

SELECT MAX(nvl(val1, val2)) AS RESULT FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 13,297 seconds

SELECT MAX(coalesce(val1, val2)) AS RESULT FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 13,312 seconds

SELECT MAX(decode(val1, NULL, val2, val1)) AS RESULT FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 15,703 seconds

SELECT MAX(CASE 
             WHEN val1 IS NULL THEN
              val2
             ELSE
              val1
             END) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 8,766 seconds

-- Второй параметр вычисляемый

SELECT MAX(nvl(val1, dbms_random.value)) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 34,031 seconds

SELECT MAX(coalesce(val1, dbms_random.value)) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 16,828 seconds

SELECT MAX(decode(val1, NULL, dbms_random.value, val1)) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 19,688 seconds

SELECT MAX(CASE 
             WHEN val1 IS NULL THEN
              dbms_random.value
             ELSE
              val1
             END) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         4
 
Executed in 15,062 seconds

-- Оба параметра вычисляемые

SELECT MAX(nvl(nullif(round(dbms_random.value * 5), 3),
               dbms_random.value)) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         5
 
Executed in 91,313 seconds

SELECT MAX(coalesce(nullif(round(dbms_random.value * 5), 3),
                    dbms_random.value)) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         5
 
Executed in 72,016 seconds

SELECT MAX(decode(nullif(round(dbms_random.value * 5), 3),
                  NULL,
                  dbms_random.value,
                  nullif(round(dbms_random.value * 5), 3))) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         5
 
Executed in 123,844 seconds

SELECT MAX(CASE
             WHEN nullif(round(dbms_random.value * 5), 3) IS NULL THEN
              dbms_random.value
             ELSE
              nullif(round(dbms_random.value * 5), 3)
             END) AS RESULT
  FROM test_performance;
 
    RESULT
----------
         5
 
Executed in 121,797 seconds &lt;br /&gt;
&lt;/pre&gt;

&lt;b&gt;UPDATE:&lt;/b&gt;
Спасибо &lt;a href=&quot;https://profiles.google.com/117556985715321189607&quot;&gt;+Sayan Malakshinov&lt;/a&gt; за комментарии и &lt;a href=&quot;http://www.xt-r.com/2012/03/nvl-coalesce-concatenation.html&quot;&gt;отдельное сообщение с разъяснениями касательно бонусов NVL по сравнению с COALESCE&lt;/a&gt;. Основной смысл в том, что оптимизатор Oracle при построении плана запроса умеет разворачивать выполнение функции в конкатенацию с фильтрацией по каждому аргументу.
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/5027026280067966852/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/nvl-coalesce.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5027026280067966852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5027026280067966852'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/nvl-coalesce.html' title='Производительность NVL против COALESCE'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-3656220640182374837</id><published>2012-03-11T11:48:00.001+04:00</published><updated>2012-03-11T11:52:24.379+04:00</updated><title type='text'>СРОЧНО! Oracle вводит аналог TOP и LIMIT</title><content type='html'>Невероятно, но, проскочила информация о том, что Oracle в версии СУБД 12c введет конструкцию для ограничения выдачи, являющуюся аналогом TOP в MS SQL Server или LIMIT в MySQL:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
In Database 12c, to limit the number of rows in a query can be 
simplified by ANSI fetch first/offset keyword via Oracle SQL row 
limiting clause.&lt;br /&gt;
&lt;br /&gt;
For example, fetch the top 3 &quot;oldest&quot; employees:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;&amp;nbsp;select *&lt;br /&gt;
&amp;nbsp;from employees&lt;br /&gt;
&amp;nbsp;order by hire_date&lt;br /&gt;
&amp;nbsp;fetch first 3 rows only;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
And, keep the ties:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;&amp;nbsp;select *&lt;br /&gt;
&amp;nbsp;from employees&lt;br /&gt;
&amp;nbsp;order by hire_date&lt;br /&gt;
&amp;nbsp;fetch first 3 rows with ties;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Or skip the first 3 employees, what we need is rank 4 to 6:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;&amp;nbsp;select *&lt;br /&gt;
&amp;nbsp;from employees&lt;br /&gt;
&amp;nbsp;order by hire_date&lt;br /&gt;
&amp;nbsp;offset 3 rows&lt;br /&gt;
&amp;nbsp;fetch next 3 rows only;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
May be limiting row count is way too precise, percentage style is preferred sometime =)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;&amp;nbsp;select * &lt;br /&gt;
&amp;nbsp;from employees&lt;br /&gt;
&amp;nbsp;order by hire_date&lt;br /&gt;
&amp;nbsp;fetch first 10 percent rows only;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
 
  &amp;nbsp;Todd&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
Источник: &lt;a href=&quot;https://blogs.oracle.com/toddbao/entry/oracle_database_12c_row_limiting&quot;&gt;https://blogs.oracle.com/toddbao/entry/oracle_database_12c_row_limiting&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/3656220640182374837/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/oracle-top-limit.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/3656220640182374837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/3656220640182374837'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2012/03/oracle-top-limit.html' title='СРОЧНО! Oracle вводит аналог TOP и LIMIT'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-992593734956644243</id><published>2011-10-28T12:10:00.000+04:00</published><updated>2012-03-11T11:22:33.632+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FAQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="запомнить"/><category scheme="http://www.blogger.com/atom/ns#" term="фишки"/><title type='text'>Как провести полное обновление матвью на узком канале?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvoPiIvtXhoXbEU6G4-kQX-nvEz2bqTUpeHxHHTjFpNivKexhwLoXpKBG4xGGf-sEla-3b3itYzVWoTM6ygTKbp8cXV7T6YYLuSGoSPNeI299DEXtxrK-T75viHJ_G9w-2Lj9T-Q/s1600/pl_RS_SQL_NEW_detail_1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; ilo-full-src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvoPiIvtXhoXbEU6G4-kQX-nvEz2bqTUpeHxHHTjFpNivKexhwLoXpKBG4xGGf-sEla-3b3itYzVWoTM6ygTKbp8cXV7T6YYLuSGoSPNeI299DEXtxrK-T75viHJ_G9w-2Lj9T-Q/s1600/pl_RS_SQL_NEW_detail_1.png&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvoPiIvtXhoXbEU6G4-kQX-nvEz2bqTUpeHxHHTjFpNivKexhwLoXpKBG4xGGf-sEla-3b3itYzVWoTM6ygTKbp8cXV7T6YYLuSGoSPNeI299DEXtxrK-T75viHJ_G9w-2Lj9T-Q/s1600/pl_RS_SQL_NEW_detail_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;Предыстория&lt;/b&gt;&lt;br /&gt;
Мигрировали базу на новый сервер одновременно с обновлением версии Oracle (10.2 -&amp;gt; 11.2). Было решено использовать дамп для переноса, т.к. так уж сложилось, что на исходной базе размер блока был нестандартный (6К) и клонирование было невозможно. Кроме того, клонирование, даже если бы оно работало, занимало лишь на 15 минут меньше времени чем экспорт/импорт, время поджимало, а этими 15 минутами можно было пожертвовать.&lt;br /&gt;
Тестовый перенос данных прошел нормально, но когда совершил реальный переезд на новый сервак, обнаружил страшное (увы, лишь спустя часа два) - данные в снэпшотах не обновляются, основанная на матвью репликация не работает, а вместо самих матвью на новой базе имеются лишь таблицы с теми же именами. Мой прокол, надо решать, перезаливка не помогла, в дампе данные лишь о таблицах, старый сервер уже отключен. Пересоздание 90% материализованных представлений удалось, но оставались 3 таких, которые занимают больше 1Гб, а реплицируются с удаленного сервера по забитому каналу, средняя скорость по которому иногда доходит до 200КБит/с. Нереально...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Задача&lt;/b&gt;&lt;br /&gt;
В итоге стала задача: сделать complete refresh для соответствующих матвью, master table, для которых занимают более 1Гб, а канал узкий до нельзя. Как?&lt;br /&gt;
Для простоты обозначим следующие названия:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;исходная база: master_db&lt;/li&gt;
&lt;li&gt;хост исходной базы: master_host&lt;/li&gt;
&lt;li&gt;целевая база: target_db&lt;/li&gt;
&lt;li&gt;хост целевой базы: target_host&lt;/li&gt;
&lt;li&gt;линк с целевой базы на исходную: repl_link&lt;/li&gt;
&lt;li&gt;таблицы пусть называются passes, acts&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Решение&lt;/b&gt;&lt;br /&gt;
Последовательность следующая:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;i&gt;(&lt;/i&gt;&lt;i&gt;если были матвью)&lt;/i&gt; удалить матвью на целевой базе;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;(&lt;/i&gt;&lt;i&gt;в моем случае либо mview on prebuilt table)&lt;/i&gt; удалить таблицы на целевой базе;&lt;/li&gt;
&lt;li&gt;сделать дамп таблиц на исходной базе;&lt;/li&gt;
&lt;li&gt;сжать дамп, передать на целевой сервер;&lt;/li&gt;
&lt;li&gt;залить таблицы на целевую базу;&lt;/li&gt;
&lt;li&gt;создать матвью на целевой базе;&lt;/li&gt;
&lt;li&gt;обновить с FAST REFRESH.&lt;/li&gt;
&lt;/ul&gt;
Если подробнее, то выглядит это так:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;i&gt;(если были матвью)&lt;/i&gt; Удаление матвью&lt;br /&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt; &lt;pre class=&quot;brush:sql&quot;&gt;MASTER_DB SQL&amp;gt; drop materialized view passes;&lt;/pre&gt;
  &lt;/li&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;MASTER_DB SQL&amp;gt; drop materialized view acts;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;i&gt;(в моем случае&lt;/i&gt;&lt;i&gt; либо mview on prebuilt table&lt;/i&gt;&lt;i&gt;)&lt;/i&gt; Удаление таблиц &lt;br /&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;MASTER_DB SQL&amp;gt; drop table passes;&lt;/pre&gt;
  &lt;/li&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;MASTER_DB SQL&amp;gt; drop table acts;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Делаем дамп&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre class=&quot;brush:bash&quot;&gt;MASTER_HOST#&amp;nbsp; expdp username/password directory=data_pump_dir dumpfile=replication.dmp tables=(passes,acts)&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Сжатие и передача&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;сжимаем дамп архиватором, неважно каким, в моем случае 1Гб содержал по большей части цифровые и строковые значения, поэтому ужалось до 14Мб&lt;/li&gt;
&lt;li&gt;передаем на target_host обычным копированием и складываем в директорию, куда указывает DATA_PUMP_DIR в TARGET_DB&lt;/li&gt;
&lt;li&gt;распаковываем архив на целевом сервере&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Заливка дампа (необходимо залить только таблицы и, возможно, индексы, т.к. триггеры и констрейнты нам тут не нужны)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre class=&quot;brush:bash&quot;&gt;TARGET_HOST#&amp;nbsp; impdp username/password directory=data_pump_dir dumpfile=replication.dmp tables=(passes,acts) include=TABLE,INDEX&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Создание матвью&lt;/li&gt;
&lt;ul style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;TARGET_DB SQL&amp;gt;&amp;nbsp; create materialized view acts on prebuilt table refresh fast on demand as select * from acts@repl_link;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;TARGET_DB SQL&amp;gt;&amp;nbsp; create materialized view passes on prebuilt table refresh fast on demand as select * from passes@repl_link;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Обновление матвью&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;pre class=&quot;brush:sql&quot;&gt;exec dbms_mview.refresh(&#39;acts,passes&#39;,&#39;fast&#39;);&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
В итоге мы получаем полностью обновленные MATERIALIZED VIEW на целевой базе, а траффика на это ушло примерно в 100 раз меньше чем при обновлении COMPLETE REFRESH.&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #660000;&quot;&gt;&lt;b&gt;Уместное замечание от SergINI:&lt;/b&gt; можно опустить пункт &quot;сжатие&quot; при использовании Advanced Compression, т.к. в этом случае появляется возможность использовать DataPump с параметром COMPRESSION в значениях DATA_ONLY либо ALL, что позволит сжать дамп средствами Oracle. Кроме того, весь этот процесс значительно упрощается при использовании DataPump через DBLink&lt;/span&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;-- &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;P.S: что касается новых шаблонов, вернулся к старому виду, и проще и статистику по просмотрам будет реальную показывать, да и виджеты вернутся на место.&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/992593734956644243/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/10/blog-post.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/992593734956644243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/992593734956644243'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/10/blog-post.html' title='Как провести полное обновление матвью на узком канале?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvoPiIvtXhoXbEU6G4-kQX-nvEz2bqTUpeHxHHTjFpNivKexhwLoXpKBG4xGGf-sEla-3b3itYzVWoTM6ygTKbp8cXV7T6YYLuSGoSPNeI299DEXtxrK-T75viHJ_G9w-2Lj9T-Q/s72-c/pl_RS_SQL_NEW_detail_1.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-5562136995198353390</id><published>2011-10-21T11:13:00.000+04:00</published><updated>2011-10-28T12:19:31.316+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>Новый интерфейс для блогов на Blogspot</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Попробуем новый интерфейс Blogspot. На первый взгляд совсем необычно, но попробую, может оказаться интересным.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/5562136995198353390/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/10/blogspot.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5562136995198353390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5562136995198353390'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/10/blogspot.html' title='Новый интерфейс для блогов на Blogspot'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-5439207955819086970</id><published>2011-09-21T13:34:00.002+04:00</published><updated>2012-04-05T10:25:42.404+04:00</updated><title type='text'>Oracle Gateway 11.2 для Oracle Database 10.2 для WinX64</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;
&lt;img height=&quot;225&quot; ilo-full-src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAn0WuDfXBo2bIyCcPl-7yELyvZjMrIFrCP9jG04scJC7kIzCaSN2nVeqwYA11Skctr2XwTBHByEc9EEdhpn4Uj-nCedBOFNm3gmaW9AhPmdq6wJkNgENJAy6Dv8qRs_TCfc-ZIQ/w335-h236-k/image1.png&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAn0WuDfXBo2bIyCcPl-7yELyvZjMrIFrCP9jG04scJC7kIzCaSN2nVeqwYA11Skctr2XwTBHByEc9EEdhpn4Uj-nCedBOFNm3gmaW9AhPmdq6wJkNgENJAy6Dv8qRs_TCfc-ZIQ/w335-h236-k/image1.png&quot; width=&quot;320&quot; /&gt; &lt;/div&gt;
Многие из тех, кому по той или иной причине приходится администрировать СУБД Oracle на платформе Windows Server, кто переехал на 64-битную платформу, были неприятно удивлены, что такая простая штука как hsodbc теперь не работает (касается версий Oracle выше 9.2).&lt;br /&gt;
&lt;br /&gt;
Весьма неприятное известие для тех, кто собирает данные из множества сторонних баз, MS SQL Server, DB2 и даже, если у вас кто-то предоставляет данные в виде регулярно обновляемого Excel-файла или базы в Access или dBase, было проще всего организовать ODBC-коннект через HSODBC. Но халява кончилась...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Итак, какие у нас есть возможности решения данной проблемы:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;рядом с Oracle Database 10.1-11.2 для Windows x64 поставить 32-битную версию Oracle Database, настроить в ней hsodbc, настроить Listener на нестандартный порт;&lt;/li&gt;
&lt;li&gt;извращаться с инициацией передачи данных со стороны источника;&lt;/li&gt;
&lt;li&gt;установить Oracle Database Gateway 11.2 и организовать коннект через него.&lt;/li&gt;
&lt;/ul&gt;
Сейчас речь пойдет о последнем варианте как наиболее правильном. Хотя то, что этот вариант наиболее правильный, не значит, что с ним не будет проблем.&lt;br /&gt;
&lt;br /&gt;
Последовательность действий следующая:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Качаем дистрибутив Oracle Database Gateway 11.2 отсюда: &lt;a href=&quot;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html&quot;&gt;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Устанавливаем Gateway &lt;b&gt;в отдельный Oracle Home&lt;/b&gt;, назовем его OraGtw_home. При установке обязательно выбираем Gateway for ODBC и Net Listener.&lt;/li&gt;
&lt;li&gt;Правим системную переменную PATH так, чтобы путь к OraGtw_home\bin находился после пути к bin от основной базы. &lt;/li&gt;
&lt;li&gt;Настраиваем ODBC-коннектор для 64-битной системы: &lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Настраиваем системный DSN через классическую админку ODBC.&lt;/li&gt;
&lt;li&gt;Запускаем regedit и ищем ключ созданного DSN, пусть это будет MSDB, находиться он будет примерно по такому пути: HKLM\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\MSDB&lt;/li&gt;
&lt;li&gt;Экспортируем этот ключ и редактируем полученный файл и убираем из пути ключа Wow6432Node чтобы путь получился примерно следующим: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\MSDB&lt;/li&gt;
&lt;li&gt;Теперь необходимо этот ключ импортировать, но не делайте это по привычке двойным щелчком на reg-файле, он запихнет ключ на исходное место в Wow6432Node, делать это надо через File-&amp;gt;Import в regedit.&lt;/li&gt;
&lt;li&gt;ODBC-коннектор готов.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Настраиваем гетерогенный сервис: &lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Идем в OraGtw_home\hs\admin и создаем файл initmsdb.ora с одной лишь строкой:&lt;br /&gt;&lt;blockquote class=&quot;&quot;&gt;
HS_FDS_CONNECT_INFO=MSDB&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Настраиваем Listener (тут нет разницы, какой использовать, из Oracle Home от БД или из OraGtw_home, я использовал от БД) как при классической гетерогенке:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Имя листенера должно отличаться от основного, скажем LISTENERGTW&lt;/li&gt;
&lt;li&gt;HOST=&amp;lt;имя хоста с гейтом&amp;gt; &lt;/li&gt;
&lt;li&gt;PORT=&amp;lt;отличный от порта основного слушателя, например 1522&amp;gt;&lt;/li&gt;
&lt;li&gt;SID_NAME=MSDB&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;В итоге у нас должен получиться такой конфиг (либо его часть при использовании уже существующего):&lt;br /&gt;&lt;blockquote&gt;
&lt;span style=&quot;color: red;&quot;&gt;# Заменить выделенное на свои значения &lt;/span&gt;&lt;br /&gt;
LISTENERGTW =&lt;br /&gt;
&amp;nbsp; (DESCRIPTION_LIST =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (DESCRIPTION =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = &lt;span style=&quot;color: red;&quot;&gt;&amp;lt;имя хоста&amp;gt;&lt;/span&gt;)(PORT = &lt;span style=&quot;color: red;&quot;&gt;&amp;lt;порт&amp;gt;&lt;/span&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp; )&lt;br /&gt;
&lt;br /&gt;
SID_LIST_LISTENERGTW=&lt;br /&gt;
&amp;nbsp; (SID_LIST=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SID_DESC=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SID_NAME=&lt;span style=&quot;color: red;&quot;&gt;msdb&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ORACLE_HOME=&lt;span style=&quot;color: red;&quot;&gt;&amp;lt;OraGtw_home&amp;gt;&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (PROGRAM=&lt;span style=&quot;color: red;&quot;&gt;&amp;lt;OraGtw_home&amp;gt;&lt;/span&gt;\bin\dg4odbc.exe )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp; )&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;lsnrctl start LISTENERGTW &lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Настраиваем подключение из Oracle Database:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Делаем запись в TNSNAMES.ORA в Oracle Home базы данных:&lt;br /&gt;&lt;blockquote&gt;
MSDB.CPCPIPE.RU =&lt;br /&gt;
&amp;nbsp; (DESCRIPTION =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = &lt;span style=&quot;color: red;&quot;&gt;&amp;lt;имя хоста&amp;gt;&lt;/span&gt;)(PORT = &lt;span style=&quot;color: red;&quot;&gt;&amp;lt;порт&amp;gt;&lt;/span&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONNECT_DATA =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SID = &lt;span style=&quot;color: red;&quot;&gt;msdb&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (HS = OK)&lt;br /&gt;
&amp;nbsp; )&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt; Создаем Database Link:&lt;br /&gt;&lt;blockquote&gt;
CREATE DATABASE LINK &lt;span style=&quot;color: red;&quot;&gt;msdb_link&lt;/span&gt; CONNECT TO&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;msuser &lt;/span&gt;IDENTIFIED BY &lt;span style=&quot;color: red;&quot;&gt;mspass&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USING &#39;&lt;span style=&quot;color: red;&quot;&gt;msdb&lt;/span&gt;&#39;;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Проверяем:&lt;br /&gt;SQL&amp;gt; select * from dual@&lt;span style=&quot;color: red;&quot;&gt;msdb_link&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;DUMMY&lt;br /&gt;-----&lt;br /&gt;X&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Возможные проблемы&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ситуация 1&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Ошибка: &lt;br /&gt;
ORA-28513: internal error in heterogeneous remote agent&lt;br /&gt;
ORA-02063: preceding line from MSDB_LINK&lt;/li&gt;
&lt;li&gt;Источник проблемы в неправильной настройке гетерогенного сервиса, как правило, это означает, что:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;в OraGtw_home\hs отсутствует файл init&amp;lt;SID&amp;gt;.ora, т.е. в нашем примере initmsdb.ora;&lt;/li&gt;
&lt;li&gt;либо в этом файле указан неверный DSN;&lt;/li&gt;
&lt;li&gt;либо DSN отсутствует в настройках ODBC для 64-битных приложений.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Детали проблемы прекрасно видны в логах listenergtw.log.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Ситуация 2&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Ошибка: &lt;br /&gt;
ORA-28546: connection initialization failed, probable Net8 admin error&lt;br /&gt;ORA-02063: preceding line from TEST_NAVI&lt;/li&gt;
&lt;li&gt;Источник проблемы где-то в TNSNAMES, скорее всего просто нужно пересчитать скобки в конфигурационном файле и перепроверить положение записи (HS=OK).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;i style=&quot;color: #cc0000;&quot;&gt;Если кто знает способ редактирования ODBC для 64-битных программ без возни с реестром, пожалуйста, подскажите.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Буду рад, если это поможет кому-нибудь безболезненно переехать с HSODBC на Database Gateway for ODBC.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/5439207955819086970/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/09/oracle-gateway-112-oracle-database-102.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5439207955819086970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5439207955819086970'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/09/oracle-gateway-112-oracle-database-102.html' title='Oracle Gateway 11.2 для Oracle Database 10.2 для WinX64'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAn0WuDfXBo2bIyCcPl-7yELyvZjMrIFrCP9jG04scJC7kIzCaSN2nVeqwYA11Skctr2XwTBHByEc9EEdhpn4Uj-nCedBOFNm3gmaW9AhPmdq6wJkNgENJAy6Dv8qRs_TCfc-ZIQ/s72-w335-h236-c-k/image1.png" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-7613242689454173906</id><published>2011-06-01T15:07:00.000+04:00</published><updated>2011-06-01T15:07:42.305+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Just for Fun"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Деление на ноль? Легко!</title><content type='html'>Q: can oracle divide by zero?&lt;br /&gt;
A: no&lt;br /&gt;
Q: are you absolutely sure?&lt;br /&gt;
A: yes&lt;br /&gt;
Q: then why does this work?&lt;br /&gt;
select 1 from dual where exists (select 1/0 from dual)&lt;br /&gt;
A: ????&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://laurentschneider.com/wordpress/2007/07/oracle-certified-sql-expert.html&quot;&gt;Отсюда&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
P.S: реально работает и я действительно не понимаю, почему, вернее догадываюсь, но...</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/7613242689454173906/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/06/blog-post.html#comment-form' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/7613242689454173906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/7613242689454173906'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/06/blog-post.html' title='Деление на ноль? Легко!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-6901789854736125597</id><published>2011-04-18T17:57:00.001+04:00</published><updated>2012-03-11T11:37:37.954+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Just for Fun"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="запомнить"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><category scheme="http://www.blogger.com/atom/ns#" term="фишки"/><title type='text'>ROWNUM в разных ситуациях</title><content type='html'>А знаете ли вы что... функция &lt;b&gt;ROWNUM &lt;/b&gt;в разных ситуациях ведет себя по-разному. Так вот, не так давно наткнулись на интересный момент, о котором расскажу ниже.&lt;br /&gt;
&lt;br /&gt;
Все, кто хоть раз пытался использовать &lt;b&gt;ROWNUM &lt;/b&gt;вместе с сортировкой выборки, прекрасно себе представляет, какая каша выдается в итоге. Большинство прекрасно понимает, а Oracle об этом прямо заявляет, что указанная функция не гарантирует верную нумерацию при проведении сортировки.&lt;br /&gt;
На всякий случай показываю, как оно бывает:&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;SQL&amp;gt; SELECT rownum, t.employee_id, t.first_name, t.last_name&lt;br /&gt;
&amp;nbsp; 2&amp;nbsp; from hr.employees t&lt;br /&gt;
&amp;nbsp; 3&amp;nbsp; order by last_name;&lt;br /&gt;
&lt;br /&gt;
ROWNUM EMPLOYEE_ID FIRST_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LAST_NAME&lt;br /&gt;
------ ----------- --------------- ------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 75&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 174 Ellen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abel&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 67&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 166 Sundar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ande&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 31&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 130 Mozhe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Atkinson&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 105 David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Austin&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 105&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 204 Hermann&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Baer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 17&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 116 Shelli&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Baida&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 68&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 167 Amit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Banda&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 73&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172 Elizabeth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bates&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 93&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192 Sarah&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bell&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 52&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 151 David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bernstein&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 129 Laura&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bissot&lt;br /&gt;...&lt;br /&gt;
107 rows selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Execution Plan&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT STATEMENT Optimizer=ALL_ROWS (Cost=4 Card=107 Bytes=2461)
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; SORT (ORDER BY) (Cost=4 Card=107 Bytes=2461)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE ACCESS (FULL) OF &#39;EMPLOYEES&#39; (TABLE) (Cost=3 Card=107 Bytes=2461)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;
В данном случае можно увидеть по плану, что ROWNUM считается до сортировки (да, COUNT - оно самое), в итоге получаем ту самую кашу.&lt;br /&gt;
А теперь эксперимент, сделаем &quot;ложную&quot; деревянную выборку одного уровня:&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;SQL&amp;gt; SELECT rownum, t.employee_id, t.first_name, t.last_name&lt;br /&gt;
&amp;nbsp; 2&amp;nbsp; from hr.employees t&lt;br /&gt;
&amp;nbsp; 3&amp;nbsp; connect by 1=2&lt;br /&gt;
&amp;nbsp; 4&amp;nbsp; order siblings by last_name;&lt;br /&gt;
&lt;br /&gt;
ROWNUM EMPLOYEE_ID FIRST_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LAST_NAME&lt;br /&gt;
------ ----------- --------------- ------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 174 Ellen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abel&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 166 Sundar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ande&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 130 Mozhe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Atkinson&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 105 David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Austin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 204 Hermann&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Baer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 116 Shelli&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Baida&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 167 Amit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Banda&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172 Elizabeth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bates&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192 Sarah&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bell&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 151 David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bernstein&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 129 Laura&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bissot&lt;br /&gt;
...&lt;br /&gt;
107 rows selected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Execution Plan&lt;br /&gt;
----------------------------------------------------------
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT STATEMENT Optimizer=ALL_ROWS (Cost=4 Card=107 Bytes=2461)&lt;br /&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; COUNT&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONNECT BY (WITHOUT FILTERING)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE ACCESS (FULL) OF &#39;EMPLOYEES&#39; (TABLE) (Cost=3 Card=107 Bytes=2461)&lt;br /&gt;&lt;/pre&gt;Забавно, но имея деревянный запрос, дающий такую же выборку (дерево никогда не получит второго уровня по условию 1=2), при &lt;b&gt;ORDER SIBLINGS BY&lt;/b&gt; мы получаем корректные значения &lt;b&gt;ROWNUM&lt;/b&gt;. Кроме того, в случае деревянной выборки сортировка производится как бы без сортировки (где-то в CONNECT BY (WITHOUT FILTERING) или еще где, надо трейсы смотреть), а ROWNUM (все тот же COUNT) выполняется последним перед выдачей клиенту. В результате мы получаем правильную нумерацию.&lt;br /&gt;
&lt;br /&gt;
Обращаю внимание на то, что проход все также один и стоимость запроса остается неизменной.&lt;br /&gt;
&lt;br /&gt;
Но это не более чем эксперименты, показывающие на разницу в работе одних и тех же функций в разных ситуациях, и заставляющие задуматься над некоторыми вещами.&lt;br /&gt;
&lt;br /&gt;
P.S: По факту правильней использовать функцию из аналитики: &lt;b&gt;ROW_NUMBER() OVER (ORDER BY column_name)&lt;/b&gt;, которая гарантированно даст нужный порядок.</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/6901789854736125597/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/rownum.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6901789854736125597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6901789854736125597'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/rownum.html' title='ROWNUM в разных ситуациях'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-7744079407791647114</id><published>2011-04-14T19:08:00.000+04:00</published><updated>2011-04-14T19:08:06.848+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Tom Kyte"/><category scheme="http://www.blogger.com/atom/ns#" term="фишки"/><title type='text'>Deadlock vs Resource Busy</title><content type='html'>В феврале 2010 года в Москву приезжал знаменитый Томас Кайт. Многие это помнят, но не многие запомнили один вопрос Тому в конце встречи, вопрос, на который он не смог ответить.&lt;br /&gt;
Вопрос заключался в ошибке, когда возникает deadlock в одной сессии внутри автономной транзакции, а именно почему при &quot;select .. for update wait N&quot; в случае N&amp;lt;6 возникает ошибка ORA-30006, а при N&amp;gt;=6 - ORA-00060. Тогда Томас был озадачен прилично, в итоге заявив только, что &quot;it is feature&quot;.&lt;br /&gt;
В апреле 2010 он &lt;a href=&quot;http://tkyte.blogspot.com/2010/04/what-will-happen-if.html&quot;&gt;опубликовал эту ситуевину в своем блоге&lt;/a&gt; и среди возгласов поклонников, пораженных наличием пробелов в знаниях Тома, проскочило несколько комментариев по теме.&lt;br /&gt;
&lt;br /&gt;
Итак... тест (версия 11.2.0.1):&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;SQL&amp;gt; create table t (x number);&lt;br /&gt;
SQL&amp;gt; insert into t values (1);&lt;br /&gt;
SQL&amp;gt; insert into t values (2);&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; update t set x = x+1;&lt;br /&gt;
&lt;br /&gt;
2 rows updated.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
&amp;nbsp; pragma autonomous_transaction;&lt;br /&gt;
&amp;nbsp; l_rec&amp;nbsp; t%rowtype;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; select * into l_rec from t for update wait 5;&lt;br /&gt;
&amp;nbsp; commit;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-30006: resource busy; acquire with WAIT timeout expired&lt;br /&gt;
ORA-06512: at line 5&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
&amp;nbsp; pragma autonomous_transaction;&lt;br /&gt;
&amp;nbsp; l_rec&amp;nbsp; t%rowtype;&lt;br /&gt;
begin&lt;br /&gt;
&amp;nbsp; select * into l_rec from t for update wait 7;&lt;br /&gt;
&amp;nbsp; commit;&lt;br /&gt;
end;&lt;/blockquote&gt;&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;/&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00060: deadlock detected while waiting for resource&lt;br /&gt;
ORA-06512: at line 5&lt;/blockquote&gt;&lt;br /&gt;
Интересно? Не то слово. Но вот что было в комментариях?&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Порядок обнаружения deadlocks продолжает срабатывать каждые 3 секунды (после таймаута), но он не активируется в случае запроса в параметре WAIT значения меньше либо равном 5 секундам. &lt;br /&gt;
&lt;br /&gt;
Этот момент управляется скрытым параметром:&lt;br /&gt;
&lt;br /&gt;
_enqueue_deadlock_time_sec   &quot;requests with timeout &amp;lt;= this will not have deadlock detection&quot;, этот параметр по-умолчанию имеет значение 5 секунд.&lt;br /&gt;
&lt;br /&gt;
Таким образом, если WAIT установлен в значение более этого параметра, то проверка наличия неразрешаемых блокировок активируется и срабатывает каждые 3 секунды.&lt;/blockquote&gt;&lt;br /&gt;
То есть, не магические 5 секунд управляют типом ошибки, а именно скрытый параметр, которого, кстати, как бы и нет, но можно установить и в 11.2. Логика, кстати, вполне понятна: блокировку ресурса определить значительно проще, чем запускать процесс обнаружения неразрешаемых взаимных блокировок, т.е. deadlocks. Будете искать параметр - не ищите, ни в v$parameter, ни в memory Вы его не найдете, но вполне срабатывает&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;alter system set &quot;_enqueue_deadlock_time_sec&quot;=15 scope=spfile;&lt;/blockquote&gt;... с последующим перезапуском инстанса. Но напоминаю, что не стоит без крайней необходимости скрытые параметры, ведь неспроста они скрыты.&lt;br /&gt;
&lt;br /&gt;
P.S: почему я описал это спустя год? Изучаем 11.2, проверяли взаимные блокировки, вспомнился тот случай. Итог: в случае двух разных сессий всегда ORA-00054, а автономная транзакция обрабатывается все также. &lt;br /&gt;
&lt;br /&gt;
С уважением,&lt;br /&gt;
Дмитрий Богомолов</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/7744079407791647114/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/deadlock-vs-resource-busy.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/7744079407791647114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/7744079407791647114'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/deadlock-vs-resource-busy.html' title='Deadlock vs Resource Busy'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-5249752760087940836</id><published>2011-04-12T11:37:00.001+04:00</published><updated>2011-04-13T11:04:22.835+04:00</updated><title type='text'>SecureLOB?</title><content type='html'>Сегодня при изучении SecureFiles у одного товарища возник вопрос: &quot;Вот мы можем указывать способы хранения LOB&#39;ов через&lt;br /&gt;
&lt;b&gt;LOB (col_name) STORE AS [SECUREFILE | BASICFILE]&lt;/b&gt;,&lt;br /&gt;
где поведение очевидно, но можно указать &lt;b&gt;SECURELOB&lt;/b&gt;. Что мы получим в результате?&quot;&lt;br /&gt;
&lt;br /&gt;
А в результате мы получим все тот же &lt;b&gt;BASICFILE&lt;/b&gt;. Разработчики Oracle не сильно заморачивались со строгостью новых фишек в DDL и в коде, похоже, поставили &quot;&lt;b&gt;IF SECUREFILE THEN .. ELSE .. END;&lt;/b&gt;&quot;. В результате, вместо &lt;b&gt;BASICFILE&lt;/b&gt; можно указывать все, чего душа пожелает, и любое значение кроме &lt;b&gt;SECUREFILE&lt;/b&gt; будет указывать на &lt;b&gt;BASICFILE&lt;/b&gt;.&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;FAIL:&lt;/span&gt;&lt;/b&gt; в комментах ткнули пальцем в доку, а именно в то место, где говорится про segment_name в STORE AS. Таким образом мы можем именовать сегменты (вместо названий типа SYS_LOB0000093350C00023$$), выделяемые под LOB&#39;ы. А именно:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;SQL&amp;gt; create table tttt(a number, cl clob) lob (cl) store as fg;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;SQL&amp;gt; insert into tttt values (1,&#39;sdfsd fas dfasdff&#39;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;SQL&amp;gt; insert into tttt values (2,&#39;sdfsssssssdfsd fas dfasdff&#39;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;SQL&amp;gt; select segment_name, segment_type from dba_segments where owner=&#39;OE&#39; and segment_name=&#39;FG&#39;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;SEGMENT_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SEGMENT_TYPE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;------------------------------ --------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;FG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOBSEGMENT&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/5249752760087940836/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/securelob.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5249752760087940836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/5249752760087940836'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2011/04/securelob.html' title='SecureLOB?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-4405150646467095804</id><published>2010-02-26T09:44:00.002+03:00</published><updated>2010-02-27T10:07:06.980+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Tom Kyte"/><category scheme="http://www.blogger.com/atom/ns#" term="о жизни"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>AskTom in Moscow</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIX49seVXPgwp6eTNQcI8liK5ZXryvGRZk_u3cYgLTN7armjO6CxqmBQKIYIkj1ugJjb3WcvY60LpQzMph-mWAn7kPTmAHUdSbhh8mYS8QfJzQwR8D3g1KYRQDFCtNRp6xNaKNQQ/s320/Tom.png&quot; style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 290px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIX49seVXPgwp6eTNQcI8liK5ZXryvGRZk_u3cYgLTN7armjO6CxqmBQKIYIkj1ugJjb3WcvY60LpQzMph-mWAn7kPTmAHUdSbhh8mYS8QfJzQwR8D3g1KYRQDFCtNRp6xNaKNQQ/s320/Tom.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5442439652612991922&quot; border=&quot;0&quot; /&gt;Вернулся с данного мероприятия, наконец добрался до блога.&lt;br /&gt;&lt;br /&gt;Сразу хотел бы выразить благодарность &lt;a href=&quot;http://dsvolk.blogspot.com/&quot;&gt;Дмитрию&lt;/a&gt; и Сергею за организацию мероприятия такого уровня. Огромное спасибо также &lt;a href=&quot;http://asktom.oracle.com/&quot;&gt;Тому&lt;/a&gt; &lt;a href=&quot;http://tkyte.blogspot.com/&quot;&gt;Кайту&lt;/a&gt; за то, что приехал. Если не вспоминать про синхронный перевод, то организация была на высшем уровне.&lt;br /&gt;&lt;br /&gt;О чем рассказывал Том? Worst&amp;amp;Best Practics. Говорил о приятных вещах версии 11.2. Ну и конечно же отвечал на вопросы.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Том оказался удивительным оратором, так умело удерживать внимание в течение 8 часов надо уметь. Интересная факты, юмор, активная жестикуляция, все это привлекает взгляд и заставляет слушать.&lt;br /&gt;&lt;br /&gt;Из неожиданного: почему-то очень долго считал, что AskTom ведется группой специалистов, но Том убедил, что это все он :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Увы, уже очень давно не удается писать в блог. Банально не хватает времени. Могу лишь надеяться на то, что его будет больше.&lt;br /&gt;&lt;br /&gt;С уважением,&lt;br /&gt;Дмитрий Богомолов</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/4405150646467095804/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2010/02/asktom-in-moscow.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/4405150646467095804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/4405150646467095804'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2010/02/asktom-in-moscow.html' title='AskTom in Moscow'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIX49seVXPgwp6eTNQcI8liK5ZXryvGRZk_u3cYgLTN7armjO6CxqmBQKIYIkj1ugJjb3WcvY60LpQzMph-mWAn7kPTmAHUdSbhh8mYS8QfJzQwR8D3g1KYRQDFCtNRp6xNaKNQQ/s72-c/Tom.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-2088544268098409947</id><published>2009-07-07T13:25:00.003+04:00</published><updated>2009-07-07T15:41:30.965+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="о жизни"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>ГАС &quot;Правосудие&quot; и Краевой суд - 2</title><content type='html'>Была у меня когда-то заметочка на тему подъема БД в Краевом Суде:&lt;br /&gt;&lt;a href=&quot;http://oraclemaniacs.blogspot.com/2007/11/blog-post.html&quot;&gt;Неспящие админы на службе у Краевого Суда&lt;/a&gt;. Но все дело в том, что история не то чтобы повторилась, но восстанавливать базу пришлось там же. Теперь уже была версия 9.2.0.6 в режиме noarchivelog, без бэкапов, вырубился свет, повредились редо-логи и была ругань на system01.dbf.&lt;br /&gt;&lt;br /&gt;Короче если рассказывать, пропуская массу всего веселого, то шаги типа:&lt;br /&gt;- подмена мертвого редо вновь созданным&lt;br /&gt;- пересоздание контрол-файла&lt;br /&gt;- создание pfile и внесение туда пары недокументированных параметров&lt;br /&gt;- поднятие с модифицированным pfile&lt;br /&gt;- рекавери&lt;br /&gt;- open resetlogs&lt;br /&gt;- попытка экспорта&lt;br /&gt;- решение проблем с недостающими объектами&lt;br /&gt;- экспорт (триггеры не экспортнулись, увы...)&lt;br /&gt;- создание новой базы, выключение мертвой&lt;br /&gt;- инициализация ГАС &quot;Правосудие&quot;&lt;br /&gt;- отключение всех триггеров и внешних ключей&lt;br /&gt;- удаление данных&lt;br /&gt;- импорт схемы с IGNORE=y&lt;br /&gt;- включение внешних ключей и триггеров&lt;br /&gt;&lt;br /&gt;В подробностях все было гораздо веселее.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;P.S: &lt;/span&gt;Не используйте в Production базы, на которых даже архивлоги выключены, они могут умереть в любой момент!&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;P.P.S:&lt;/span&gt; База, поднятая исключительно за счет недокументированных параметров Oracle - не есть база Oracle, никто не гарантирует её стабильную работу. Не продолжайте её использование, переносите данные, которые можно выдернуть.&lt;br /&gt;&lt;br /&gt;С уважением,&lt;br /&gt;Дмитрий Богомолов</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/2088544268098409947/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/07/2.html#comment-form' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/2088544268098409947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/2088544268098409947'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/07/2.html' title='ГАС &quot;Правосудие&quot; и Краевой суд - 2'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-6995461489604363221</id><published>2009-05-21T13:41:00.004+04:00</published><updated>2009-05-21T13:44:45.490+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="о жизни"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>Oracle PL\SQL Fundamentals на Brainbench</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Теперь проверял знания Oracle PL\SQL Fundamentals.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img src=&quot;http://www.brainbench.com/images/certlogo/color/mastercert/oracleplsqlfundamentals.gif&quot; style=&quot;max-width: 800px;&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt; &lt;/div&gt;&lt;table align=&quot;center&quot; border=&quot;0&quot; cellpadding=&quot;3&quot; cellspacing=&quot;3&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;rowheader&quot;&gt;&lt;td class=&quot;headerFont&quot;&gt;&lt;p&gt;&lt;b&gt;Your Criteria:&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;                &lt;/tr&gt;                &lt;tr&gt;                    &lt;td class=&quot;body&quot;&gt;&lt;ol class=&quot;body&quot;&gt;&lt;li&gt;Test Module: Oracle PL/SQL Fundamentals&lt;/li&gt;&lt;li&gt;Score: 4.26&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;                &lt;/tr&gt;                            &lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; border=&quot;0&quot; cellpadding=&quot;3&quot; cellspacing=&quot;3&quot;&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class=&quot;headerFont&quot;&gt;&lt;b&gt;Your Ranking Information:&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Total Tests Completed:&lt;/b&gt;&lt;/td&gt;&lt;td&gt;10245&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;body&quot;&gt;&lt;b&gt;Your Rank (1 = top):&lt;/b&gt;&lt;/td&gt;&lt;td&gt;134&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;body&quot;&gt;&lt;b&gt;Your Percentile (99 = top): &lt;/b&gt;&lt;/td&gt;&lt;td&gt;99%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Первый раз статус MASTER! И как назло, я помню пару вопросов, на которые мог но не дал правильного ответа, мало времени было, в некоторых вопросах фразы закручены так, что было тяжко понять, чего от тебя хотят.</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/6995461489604363221/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/05/oracle-plsql-fundamentals-brainbench.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6995461489604363221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6995461489604363221'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/05/oracle-plsql-fundamentals-brainbench.html' title='Oracle PL\SQL Fundamentals на Brainbench'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-59073572291658107</id><published>2009-04-20T17:36:00.003+04:00</published><updated>2009-04-20T17:38:55.087+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Покупки и продажи"/><title type='text'>Oracle покупает компанию Sun!</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.sun.com/featured-articles/2009-0403/feature/images/zot_sun_s_oracle_b.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 195px; height: 98px;&quot; src=&quot;http://www.sun.com/featured-articles/2009-0403/feature/images/zot_sun_s_oracle_b.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Случилось то, чего мало кто ждал, Oracle покупает Sun Microsystems за $7.4 миллиарда! Интересно то, что эту же цену ($9.50 за акцию) предлагала IBM, но Sun запросила больше ($9.55).&lt;br /&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&quot;Oracle и Sun являются пионерами в индустрии и тесными партнерами в течение более 20 лет&quot;, говорит президент Sun, Скотт Макнили (Scott McNealy). &quot;Это объединение является естественным продолжением наших взаимоотношений и оно станет определяющим событием в индустрии&quot;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Больше информации в новости на &lt;a href=&quot;http://www.sun.com/third-party/global/oracle/index.jsp&quot;&gt;сайте Sun&lt;/a&gt; и на &lt;a href=&quot;http://www.oracle.com/sun/index.html&quot;&gt;сайте Oracle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Поговаривают, что IBM в одностороннем порядке отказалась от дальнейших переговоров с Sun потому, что получила неофициальные данные о том, что антимонопольные коммитеты США и Европы потребуют дополнительной проверки по данной сделке, что займет 6-8 месяцев.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/59073572291658107/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/04/oracle-sun.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/59073572291658107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/59073572291658107'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/04/oracle-sun.html' title='Oracle покупает компанию Sun!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-8454971097265447224</id><published>2009-03-12T09:54:00.014+03:00</published><updated>2009-03-13T09:10:01.440+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FAQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="фишки"/><title type='text'>Использование неявных курсоров при DML-операциях</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 133px; height: 133px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYAZUOFedH9ctJ-bjUirIgsPtkinkt5ENF6yieWCq3-gCdneWx4VmxXgtefH4QkARdn7o4qq2_Q8goXlsgs9KLzWxitmWPLp29nbi3FoC6PIMBEXd3wM_gEFBkOSgp5IAN6D0tTw/s320/pl_RS_SQL_NEW_detail_1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5312194851052077314&quot; border=&quot;0&quot; /&gt;Наверняка у многих возникала необходимость внутри PL\SQL блока проверить, сколько строк было вставлено, удалено или обновлено последней DML-операцией. Все знают, что где-то оно должно быть, но не все представляют где. В SQL*Plus да и в различных оболочках для работы с БД мы видим надписи&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;SQL&amp;gt; UPDATE test_tab t SET t.col1=1;&lt;br /&gt;&lt;br /&gt;3 rows updated&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но как проверить результат выполнения в коде?&lt;br /&gt;Для подобных целей в СУБД Oracle предусмотрен неявный курсор, который позволяет читать информацию о последнем отработавшем курсоре. Удивительно, но имя ему SQL!&lt;br /&gt;Данный неявный курсор имеет следующие атрибуты: %FOUND, %ISOPEN, %NOTFOUND, и %ROWCOUNT.&lt;br /&gt;&lt;b&gt;%FOUND&lt;/b&gt; показывает, было ли изменение строк.&lt;br /&gt;&lt;b&gt;%NOTFOUND&lt;/b&gt; - DML-операция не смогла изменить строки.&lt;br /&gt;&lt;b&gt;%ROWCOUNT&lt;/b&gt; - на какое количество строк распространялась DML-операция.&lt;br /&gt;&lt;b&gt;%ISOPEN&lt;/b&gt; - всегда FALSE, т.к. СУБД закрывает все курсоры, связанные с SQL-выражением, сразу после завершения DML-операции.&lt;br /&gt;&lt;br /&gt;Пример из официальной документации:&lt;br /&gt;&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE TABLE employees_temp AS SELECT * FROM employees;&lt;br /&gt;BEGIN&lt;br /&gt;  UPDATE employees_temp &lt;br /&gt;     SET salary = salary * 1.05 &lt;br /&gt;   WHERE salary &amp;lt; 5000;&lt;br /&gt;&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE(&#39;Updated &#39; || SQL%ROWCOUNT || &lt;br /&gt;                       &#39; salaries.&#39;);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;Решил попробовать прицепить подсветку синтаксиса от &lt;a href=&quot;http://softwaremaniacs.org/&quot;&gt;Ивана Салагаева&lt;/a&gt;. Посмотрим как там чего.&lt;br /&gt;UPD: не получается...&lt;br /&gt;UPD: получилось!&lt;br /&gt;&lt;br /&gt;С уважением,&lt;br /&gt;Дмитрий Богомолов&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/8454971097265447224/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/03/dml.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/8454971097265447224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/8454971097265447224'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2009/03/dml.html' title='Использование неявных курсоров при DML-операциях'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYAZUOFedH9ctJ-bjUirIgsPtkinkt5ENF6yieWCq3-gCdneWx4VmxXgtefH4QkARdn7o4qq2_Q8goXlsgs9KLzWxitmWPLp29nbi3FoC6PIMBEXd3wM_gEFBkOSgp5IAN6D0tTw/s72-c/pl_RS_SQL_NEW_detail_1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-6531130701439800174</id><published>2008-10-23T09:22:00.003+04:00</published><updated>2008-10-23T14:39:33.630+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="FAQ"/><category scheme="http://www.blogger.com/atom/ns#" term="запомнить"/><title type='text'>[напоминалка] Ошибка в скрипте создания базы с помощью DBCA</title><content type='html'>&lt;p&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpQdW1Zp1WQlerNxdnJQPRFAoKqFz5ipooG6bY9rqE_mgSGSfwVyAgEBax7CADOzNlyGJ07r3PrhCAZ3Ho7C5nfT9uRcYvWJPwaRHAoeWN9o4s7zDjCeSp8EZlIIbwwDgrAuMfw/s1600/warning.png&quot; border=&quot;0&quot; /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;В некоторых случаях Oracle Database Configuration Assistant (DBCA) при формировании скрипта по созданию базы создает некорректный батник [sid_name.bat]. Я натыкался на эту ошибку и в версии 8.1.7 и в различных 9.2.0.х. Две строки имеют вид:&lt;/p&gt;&lt;p&gt;[Ljava.lang.String;@2a369f&lt;br /&gt;[Ljava.lang.String;@2a36d7&lt;br /&gt;&lt;/p&gt;&lt;p&gt;При этом коды ошибок могут отличаться, что затрудняет поиск быстрого решения (по крайней мере в первый раз).&lt;/p&gt;&lt;p&gt;На самом деле все просто до безобразия... Вот эти строки:&lt;/p&gt;&lt;p&gt;oradim.exe -new  -sid [sid_name] -startmode m&lt;br /&gt;oradim.exe -edit  -sid [sid_name] -startmode a&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Само собой разумеется, что вместо [sid_name] везде необходимо подставить имя базы, которую Вы создаете.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/6531130701439800174/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/10/dbca.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6531130701439800174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6531130701439800174'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/10/dbca.html' title='[напоминалка] Ошибка в скрипте создания базы с помощью DBCA'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpQdW1Zp1WQlerNxdnJQPRFAoKqFz5ipooG6bY9rqE_mgSGSfwVyAgEBax7CADOzNlyGJ07r3PrhCAZ3Ho7C5nfT9uRcYvWJPwaRHAoeWN9o4s7zDjCeSp8EZlIIbwwDgrAuMfw/s72-c/warning.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-4166132487844032570</id><published>2008-10-15T10:47:00.003+04:00</published><updated>2008-10-15T11:11:45.821+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="запомнить"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>[Напоминалка] Materialized View и Database Link</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.dailygalaxy.com/photos/uncategorized/2007/09/18/human_brain_neuron_2.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 234px; height: 175px;&quot; src=&quot;http://www.dailygalaxy.com/photos/uncategorized/2007/09/18/human_brain_neuron_2.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Необходимо запомнить такой момент:&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;При создании Materialized View из выборки, в которой используется обращение к удаленной базе через DBLink (неважно, непосредственно или через синоним), необходимо использовать ключ &quot;WITH ROWID&quot; либо &quot;WITH PRIMARY KEY&quot; иначе получаем ORA-00942. Почему эту ошибку, объяснения не вижу даже на горизонте, но... В общем надо принять как данность.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/4166132487844032570/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/10/materialized-view-database-link.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/4166132487844032570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/4166132487844032570'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/10/materialized-view-database-link.html' title='[Напоминалка] Materialized View и Database Link'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-6840901727287756148</id><published>2008-08-28T11:41:00.004+04:00</published><updated>2008-10-15T11:12:11.712+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="запомнить"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>[напоминалка] Перевод строки в Oracle</title><content type='html'>&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpQdW1Zp1WQlerNxdnJQPRFAoKqFz5ipooG6bY9rqE_mgSGSfwVyAgEBax7CADOzNlyGJ07r3PrhCAZ3Ho7C5nfT9uRcYvWJPwaRHAoeWN9o4s7zDjCeSp8EZlIIbwwDgrAuMfw/s1600/warning.png&quot; border=&quot;0&quot; /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Надо запомнить!!!&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Перевод строки в Oracle выполняется лишь 10м символом, независимо от платформы! А ведь промучался с динамическим PL\SQL-кодом 3 дня! Думал сначала на права, потом на свои руки, потом на индусов, потом опять на свои руки, а вот в результате оказалось, что вместо chr(13)||chr(10) надо было ставить просто chr(10). И все, джобы с динамически сформированным кодом заработали.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/6840901727287756148/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/08/oracle.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6840901727287756148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6840901727287756148'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/08/oracle.html' title='[напоминалка] Перевод строки в Oracle'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpQdW1Zp1WQlerNxdnJQPRFAoKqFz5ipooG6bY9rqE_mgSGSfwVyAgEBax7CADOzNlyGJ07r3PrhCAZ3Ho7C5nfT9uRcYvWJPwaRHAoeWN9o4s7zDjCeSp8EZlIIbwwDgrAuMfw/s72-c/warning.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-6090858980329257657</id><published>2008-07-30T15:47:00.002+04:00</published><updated>2008-10-16T14:16:59.468+04:00</updated><title type='text'>Oracle Metalink меняет пользовательский интерфейс</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYk0lWbVXugEitk8T4xrsq0VlrC5HVAy8evA2BL1AF4JHCJJL2kV7Q_W7eTFxUIGHwdzuXKfyftF51hpf5n5goNlTtcUyT4Vl8tQY_OsZ0bOMXe4qJvO8HW3y0NDUId_bR5ju9oQ/s1600-h/database_clr.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: top; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYk0lWbVXugEitk8T4xrsq0VlrC5HVAy8evA2BL1AF4JHCJJL2kV7Q_W7eTFxUIGHwdzuXKfyftF51hpf5n5goNlTtcUyT4Vl8tQY_OsZ0bOMXe4qJvO8HW3y0NDUId_bR5ju9oQ/s320/database_clr.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5257693459228539730&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;entry&quot;&gt; &lt;p&gt;Сегодня тест-драйв &lt;img src=&quot;http://www.gorovoy.org.ua/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;a href=&quot;http://csm.oracle.com/&quot;&gt;http://csm.oracle.com/&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Хорошая новость(имхо, старый приелся уже да и не очень удобно раньше был продуман).&lt;/p&gt; &lt;p&gt;Новый - удобен, красиво сделано.&lt;/p&gt; &lt;p&gt;В общем приятное впечатление. Ждем выхода в народ. &lt;/p&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/6090858980329257657/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/07/oracle-metalink.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6090858980329257657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/6090858980329257657'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/07/oracle-metalink.html' title='Oracle Metalink меняет пользовательский интерфейс'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYk0lWbVXugEitk8T4xrsq0VlrC5HVAy8evA2BL1AF4JHCJJL2kV7Q_W7eTFxUIGHwdzuXKfyftF51hpf5n5goNlTtcUyT4Vl8tQY_OsZ0bOMXe4qJvO8HW3y0NDUId_bR5ju9oQ/s72-c/database_clr.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-8527508241188430754</id><published>2008-05-23T10:57:00.003+04:00</published><updated>2009-03-12T15:43:33.796+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FAQ"/><title type='text'>Генерация DDL объектов базы данных</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Можете кидать в меня тухлыми яйцами, но я только полчаса назад открыл для себя встроенную процедуру генерации DDL.&lt;br /&gt;Для тех, кто вместе со мной тщетно пытается догнать парозов прогресса, в первом вагоне которого сидит Ларри Эллисон, прилагаю запрос, который генерирует DDL всех таблиц необходимой Вам схемы:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner)&lt;br /&gt;  FROM DBA_OBJECTS t&lt;br /&gt; WHERE t.object_type = &#39;TABLE&#39;&lt;br /&gt;   AND OWNER = &#39;DAD&#39;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;P.S: Извиняюсь за большую задержку с заметками про различные IDE для дизайна баз данных, на этих выходных заканчиваю переезд на новую квартиру и обязательно найду немного времени для того, чтобы откопать дипломный проект любимой жены в которой мы совместно проводили сравнительный анализ BP/ERwin, Rational Rose, ARIS, JDeveloper и еще чего-то там. Работе уже 3 года, но б&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;о&lt;/span&gt;льшую часть можно выложить.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/8527508241188430754/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/05/ddl.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/8527508241188430754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/8527508241188430754'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/05/ddl.html' title='Генерация DDL объектов базы данных'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-9126160498887699104</id><published>2008-05-21T13:04:00.005+04:00</published><updated>2008-05-21T16:06:33.074+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="rman"/><title type='text'>Не удается удалить бэкапы?</title><content type='html'>Всем доброго дня!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Сегодня столкнулся с такой проблемой, не удаляются старые, вернее даже устаревшие, бэкапы. Топаю в RMAN, набираю &quot;DELETE OBSOLETE;&quot; и получаю...&lt;br /&gt;&lt;br /&gt;RMAN-03002: failure of delete command at 21/05/2008 10:37:34&lt;br /&gt;RMAN-00600: internal error, arguments [8225] [INVALID] [] [] []&lt;br /&gt;&lt;br /&gt;Думал, Google мне чего-нибудь подскажет, но он усиленно молчал на счет этой проблемы. Тогда полез на &lt;a href=&quot;http://metalink.oracle.com/&quot;&gt;Metalink&lt;/a&gt; и обнаружил что &lt;s&gt;у нас снова появился к нему доступ&lt;/s&gt; к этой проблеме есть workaround. Проблема оказалась в архивах редо логов.&lt;br /&gt;&lt;br /&gt;В наличии имеется баг &lt;a href=&quot;https://metalink.oracle.com/metalink/plsql/showdoc?db=Bug&amp;amp;id=4612903&quot;&gt;Bug 4612903&lt;/a&gt; и следующее &lt;a href=&quot;https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&amp;amp;p_id=343731.1&quot;&gt;решение&lt;/a&gt; (надеюсь, не нанесу компании Oracle грандиозного урона перепечаткой двух команд):&lt;br /&gt;&lt;/div&gt;1. Бэкапим все архивлоги с опцией delete input, смысл в том, чтобы.&lt;br /&gt;2. Удаляем устаревшие (obsolete), можно с опцией noprompt.</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/9126160498887699104/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/05/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/9126160498887699104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/9126160498887699104'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/05/blog-post.html' title='Не удается удалить бэкапы?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-1842196606779804250</id><published>2008-04-29T15:35:00.004+04:00</published><updated>2008-05-21T16:07:06.924+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="проектирование"/><title type='text'>Проектирование: CA ERwin Data Modeler</title><content type='html'>Всем доброго дня!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Сегодня хотелось бы обратиться не непосредственно к программированию в Oracle, а к средам проектирования баз данных и не только. Ведь дизайн БД напрямую зависит от архитектуры, дизайна (забудем пока про пользовательский интерфейс) самой разрабатываемой системы. Понятное дело, что у нас, в России, до сих пор большинство систем пишется &quot;на коленке&quot; с проектированием лишь в мыслях. Однако многие переходят либо уже перешли к полноценному проектированию. Начну серию записей о CASE-средствах. Итак...&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;CA ERwin Data Modeler&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.ca.com/images/global/logo.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;http://www.ca.com/images/global/logo.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Очень удобная штуковина, особенно в случаях, когда процесс проектирования информационной системы начинается с анализа бизнес-процессов.&lt;br /&gt;На первом этапе анализа/проектирования используется CA ERwin Process Modeler. Если была введена достаточная информация о данных, которыми обмениваются бизнес-процессы, то ERwin Data Modeler сможет создать &quot;почти готовую к использованию&quot; логическую модель данных. Логическая модель будет представлять собой денормализованную структуру.&lt;br /&gt;На основе логической модели данных формируется физическая модель данных. Данная среда сама произведет частичную нормализацию структуры (избавится от отношений многие-ко-многим и т.п.), предположит, какие типы данных лучше &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://upload.wikimedia.org/wikipedia/en/thumb/7/73/ERWin_4.1.4.3643_on_Windows_2000_screenshot.png/730px-ERWin_4.1.4.3643_on_Windows_2000_screenshot.png&quot;&gt;&lt;img style=&quot;margin: 10pt 0px 0px 10pt; float: right; cursor: pointer; width: 150px; height: 122px;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/thumb/7/73/ERWin_4.1.4.3643_on_Windows_2000_screenshot.png/730px-ERWin_4.1.4.3643_on_Windows_2000_screenshot.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;использовать в соответствии с используемой СУБД, расставит индексы и многое многое другое... Можно указывать даже способы физического размещения в соответствии с используемыми опциями.&lt;br /&gt;Возможна синхронизация со структурой в существующей базе данных, имеется обратная взаимосвязь между физической и логической структурой, возможен подход с обратным инжинирингом.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Недостатки и проблемы в использовании?&lt;/span&gt;&lt;br /&gt;Эстетические: некрасивые имена для констрейнтов, индексов и прочего, что создается автоматом, никакого соответствия с именем объекта.&lt;br /&gt;Практические: создается очень много констрейнтов, поэтому надо подходить к проектированию аккуратно дабы потом не отключать пару десяткой уникальных индексов, проверок, и прочих бонусов, обеспечивающих целостность данных.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Сайт разработчика:&lt;/span&gt; &lt;a href=&quot;http://www.ca.com/us/database-design.aspx&quot;&gt;CA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Далее:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rational Rose&lt;/li&gt;&lt;li&gt;Enterprise Architect&lt;/li&gt;&lt;li&gt;Oracle JDeveloper&lt;/li&gt;&lt;li&gt;Oracle Designer&lt;/li&gt;&lt;li&gt;Sybase PowerDesigner&lt;/li&gt;&lt;li&gt;DeZign от Datanamic&lt;/li&gt;&lt;li&gt;Embarcadero ER/Studio&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;А что используете вы?&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/1842196606779804250/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/ca-erwin-data-modeler.html#comment-form' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/1842196606779804250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/1842196606779804250'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/ca-erwin-data-modeler.html' title='Проектирование: CA ERwin Data Modeler'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-2900667790037584874</id><published>2008-04-25T15:50:00.007+04:00</published><updated>2009-03-12T15:44:39.230+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FAQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="фишки"/><title type='text'>Расчет разницы между датами</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Наткнулся сегодня на заметку на &lt;a href=&quot;http://oracletipstricks.blogspot.com/2008/04/computing-date-differences.html&quot;&gt;Oracle Tips &amp;amp; Tricks&lt;/a&gt; со схожим названием. В заметке рассматривается забавный нюанс работы с типом Date в СУБД Oracle. Рассмотрим этот нюанс, так сказать, на русском.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Банальность.&lt;/span&gt;&lt;br /&gt;Как многие помнят, большинство сред хранит дату как разницу между этой самой датой и некой опорной датой, в виде числа. Таким образом &lt;span style=&quot;font-weight: bold;&quot;&gt;01.04.2008-3.111&lt;/span&gt; будет представляться пользователю, конечно, как &lt;span style=&quot;font-weight: bold;&quot;&gt;28.03.2008 21:20:10&lt;/span&gt;, однако храниться дата будет с большей точностью. Т.е. при выполнении действия &lt;span style=&quot;font-weight: bold;&quot;&gt;01.04.2008-3.111-&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;01.04.2008&lt;/span&gt; мы получим &lt;span style=&quot;font-weight: bold;&quot;&gt;-3.111&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Особенности.&lt;/span&gt;&lt;br /&gt;При работе в СУБД Oracle необходимо отметить такие нюансы:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Числовые типы данных хранятся в десятичном формате.&lt;/li&gt;&lt;li&gt;Точности большей чем до секунд добиться при использовании типа DATE в СУБД Oracle невозможно.&lt;/li&gt;&lt;/ol&gt;Вернемся к примеру, описанному выше.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Пример.&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;SQL&gt; select to_date(&#39;01.04.2008&#39;)-3.111 from dual;&lt;br /&gt;&lt;br /&gt;TO_DATE(&#39;01.04.2008&#39;)-3.111&lt;br /&gt;---------------------------&lt;br /&gt;28.03.2008 21:20:10&lt;br /&gt;&lt;br /&gt;SQL&gt; select to_date(&#39;01.04.2008&#39;)-3.111-to_date(&#39;01.04.2008&#39;) from dual;&lt;br /&gt;&lt;br /&gt;TO_DATE(&#39;01.04.2008&#39;)-3.111-TO&lt;br /&gt;------------------------------&lt;br /&gt;          -3,11099537037037&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Проблема? Нет, особенность!&lt;/span&gt;&lt;br /&gt;Рассмотрим 3.111 в виде дельты между датами. Что мы получим?&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;3.111*24*60*60 = 3 дня 2 часа 39 минут 50&lt;/span&gt;&lt;span style=&quot;font-style: italic;font-size:130%;&quot; &gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;.4&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt; секунды&lt;br /&gt;&lt;/span&gt;При преобразовании к дате мы теряем те самые 0.4 секунды и получаем дельту&lt;span style=&quot;font-style: italic;&quot;&gt;3 дня 2 часа 39 минут 50&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt; секунды&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;.  &lt;/span&gt;Соответственно при обратном пересчете мы получим ((50/60+39)/60+2)/24+3 =  3.11099537037037. Так что вот так.&lt;br /&gt;&lt;br /&gt;Будьте аккуратны с неявным преобразованием данных!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/2900667790037584874/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/blog-post_25.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/2900667790037584874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/2900667790037584874'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/blog-post_25.html' title='Расчет разницы между датами'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/16659099732079480206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-3237150993895778556</id><published>2008-04-23T21:40:00.001+04:00</published><updated>2008-11-13T09:52:21.804+03:00</updated><title type='text'>Toad for Oracle 9.6</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8mlIuiUEdGS9zDNPdK70WsmcQ8lbXpWWt2vDkHHy-FlQPghxtJlru8xWGHBF_Irvc1A84K4UhqsaqCD_glfqobMNmyVuErEcAxlF0v_q8sD6pILUYmGl0jcBndEEv3qhaHH1mVQ/s1600-h/1202212381_toad_9.5.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8mlIuiUEdGS9zDNPdK70WsmcQ8lbXpWWt2vDkHHy-FlQPghxtJlru8xWGHBF_Irvc1A84K4UhqsaqCD_glfqobMNmyVuErEcAxlF0v_q8sD6pILUYmGl0jcBndEEv3qhaHH1mVQ/s320/1202212381_toad_9.5.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5192482120177778466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Обнаружил, что на подходе (&lt;a href=&quot;http://www.quest.com/events/listdetails.aspx?contentid=7231&amp;amp;technology=&amp;amp;prod=&amp;amp;prodfamily=&amp;amp;loc=&quot;&gt;7 мая 2008 США&lt;/a&gt; ) версия 9.6 сего замечательного инструмента.&lt;br /&gt;&lt;br /&gt;Кстати, вопрос: - Кто, какими инструментами пользуется в работе с любимой СУБД?&lt;br /&gt;&lt;br /&gt;Что используют администраторы базы которые живут в линуксе?&lt;br /&gt;&lt;br /&gt;Поправка -  не считая родных решений Оракла.&lt;br /&gt;&lt;br /&gt;Для 10-ки есть браузерная версия Enterprise Manager для 9-ки - нет, зато у каждого админа есть  куча скриптов, помогающих в жизни. Захотелось не обычного типа ЕМ для 9.&lt;br /&gt;&lt;br /&gt;Погуглил я в поиске ответа на вопрос: &quot;Какие инструменты для администрирования есть на просторах Open source&quot;?&lt;br /&gt;&lt;br /&gt;Нашел ряд проектов 2/3 из которых уже не жильцы. phpOraAdmin - довольно скудный набор функций.  Для мониторинга есть ZABOra от  &lt;a href=&quot;http://www.zabbix.com/forum/showthread.php?t=5003&quot;&gt;Zabbix&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Неужели никому не интересно иметь под рукой настраиваемый под свои нужды &quot;тонкий&quot; клиент Оракла?  Или уже все ушли в 10 и 11 версии?&lt;br /&gt;&lt;br /&gt;Я занялся изучением PHP и Ajax  и захотелось сделать что-то аналогичное.&lt;br /&gt;&lt;br /&gt;Как думаете есть смысл написать такое приложение?&lt;br /&gt;Или не стоит изобретать велосипед?</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/3237150993895778556/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/toad-for-oracle-96.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/3237150993895778556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/3237150993895778556'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/toad-for-oracle-96.html' title='Toad for Oracle 9.6'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8mlIuiUEdGS9zDNPdK70WsmcQ8lbXpWWt2vDkHHy-FlQPghxtJlru8xWGHBF_Irvc1A84K4UhqsaqCD_glfqobMNmyVuErEcAxlF0v_q8sD6pILUYmGl0jcBndEEv3qhaHH1mVQ/s72-c/1202212381_toad_9.5.jpg" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21381265.post-28795991831623125</id><published>2008-04-20T14:42:00.003+04:00</published><updated>2008-04-21T23:01:14.312+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Oracle залатала четыре десятка дыр в своих продуктах</title><content type='html'>На сайте Oracle &lt;a href=&quot;http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuapr2008.html&quot;&gt;опубликован&lt;/a&gt; очередной бюллетень Critical Patch Update с информацией о новых уязвимостях, обнаруженных в программных продуктах компании.&lt;br /&gt;На этот раз Oracle устранила около четырех десятков дыр в различных пакетах. Уязвимости, в частности, выявлены в сервере приложений Oracle Application Server, СУБД Oracle Database, в комплексе бизнес-приложений Oracle E-Business Suite, CRM-продукте Oracle Siebel Enterprise Suite, а также в комплексе средств для централизованного управления системами Oracle Enterprise Manager.&lt;br /&gt;Наиболее опасные дыры найдены в сервере Oracle Application Server и пакете Oracle E-Business Suite. Эти уязвимости теоретически могут использоваться злоумышленниками с целью получения несанкционированного доступа к системе жертвы. Кроме того, дыры, допускающие удаленный доступ к ПК без аутентификации, устранены в продукте Oracle Siebel Enterprise.&lt;br /&gt;В состав пакета обновлений, помимо заплаток, включены ряд апдейтов, не связанных с безопасностью. Дополнительную информацию об устраненных уязвимостях можно найти &lt;a href=&quot;http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuapr2008.html#PIN&quot;&gt;здесь&lt;/a&gt;. Следующая порция патчей, согласно графику Oracle, должна быть выпущена 15 июля 2008г.</content><link rel='replies' type='application/atom+xml' href='http://oraclemaniacs.blogspot.com/feeds/28795991831623125/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/oracle_20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/28795991831623125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21381265/posts/default/28795991831623125'/><link rel='alternate' type='text/html' href='http://oraclemaniacs.blogspot.com/2008/04/oracle_20.html' title='Oracle залатала четыре десятка дыр в своих продуктах'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>