<?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: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-30095010</id><updated>2011-11-27T16:55:45.566-08:00</updated><category term='iSQL*Plus'/><category term='Tuning'/><category term='Solaris и Oracle'/><category term='Enterprise Manager Grid Control 10g'/><category term='Oracle Database 9i'/><category term='Параметр CACHE LOB-сегмента'/><category term='Ожидания'/><category term='Кем была вызвана процедура'/><category term='LOBы'/><category term='Oracle Internals'/><category term='Мои тренинги'/><category term='Вопросы категории &quot;Как ...?&quot;'/><category term='Сравнение схем'/><category term='Сертификация'/><category term='О тем о сём'/><category term='Партиционирование'/><category term='Oracle Application Server 10g'/><category term='Оптимизация производительности'/><category term='Индексы'/><category term='Enterprise Manager Java Console 10g'/><category term='Функция'/><category term='SOA Suite 10g'/><category term='Index Skip Scan'/><category term='Тюнинг'/><category term='Enterprise Manager Database Control 10g'/><category term='Oracle Database 10g'/><category term='Enhancement Request'/><category term='Ошибки и их устранение'/><category term='Приколы'/><title type='text'>Блог администратора баз данных Oracle</title><subtitle type='html'>Блог об администрировании баз данных Oracle. &lt;br&gt;
This is my blog about Oracle Database Administration.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30095010.post-1411912219395547604</id><published>2009-07-17T03:57:00.000-07:00</published><updated>2009-07-17T05:48:49.933-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Тюнинг'/><category scheme='http://www.blogger.com/atom/ns#' term='Оптимизация производительности'/><title type='text'>Low "Parse CPU to Parse Elapsd %"</title><content type='html'>What could be the reason of low "Parse CPU to Parse Elapsd %"?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Instance Efficiency Percentages (Target 100%)&lt;br /&gt;Buffer Nowait %:              99.97    Redo NoWait %:    100.00&lt;br /&gt;Buffer Hit %:                 99.90    In-memory Sort %: 100.00&lt;br /&gt;Library Hit %:                99.48    Soft Parse %:     98.56&lt;br /&gt;Execute to Parse %:           91.34    Latch Hit %:      99.97&lt;br /&gt;Parse CPU to Parse Elapsd %:  &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;16.97&lt;/span&gt;    % Non-Parse CPU:  99.65&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cursor_sharing is EXACT, the application already uses bind variables, and the Library Cache Hit ratio is 99.48%, percentage of soft parses is 98.56%!&lt;br /&gt;&lt;br /&gt;Since, &lt;br /&gt;&lt;br /&gt;Parse CPU = CPU time spent parsing&lt;br /&gt;Parse Elapsed = Total time spent parsing&lt;br /&gt;&lt;br /&gt;Parse Elapsed = CPU time + waiting time.&lt;br /&gt;&lt;br /&gt;there is some waiting during parsing. About 83% of the parse time is spent for waiting!&lt;br /&gt;Where could this waiting be coming from?&lt;br /&gt;&lt;br /&gt;Maybe from dynamic sampling?&lt;br /&gt;Oracle could be trying to read table or index blocks in order to dynamicly gather approximate statistics for those who has no or stale statistics?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1411912219395547604?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1411912219395547604/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1411912219395547604' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1411912219395547604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1411912219395547604'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/07/low-parse-cpu-to-parse-elapsd.html' title='Low &quot;Parse CPU to Parse Elapsd %&quot;'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6832308080105024484</id><published>2009-04-02T04:31:00.000-07:00</published><updated>2009-04-14T01:31:32.606-07:00</updated><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='Tuning'/><title type='text'>Invalidating the execution plan of an SQL statement</title><content type='html'>Recently, I noticed that although I gathered statistics on a table, the execution plan wasn't invalidated in Oracle 10g. I googled it and found the solution at &lt;a href="http://coskan.wordpress.com/2007/03/01/how-to-invalidate-execution-plan/"&gt;Coskan's blog&lt;/a&gt; that you can invalidate an execution plan by executing a simple ddl statement on a table, like: &lt;pre&gt;grant select on t1 to user1;&lt;/pre&gt;&lt;br /&gt;Today I came across this note on metalink [Doc ID: 557661.1] about this topic. It says that prior to 10g, by default the execution plan was invalidated when the statistics was gathered on underlying objects:&lt;br /&gt;&lt;blockquote&gt;Cursor Invalidations on Gathering Statistics prior to Oracle10g&lt;br /&gt;&lt;strong&gt;&lt;span&gt;In releases prior to Oracle10g gathering statistics using DBMS_STATS resulted in immediate invalidations of dependent cached cursors&lt;/span&gt;&lt;/strong&gt;, unless NO_INVALIDATE was set to TRUE. &lt;/blockquote&gt;&lt;br /&gt;But starting with 10g, by default statistics gathering &lt;strong&gt;&lt;span&gt;MAY OR MAY NOT&lt;/span&gt;&lt;/strong&gt; invalidate the execution plan:&lt;br /&gt;&lt;blockquote&gt;Starting with Oracle10g, the DBMS_STATS package offers the AUTO_INVALIDATE option for the NO_INVALIDATE parameter of its GATHER_xxx_STATS and DELETE_xxx_STATS procedures. This parameter allows the user to specify when to invalidate dependent cursors i.e. cursors cached in the library cache area of the shared pool which reference a table, index, column or fixed object whose statistics are modified by the procedure call.&lt;br /&gt;According to the documentation the values NO_INVALIDATE can take are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;TRUE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;: &lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;does not invalidate the dependent cursors&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;FALSE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;: &lt;span style="color:#3333ff;"&gt;invalidates the dependent cursors immediately&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;AUTO_INVALIDATE (default)&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;:&lt;span style="color:#3333ff;"&gt; have Oracle decide when to invalidate dependent cursors&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;&lt;br /&gt;So if you want to be sure that the cursor is invalidated after statistics gathering, use parameter NO_INVALIDATE =&gt; FALSE with DBMS_STATS.GATHER_TABLE_STATS and other procedures.&lt;pre&gt;exec dbms_stats.gather_table_stats('USER','EMP', no_invalidate =&gt; false);&lt;/pre&gt;As for the default AUTO_INVALIDATE option , when Oracle decides him/herself whether to invalidate or not invalidate an execution plan, they give a description of how it works. To be frank, I didn't read it all now, maybe I will read it when I need this info next time. So here is the exceprt from [Doc ID: 557661.1]:&lt;br /&gt;&lt;blockquote&gt;Cursor Invalidations with Oracle10g and AUTO_INVALIDATE&lt;br /&gt;With the AUTO_INVALIDATE option the goal is to spread out the cursor invalidations over a time period long enough for hard-parses not to cause noticeable spikes.&lt;br /&gt;&lt;br /&gt;In this way a cached cursor depending on an object whose statistics have been modified by DBMS_STATS will be invalidated as follows:&lt;br /&gt;&lt;br /&gt;when DBMS_STATS modifies statistics for an object, all current cached cursors depending on this object are marked for rolling invalidation. Let's call this time T0.&lt;br /&gt;&lt;br /&gt;the next time a session parses a cursor marked for rolling invalidation, it sets a timestamp. This timestamp can take a random value up to _optimizer_invalidation_period sec from the time of this parse. The default for this parameter is 18000 sec i.e. 5 hours. Let's call the time of this parse T1 and the timestamp value Tmax. On this (first) parse we reuse the existing cursor i.e. we do not hard-parse and do not use the modified statistics to generate a new plan (it is a soft parse.)&lt;br /&gt;&lt;br /&gt;on every subsequent parse of this cursor (which is now marked for rolling invalidation and timestamped) we check whether the current time T2 exceeds the timestamp Tmax. If not, we reuse the existing cursor again, as happened on the first (soft) parse at time T1. If Tmax has been exceeded, we invalidate the cached cursor and create a new version of it (a new child cursor) which uses the new statistics of the object to generate its execution plan. The new child is marked ROLL_INVALID_MISMATCH in V$SQL_SHARED_CURSOR to explain why we could not share the previous child.&lt;br /&gt;From the above descriptions, it follows that:&lt;br /&gt;&lt;br /&gt;a cursor which is never parsed again after being marked for rolling invalidation will not be invalidated and may eventually be flushed out of the shared pool if memory becomes scarce&lt;br /&gt;a cursor which is only parsed once after being marked for rolling invalidation will not be invalidated (it will only be timestamped) and again may be eventually flushed out if memory in the shared pool becomes scarce&lt;br /&gt;cursors which are regularly reused will become invalidated on the next parse that happens after the timestamp Tmax has been exceeded&lt;br /&gt;It should be clear that the above method is efficient in that it incurs the overhead of invalidations only for frequently reused cursors.&lt;br /&gt;&lt;br /&gt;Exception: parallel SQL are immediately invalidated in order to ensure consistency between execution plans of slaves and Query Coordinator across multiple RAC instances. This is not a problem as parallel SQL are usually heavy and therefore hard-parse resources are insignificant to their total resource usage.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6832308080105024484?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6832308080105024484/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6832308080105024484' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6832308080105024484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6832308080105024484'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/04/invalidating-execution-plan-of-sql.html' title='Invalidating the execution plan of an SQL statement'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-5049842418166620988</id><published>2009-03-31T05:44:00.000-07:00</published><updated>2009-07-22T00:05:30.872-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ожидания'/><title type='text'>Оптимальный размер для лог буффера (log buffer)</title><content type='html'>В продолжение темы об ожиданиях &lt;a href="http://ragivetova.blogspot.com/2009/01/log-file-sync.html"&gt;log file sync&lt;/a&gt; - сегодня опять с ними столкнулась во время нагрузочного тестирования. Знаю, что причиной ожиданий log file sync могут быть:&lt;br /&gt;1) частые коммиты&lt;br /&gt;2) слишком большой log_buffer&lt;br /&gt;3) медленные диски, на которых находятся лог файлы.&lt;br /&gt;&lt;br /&gt;Первую и третью причину отбросила, с ними я и так ничего не могу поделать.&lt;br /&gt;Взялась за вторую причину: размер лог буфера оказался равен 45MB. У Бурлесона прочитала &lt;a href="http://www.dba-oracle.com/t_log_buffer_optimal_size.htm"&gt;советы&lt;/a&gt; об оптимальном размере лог буфера:&lt;br /&gt;&lt;blockquote&gt;MetaLink note 216205.1 Database Initialization Parameters for Oracle Applications 11i, recommends a log_buffer size of&lt;strong&gt;&lt;span style="color:#009900;"&gt; 10 megabytes&lt;/span&gt;&lt;/strong&gt; for Oracle Applications, a typical online database:&lt;br /&gt;&lt;br /&gt;A value of &lt;strong&gt;&lt;span style="color:#009900;"&gt;10MB for the log buffer is a reasonable value&lt;/span&gt;&lt;/strong&gt; for Oracle Applications and it represents a balance between concurrent programs and online users.&lt;br /&gt;&lt;br /&gt;The value of log_buffer must be a multiple of redo block size, normally 512 bytes.&lt;/blockquote&gt;&lt;br /&gt;10MB? Не много ли? Слышала очень много советов о том, что нет смысла устанавливать его больше 1МБ. Правда ли это?&lt;br /&gt;Бурлесон пишет, что есть увеличение размера лог буфера больше 1МБ реально улучшала прозводительность:&lt;br /&gt;&lt;blockquote&gt;Even though Oracle has traditionally suggested a log_buffer no greater than one meg, I have seen numerous shops where increasing log_buffer beyond one meg &lt;strong&gt;&lt;span style="color:#009900;"&gt;greatly improved throughput&lt;/span&gt;&lt;/strong&gt; and relieved undo contention.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="https://metalink.oracle.com/metalink/plsql/f?p=130:14:1634364682833660660::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,262946.1,1,1,1,helvetica"&gt;На металинке&lt;/a&gt; пишут, что нет смысла устанавливать его больше 5МБ:&lt;br /&gt;&lt;blockquote&gt;It has been noted previously that values larger than 5M may not make a difference.&lt;/blockquote&gt;&lt;br /&gt;Решила пока уменьшить лог буфер с 45МБ до 10МБ, посмотрю. Если не поможет, попробую уменьшить до 5МБ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-5049842418166620988?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/5049842418166620988/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=5049842418166620988' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5049842418166620988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5049842418166620988'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/03/log-buffer.html' title='Оптимальный размер для лог буффера (log buffer)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-850276765634862736</id><published>2009-03-20T01:54:00.000-07:00</published><updated>2009-03-20T02:13:07.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Java Console 10g'/><title type='text'>Enterprise Manager Java Console в Oracle10g</title><content type='html'>Давно искала Enterprise Manager Java Console для Oracle 10g, вначале вообще думала, что джава консоль, к которому все привыкли с предыдущих версий, заменили на Enterprise Manager Database Console для управление одной базой, и Enterprise Manager Grid Control для централизованного управления многими базами и что джава консоля в 10ке НЕТ.&lt;br /&gt;&lt;br /&gt;Вчера была приятно удивлена, когда на неизвестном компе случайно увидела джава консоль Enterprise Manager'a 10ой версии!&lt;br /&gt;&lt;br /&gt;Он оказывается устанавливается в опции Administrator в стандартном пакете установки. В &lt;a href="http://download.oracle.com/docs/html/B12012_03/appD.htm"&gt;документации &lt;/a&gt;Oracle пишут:&lt;br /&gt;&lt;blockquote&gt;In addition to using Oracle Enterprise Manager Database Control or Grid Control to manage an Oracle Database 10g database, &lt;span style="color:#009900;"&gt;&lt;strong&gt;you can also use the Oracle Enterprise Manager Java Console to manage databases from this release or previous releases.&lt;/strong&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="color:#993399;"&gt;The Java Console is installed by the Administrator installation type.&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;При установке клиента Oracle:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_jN6fOA1pqaw/ScNcahaLsvI/AAAAAAAAAM8/43FciKLS0fw/s1600-h/emjava.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315193595941860082" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 250px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_jN6fOA1pqaw/ScNcahaLsvI/AAAAAAAAAM8/43FciKLS0fw/s320/emjava.bmp" border="0" /&gt;&lt;/a&gt;Теперь у меня есть джава консоль 10ки! (до этого при установке 10го клиента специально оставила 9го клиента, чтоб только пользоваться его джава консолью!)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_jN6fOA1pqaw/ScNcnIW9FaI/AAAAAAAAANE/Vo8r-yJbw78/s1600-h/emmenu.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315193812555732386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 110px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_jN6fOA1pqaw/ScNcnIW9FaI/AAAAAAAAANE/Vo8r-yJbw78/s320/emmenu.bmp" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-850276765634862736?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/850276765634862736/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=850276765634862736' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/850276765634862736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/850276765634862736'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/03/enterprise-manager-java-console.html' title='Enterprise Manager Java Console в Oracle10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jN6fOA1pqaw/ScNcahaLsvI/AAAAAAAAAM8/43FciKLS0fw/s72-c/emjava.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4616998134178770512</id><published>2009-03-02T03:10:00.000-08:00</published><updated>2009-03-02T03:37:54.860-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Мои тренинги'/><title type='text'>Вопросы о чекпоинтах (Questions about checkpoints)</title><content type='html'>На прошлой неделе на очередном тренинге для коллег-дба, я подготовила вопросы о чекпоинтах.&lt;br /&gt;Вот несколько из них:&lt;br /&gt;&lt;br /&gt;10. Какое из следующих утверждений НЕверно о различиях между полным и инкрементальным чекпоинтами?&lt;br /&gt;a) инкрементальный чекпоинт выполняется намного чаще полного&lt;br /&gt;b) полный чекпоинт сбрасывает все грязные блоки, а инкрементальный – только часть&lt;br /&gt;c) полный чекпоинт обновляет заголовки всех online файлов данных, инкрементальный - заголовки файлов данных, в которых произошли изменения&lt;br /&gt;d) полный чекпоинт обычно вызывается переключением лог файлов, а инкрементальный – увеличением кол-ва грязных блоков и превышением их порогового значения&lt;br /&gt;&lt;br /&gt;Ответ: с&lt;br /&gt;&lt;br /&gt;Все вопросы можете скачать &lt;a href="http://depositfiles.com/files/j37e1joq9"&gt;отсюда&lt;/a&gt;. Если какие-то вопросы не укладываются в голове и вызывают протест, можете написать об этом здесь. Возможно, ваши комментарии дадут мне возможность взглянуть на чекпоинты с другой строны и увидеть то, что я не замечала раньше.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4616998134178770512?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4616998134178770512/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4616998134178770512' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4616998134178770512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4616998134178770512'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/03/questions-about-checkpoints.html' title='Вопросы о чекпоинтах (Questions about checkpoints)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3942500792462086436</id><published>2009-01-30T03:08:00.000-08:00</published><updated>2009-01-30T04:00:04.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ожидания'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Количество ожиданий в Oracle 10g (Number of Wait Events in Oracle 10g)</title><content type='html'>Сегодня читала про ожидания в Oracle 10g и наткнулась на &lt;a href="http://www.nyoug.org/Presentations/2006/06/Deshpande_Oracle%20Wait%20Interface_Keynote.pdf"&gt;эту&lt;/a&gt; презентацию, где увидела этот график:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_jN6fOA1pqaw/SYLlA-82p9I/AAAAAAAAAMs/kewmK7OfdE4/s1600-h/numberofwaits.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5297047916802123730" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_jN6fOA1pqaw/SYLlA-82p9I/AAAAAAAAAMs/kewmK7OfdE4/s400/numberofwaits.png" border="0" /&gt;&lt;/a&gt;Я знала, что в Oracle 10g появилось очень много новых событий ожидания (wait events) но даже не думала, что настоолько много! Первым делом решила проверить это и посчитала кол-во событий ожидания в версиях 9i и 10g:&lt;br /&gt;&lt;br /&gt;В Oracle 9.2.0.8:&lt;pre&gt;SQL&gt; select count(*) from v$event_name;&lt;br /&gt;&lt;br /&gt;  COUNT(*)&lt;br /&gt;----------&lt;br /&gt;       &lt;strong&gt;406&lt;/strong&gt;&lt;/pre&gt;В Oracle 10.2.0.4:&lt;pre&gt;SQL&gt; select count(*) from v$event_name;&lt;br /&gt;&lt;br /&gt;  COUNT(*)&lt;br /&gt;----------&lt;br /&gt;       &lt;strong&gt;889&lt;/strong&gt;&lt;/pre&gt;В 10g кол-во ожиданий увеличилось больше чем вдвое: было 406, стало 889! &lt;a href="http://www.dbspecialists.com/files/presentations/wait_events_10g.html"&gt;Здесь&lt;/a&gt; пишут, что события ожидания в Oracle 10g стали более "descriptive", то есть более описательными, более детальными. &lt;blockquote&gt;Wait event names in Oracle 10g are more descriptive in the areas of latches, enqueues, and buffer busy waits. &lt;/blockquote&gt;&lt;a href="http://ragivetova.blogspot.com/2009/01/buffer-busy-waits-read-by-other-session.html"&gt;Здесь&lt;/a&gt; я писала об одном из таких примеров, когда из ожидания &lt;span style="font-family:courier new;"&gt;buffer busy waits&lt;/span&gt; "родилось и отколось" ожидание &lt;span style="font-family:courier new;"&gt;read by other session&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3942500792462086436?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3942500792462086436/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3942500792462086436' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3942500792462086436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3942500792462086436'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/01/oracle-10g-waits-in-oracle-10g.html' title='Количество ожиданий в Oracle 10g (Number of Wait Events in Oracle 10g)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jN6fOA1pqaw/SYLlA-82p9I/AAAAAAAAAMs/kewmK7OfdE4/s72-c/numberofwaits.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-749153139602963144</id><published>2009-01-29T04:56:00.000-08:00</published><updated>2009-01-29T05:35:41.208-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Internals'/><title type='text'>Размер redo блоков (Redo log block size)</title><content type='html'>Сегодня хотела бы написать об размере блоков redo log buffer'а. Все мы знаем, о размере блока базы данных, который устанавливается параметром &lt;span style="font-family:courier new;"&gt;db_block_size&lt;/span&gt;, и который задает размер блоков в файлах данных и размер буфферов в буфферном кеше.&lt;br /&gt;&lt;br /&gt;А какая структура у redo log buffer'а? Понятно, что она - &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;цикличная&lt;/span&gt;&lt;/strong&gt;, запись в него выполняется &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;последовательно&lt;/span&gt;&lt;/strong&gt;, не то что в буфферном кеше или в файлах данных, когда чтение и запись выполняется &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;вразброс&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Мне всегда казалось, что если она цикличная и запись в него последовательная, то и думать тут не о чем: значит у него и структура памяти какая-то неразрывная, что ли.&lt;br /&gt;&lt;br /&gt;Сегодня, когда пыталась понять смысл латча &lt;span style="font-family:courier new;"&gt;redo allocation&lt;/span&gt;, не могла понять, зачем вообще нужен этот латч... Что тут выделять-то? Память под redo log buffer уже выделена же в SGA. У &lt;a href="http://www.ixora.com.au/notes/redo_latching.htm"&gt;Стива Адамса&lt;/a&gt; прочитала следующее:&lt;br /&gt;&lt;blockquote&gt;The redo allocation latch must be taken to allocate space in the log buffer. This latch protects the SGA variables that are used to track which &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;log buffer blocks are used and free&lt;/span&gt;&lt;/strong&gt;.&lt;/blockquote&gt;Вот так я узнала, что redo log buffer состоит из блоков одинакового размера, а его цикличность - это структура данных, а в памяти они могут находится вразброс.&lt;br /&gt;&lt;br /&gt;А теперь, собственно, про размер блоков redo log buffer'а. Стив Адамс пишет &lt;a href="http://www.ixora.com.au/notes/log_block_size.htm"&gt;здесь&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Although the size of redo entries is measured in bytes, LGWR writes the redo to the log files on disk in blocks. The size of redo log blocks is fixed in the Oracle source code and is operating system specific. &lt;/blockquote&gt;Перевод: Хотя размер redo измеряется в &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;байтах&lt;/span&gt;&lt;/strong&gt;, LGWR пишет red в лог файлы на дисках в &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;блоках&lt;/span&gt;&lt;/strong&gt;. &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Размер redo блоков зашит в код ядра Oracle и зависит от операционной системы.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;То есть размер redo блоков &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;невозможно&lt;/span&gt;&lt;/strong&gt; изменить параметром инициализации как размер блоков данных db_block_size.&lt;br /&gt;&lt;br /&gt;Ниже, он приводит размеры redo блоков в разных ОС:&lt;br /&gt;&lt;pre&gt;Log Block Size    Operating Systems&lt;br /&gt;512 bytes         Solaris, Windows, UnixWare&lt;br /&gt;1024 bytes        HP-UX, Tru64 Unix&lt;br /&gt;2048 bytes        SCO Unix, Reliant Unix&lt;br /&gt;4096 bytes        MVS, MPE/ix&lt;/pre&gt;А так же, фактический размер redo блоков можно узнать следующим способом:&lt;br /&gt;&lt;pre&gt;SQL&gt; select max(lebsz) from sys.x$kccle;&lt;br /&gt;&lt;br /&gt;MAX(LEBSZ)&lt;br /&gt;----------&lt;br /&gt;       512&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-749153139602963144?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/749153139602963144/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=749153139602963144' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/749153139602963144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/749153139602963144'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/01/redo-redo-log-block-size.html' title='Размер redo блоков (Redo log block size)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2446509165790735</id><published>2009-01-28T05:45:00.000-08:00</published><updated>2009-01-28T06:43:52.509-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ожидания'/><title type='text'>Ожидания log file sync</title><content type='html'>Сессия, ожидает события &lt;span style="font-family:courier new;"&gt;log file sync&lt;/span&gt;, в то время как LGWR сбрасывает redo-информации из redo log buffer в redo log файлы.&lt;br /&gt;&lt;br /&gt;Подробней: скажем какая-то сессия апдейтит какую-то таблицу. То есть выполняя апдейт, она генерит redo-информацию и записывает их в redo log buffer. В тот самый момент, когда сессия пишет redo-информацию в redo log buffer, &lt;span style="font-family:courier new;"&gt;LGWR &lt;/span&gt;сидит и ждет. Как только сессия коммитит транзакцию, &lt;span style="font-family:courier new;"&gt;LGWR&lt;/span&gt;у нужно сбросить  redo-информацию из redo log buffer в redo log файлы и выдать сессии подверждение, что транзакция закоммичена. И пока &lt;span style="font-family:courier new;"&gt;LGWR&lt;/span&gt; сбрасывает redo-информацию из redo log buffer в redo log файлы, сессия ожидает события &lt;span style="font-family:courier new;"&gt;log file sync&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Мой коллега говорит, что это ожидание возникает только при commit'е сессии. Том Кайт тоже &lt;a href="http://oracle.ukrsat.com/tutorial/openxs.php?n=65"&gt;здесь &lt;/a&gt;пишет, что это ожидание возникает только при коммите:&lt;blockquote&gt;log file sync - это клиентское ожидание события. Именно этого события ваши клиенты ждут, когда говорят "commit". Это ожидание, пока процесс LGWR фактически запишет их данные повторного выполнения на диск и фиксация транзакции будет завершена. Можно "настроить" этот процесс, ускорив работу процесса lgwr (отказавшись от использования raid 5, например) и фиксируя транзакции реже, генерируя меньше данных повторного выполнения (множественные изменения генерируют меньше данных повторного выполнения, чем построчные)&lt;/blockquote&gt;А как же сброс redo-информации из redo log buffer в redo-файлы &lt;strong style="color: rgb(0, 153, 0);"&gt;по истечению 3 секунд&lt;/strong&gt;, при &lt;strong style="color: rgb(0, 153, 0);"&gt;заполнении redo log buffer'а на 1/3&lt;/strong&gt; и тд?&lt;br /&gt;&lt;br /&gt;Если кто-то знает точный ответ на этот вопрос, напишите здесь.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2446509165790735?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2446509165790735/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2446509165790735' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2446509165790735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2446509165790735'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/01/log-file-sync.html' title='Ожидания log file sync'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8795599582254910532</id><published>2009-01-21T04:21:00.000-08:00</published><updated>2009-01-21T06:37:48.886-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Тюнинг'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>"buffer busy waits" и "read by other session"</title><content type='html'>В Oracle 10g появились ожидания &lt;span style="font-family:courier new;"&gt;read by other session&lt;/span&gt;, которые являются частным и "отколовшимся" случаем ожиданий &lt;span style="font-family:courier new;"&gt;buffer busy waits&lt;/span&gt;. Вот что пишут в &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/waitevents003.htm#sthref3159"&gt;документации&lt;/a&gt; Oracle о них:&lt;br /&gt;&lt;blockquote&gt;This event ['read by other session'] occurs when &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;a session requests a buffer that is currently being read into the buffer cache by another session&lt;/span&gt;&lt;/strong&gt;. Prior to release 10.1, waits for this event ['read by other session'] were grouped with the other reasons for waiting for buffers under the 'buffer busy wait' event.&lt;/blockquote&gt;Наталья Гусева, одна из суперских ДБА, которых я знаю, подсказала, что &lt;span style="font-family:courier new;"&gt;read by other session&lt;/span&gt; - это тот же &lt;span style="font-family:courier new;"&gt;buffer busy waits&lt;/span&gt; &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;с reason code = 130&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;blockquote&gt;Reason code = &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;130&lt;/span&gt;&lt;/strong&gt;: Block is being read by another session, and no other suitable block image was found, so we wait until the read is completed. This may also occur after a buffer cache assumed deadlock. The kernel can't get a buffer in a certain amount of time and assumes a deadlock. Therefore it will read the CR version of the block.&lt;/blockquote&gt;Полный список и описание reason code можно почитать &lt;a href="http://articles.techrepublic.com.com/5100-10878_11-5110875.html"&gt;здесь&lt;/a&gt;, правда там говорится применительно версии 9i.&lt;br /&gt;&lt;br /&gt;Ожидания &lt;span style="font-family:courier new;"&gt;read by other session&lt;/span&gt; возникают, когда какая-то сессия пытается прочитать блок из диска в буферный кеш, в тот момент когда другая сессия уже читает ее из диска в буферный кеш.&lt;br /&gt;&lt;br /&gt;В моей практике, причины таких внезапных ожиданий в продуктивных базах были - неэффективные планы выполнений, когда планы "сбиваются" по каким-то причинам.&lt;br /&gt;&lt;br /&gt;В тестовых базах такие ожидания появлялись, когда кто-то забывал создать индексы после переноса схемы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8795599582254910532?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8795599582254910532/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8795599582254910532' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8795599582254910532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8795599582254910532'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/01/buffer-busy-waits-read-by-other-session.html' title='&quot;buffer busy waits&quot; и &quot;read by other session&quot;'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4120896016622311792</id><published>2009-01-16T05:31:00.000-08:00</published><updated>2009-01-16T07:54:45.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='О тем о сём'/><title type='text'>Новый шаблон в новом году</title><content type='html'>Сегодня обновила шаблон блога на новый, захотелось сделать очередное "что-то новое" в новом году. &lt;br /&gt;&lt;br /&gt;Новый шаблон очень необычный, по крайней мере для блога по Ораклу, но мне нравится.&lt;br /&gt;&lt;br /&gt;Я его скачала &lt;a href="http://www.blogspottemplate.com/"&gt;на этом сайте&lt;/a&gt; - они раздают бесплатные шаблоны для блогов Blogspot.com, видимо, зарабатывают на рекламе.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4120896016622311792?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4120896016622311792/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4120896016622311792' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4120896016622311792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4120896016622311792'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2009/01/blog-post.html' title='Новый шаблон в новом году'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2258015717799907182</id><published>2008-12-23T01:03:00.000-08:00</published><updated>2008-12-23T03:49:58.326-08:00</updated><title type='text'>FGA в 9i и 10g</title><content type='html'>Оказывается в Oracle 9i FGA позволяет аудитить &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;только &lt;/span&gt;SELECTы, а в 10g появилась возможность аудитить и INSERT, UPDATE, DELETE.&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/pub/articles/nanda_fga_pt3.html"&gt;Здесь&lt;/a&gt; пишут как настраивать этот параметр:&lt;br /&gt;&lt;blockquote&gt;Under Oracle 9i Database, this policy could &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;only audit SELECT statements&lt;/span&gt;. In Oracle Database 10g, however, you can extend it to include &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;INSERT, UPDATE, and DELETE as well&lt;/span&gt;. You would do so by specifying a new parameter:&lt;br /&gt;&lt;br /&gt;statement_types =&gt; 'INSERT, UPDATE, DELETE, SELECT'&lt;br /&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;br /&gt;begin&lt;br /&gt; dbms_fga.add_policy(object_schema   =&gt; 'SCOTT',&lt;br /&gt;                     object_name     =&gt; 'DEPT',&lt;br /&gt;                     policy_name     =&gt; 'DEPT_AUDIT',&lt;br /&gt;                     audit_column    =&gt; 'DNAME',&lt;br /&gt;                     statement_types =&gt; 'INSERT, UPDATE',&lt;br /&gt;                     audit_trail     =&gt; DBMS_FGA.DB_EXTENDED);&lt;br /&gt;end;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2258015717799907182?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2258015717799907182/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2258015717799907182' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2258015717799907182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2258015717799907182'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/12/fga-9i-10g.html' title='FGA в 9i и 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6980928017066886894</id><published>2008-11-26T01:48:00.000-08:00</published><updated>2008-11-26T02:05:40.477-08:00</updated><title type='text'>Сайт об оптимизации производительности БД Oracle</title><content type='html'>Сегодня наткнулась на сайт &lt;a href="http://www.novoelba.ru"&gt;http://www.novoelba.ru&lt;/a&gt; об оптимизации производительности БД Oracle. &lt;br /&gt;&lt;br /&gt;Авторы &lt;a href="http://www.novoelba.ru/tiki-index.php?page=Optimization"&gt;сайта &lt;/a&gt;предлагают соптимизировать производительность любых "безнадежных" баз данных Oracle:&lt;br /&gt;&lt;br /&gt;"Мы поможем Вам ускорить «безнадёжные» отчеты, даже если Вам, возможно, уже сообщили, что ускорить их невозможно без покупки нового дорогого оборудования."&lt;br /&gt;&lt;br /&gt;Прикольно, кажется впервые в Рунете вижу службу, которая предлагает такую услугу. Чем-то напоминает консалтинг от Бурлесона &lt;a href="http://www.dba-oracle.com"&gt;http://www.dba-oracle.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6980928017066886894?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6980928017066886894/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6980928017066886894' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6980928017066886894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6980928017066886894'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/11/oracle.html' title='Сайт об оптимизации производительности БД Oracle'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1115698038945039128</id><published>2008-09-16T05:34:00.000-07:00</published><updated>2008-09-16T05:53:40.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Вопросы категории &quot;Как ...?&quot;'/><title type='text'>Как узнать старый пароль дблинка (если он был изменен недавно)?</title><content type='html'>Как вы думаете, как можно узнать старый пароль дблинка (database link), который был изменен совсем недавно?&lt;br /&gt;Один мой коллега (НЕ ДБА!) предложил суперский вариант, как это можно сделать: &lt;strong&gt;&lt;span style="color:#009900;"&gt;посмотреть флешбеком (flashback) состояние системной таблицы, в которой хранится информация о дблинках.&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;Смотрим, к каким системным таблицам обращается вьюшка &lt;span style="font-family:courier new;"&gt;dba_db_links&lt;/span&gt;:&lt;pre&gt;create or replace view dba_db_links&lt;br /&gt;(owner, db_link, username, host, created)&lt;br /&gt;as&lt;br /&gt;select u.name, l.name, l.userid, l.host, l.ctime&lt;br /&gt;from &lt;strong&gt;&lt;span style="color:#000099;"&gt;sys.link$&lt;/span&gt;&lt;/strong&gt; l, sys.user$ u&lt;br /&gt;where l.owner# = u.user#&lt;/pre&gt;Дальше, флешбеком смотрим состояние системной таблицы &lt;span style="font-family:courier new;"&gt;sys.link$&lt;/span&gt; на час назад:&lt;pre&gt;SQL&gt; select name, userid, password&lt;br /&gt;     from sys.link$ &lt;strong&gt;&lt;span style="color:#009900;"&gt;as of timestamp(sysdate-1/24)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;     where name ='MYDBLINK';&lt;br /&gt;&lt;br /&gt;NAME                 USERID     PASSWORD&lt;br /&gt;-------------------- ---------- ----------&lt;br /&gt;MYDBLINK             USERNAME   OLDPASSWD&lt;/pre&gt;OLDPASSWD - это наш старый пароль. Чтоб убедиться, что мы нашли то, что нужно посмотрим текущий пароль:&lt;pre&gt;SQL&gt; select name, userid, password&lt;br /&gt;     from sys.link$ &lt;strong&gt;&lt;span style="color:#009900;"&gt;as of timestamp(sysdate)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;     where name ='KI_ICR002';&lt;br /&gt;&lt;br /&gt;NAME                 USERID     PASSWORD&lt;br /&gt;-------------------- ---------- ----------&lt;br /&gt;MYDBLINK             USERNAME   NEWPASSWD&lt;/pre&gt;Вот так вот нашли только что измененный пароль. А я уже хотела логмайнером (logminer) порыться в реду-логах (redo). Правда, описанный выше метод сработает только если изменения были сделаны совсем недавно, то есть в пределах &lt;span style="font-family:courier new;"&gt;undo_retention&lt;/span&gt; (не всегда гарантированно).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1115698038945039128?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1115698038945039128/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1115698038945039128' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1115698038945039128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1115698038945039128'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/09/blog-post.html' title='Как узнать старый пароль дблинка (если он был изменен недавно)?'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2793818622670455764</id><published>2008-09-01T01:22:00.000-07:00</published><updated>2008-09-01T01:33:39.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Flush buffer cache</title><content type='html'>Эта команда используется и в Oracle 9i и в 10g для сброса разделяемого пула. &lt;pre&gt;alter system flush shared_pool&lt;/pre&gt;В Oracle 10g есть аналогичная команда, сбрасывающая буферный кеш: &lt;pre&gt;alter system flush buffer_cache;&lt;/pre&gt;Только было бы замечательно уточнить, что именно происходит при сбросе буферного кеша: во-первых, записываются измененные блоки в файлы данных. Может вся хеш-таблица буферного кеша тоже чистится?&lt;br /&gt;&lt;br /&gt;В Oracle 9i такой команды нет, но, оказывается можно сбросить буферный кеш установкой события: &lt;pre&gt;alter session set events = 'immediate trace name flush_cache';&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2793818622670455764?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2793818622670455764/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2793818622670455764' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2793818622670455764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2793818622670455764'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/09/flush-buffer-cache.html' title='Flush buffer cache'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2445137175081928113</id><published>2008-08-29T01:41:00.000-07:00</published><updated>2008-09-01T01:21:23.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Тюнинг'/><title type='text'>Тюнинг базы на Oracle 10g</title><content type='html'>Давно не писала в блоге, сегодня решила написать хоть что-нить. Раньше всегда пыталась писать в блоге чисто с технической точки зрения, не включая мое личное отношение к разным фичерам и особенностям Оракла. Мне кажется в последующих моих постингах будет больше "меня".&lt;br /&gt;&lt;br /&gt;Недавно оптимизировала базу на Oracle 10.2.0.3, которая используется для CRM-системы. Провели нагрузочное тестирование, по результатам которого выяснили, что на 300-400 одновременных пользователях активно выполняющих те или иные операции, база начинает виснуть. Удалось поднять производительность более чем в 4 раза.&lt;br /&gt;&lt;br /&gt;Если честно, очень понравилось оптимизировать базу на 10ке: &lt;strong&gt;&lt;span style="color:#009900;"&gt;даже самые незначительные новые особенности облегчают работу по оптимизации.&lt;/span&gt;&lt;/strong&gt; Например, динамические представления&lt;strong&gt; &lt;span style="color:#009900;"&gt;V$SESSION и V$SQL значительно расширены&lt;/span&gt; &lt;/strong&gt;и содержат много полезной и необходимой информации.&lt;br /&gt;&lt;br /&gt;В Oracle 10g в V$SESSION можно посмотреть ожидания каждой сессии, не связывая его с V$SESSION_WAIT. То есть V$SESSION содержит все столбцы V$SESSION_WAIT:&lt;pre&gt;SQL&gt; set pagesize 100&lt;br /&gt;SQL&gt; column event# format 999&lt;br /&gt;SQL&gt; column wait_class format A15&lt;br /&gt;SQL&gt; column event format A30&lt;br /&gt;SQL&gt; select event#, event, wait_class, state&lt;br /&gt;  2  from v$session where username is not null;&lt;br /&gt;&lt;br /&gt;EVENT# EVENT                          WAIT_CLASS      STATE&lt;br /&gt;------ ------------------------------ --------------- -------------------&lt;br /&gt;   256 SQL*Net message from client    Idle            WAITING&lt;br /&gt;    30 Backup: sbtwrite2              Administrative  WAITING&lt;br /&gt;   256 SQL*Net message from client    Idle            WAITING&lt;br /&gt;   256 SQL*Net message from client    Idle            WAITING&lt;br /&gt;   252 SQL*Net message to client      Network         WAITED SHORT TIME&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2445137175081928113?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2445137175081928113/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2445137175081928113' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2445137175081928113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2445137175081928113'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/08/oracle-10g.html' title='Тюнинг базы на Oracle 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1915708058935428743</id><published>2008-08-05T01:37:00.000-07:00</published><updated>2008-08-08T07:20:06.662-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOBы'/><title type='text'>Ожидания при чтении и записи LOBов</title><content type='html'>Вчера я пыталась создать копию таблицы, у которой был столбец типа BLOB. Заливка данных повисла, и я оставила ее висеть до утра :D К тому же это было не к спеху. Таблица была средненькая: около 700 тыс. записей, весит 2 гига. Знала, что это из-за LOBа так висит, и сегодня решила докапаться до истины. И так все по-порядку.&lt;br /&gt;&lt;br /&gt;Сперва пыталась создать копию таблицы обычным "&lt;span style="font-family:courier new;"&gt;create table ... as select&lt;/span&gt;", думала средненькая таблица скопируется быстро, но не тут-то было. Висела больше часа, пока не кильнула сессию. С опцией &lt;span style="font-family:courier new;"&gt;nologging&lt;/span&gt; тоже самое, через несколько часов и ее убила:&lt;br /&gt;&lt;pre&gt;create table new_blob_table as select * from orig_blob_table;&lt;br /&gt;&lt;br /&gt;create table new_blob_table nologging as select * from orig_blob_table;&lt;/pre&gt;А direct path insert командой &lt;span style="font-family:courier new;"&gt;insert /*+ append */&lt;/span&gt; тоже висела пару часов, и я, добрая, оставила ее висеть до утра:&lt;br /&gt;&lt;pre&gt;create table new_blob_table as select * from orig_blob_table where 1=2;&lt;br /&gt;&lt;br /&gt;insert /*+ append */ into new_blob_table select * from orig_blob_table;&lt;/pre&gt;Во время всех этих попыток, сессия ожидала события &lt;span style="font-family:courier new;"&gt;direct path write (lob):&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;SQL&gt; select event&lt;br /&gt;     from v$session_wait&lt;br /&gt;     where sid=969;&lt;br /&gt;&lt;br /&gt;EVENT&lt;br /&gt;-------------------------&lt;br /&gt;direct path write (lob)&lt;/pre&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;При прямой записи - direct path write - запись происходит В ОБХОД буферного кеша прямо в файлы данных.&lt;/span&gt;&lt;/strong&gt; Запись выполняется &lt;strong&gt;&lt;span style="color:#009900;"&gt;серверным процессом&lt;/span&gt;&lt;/strong&gt; (а не процессом DBWR, как в обычной записи), который в &lt;strong&gt;&lt;span style="color:#009900;"&gt;pga&lt;/span&gt;&lt;/strong&gt; сессии подготавливает блоки и записывать их &lt;strong&gt;&lt;span style="color:#009900;"&gt;за отметкой HWM&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Бурлесон перечисляет список операций, которые могут выполнять операцию прямой записи (direct path write) и вызывать соответствущие ожидания:&lt;br /&gt;&lt;blockquote&gt;Operations that could perform direct path writes include when&lt;br /&gt;1) a sort goes to disk,&lt;br /&gt;2) during parallel DML operations,&lt;br /&gt;3) direct-path inserts,&lt;br /&gt;4) parallel create table as select, and&lt;br /&gt;5) some LOB operations.&lt;/blockquote&gt;Наш случай - последний, связанный с LOBами. Вот что пишут в документации Oracle о прямой записи (direct path write) и параметре CACHE/NOCACHE LOB-сегментов:&lt;br /&gt;&lt;blockquote&gt;With the &lt;strong&gt;&lt;span style="color:#009900;"&gt;CACHE&lt;/span&gt;&lt;/strong&gt; option, LOB data reads show up as wait event 'db file sequential read', writes are performed by the DBWR process.&lt;br /&gt;&lt;br /&gt;With the &lt;strong&gt;&lt;span style="color:#009900;"&gt;NOCACHE&lt;/span&gt;&lt;/strong&gt; option, LOB data reads/writes show up as wait events:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;direct path read (lob)/direct path write (lob)&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Corresponding statistics are:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;physical reads direct (lob)&lt;/span&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;physical writes direct (lob)&lt;/span&gt;&lt;/strong&gt;.&lt;/blockquote&gt;О параметре CACHE BLOB-сегментов, я писала &lt;a href="http://ragivetova.blogspot.com/2008/07/cache-lob.html"&gt;недавно здесь&lt;/a&gt;. Получается, что когда я создавала таблицу командой &lt;span style="font-family:courier new;"&gt;create table ... as select ...&lt;/span&gt;, LOB-сегмент таблицы создались с параметром NOCACHE, который и ведет к ожиданиям &lt;span style="font-family:courier new;"&gt;direct path write (lob)&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;SQL&gt; select table_name, column_name, cache&lt;br /&gt;     from dba_lobs&lt;br /&gt;     where table_name='NEW_BLOB_TABLE';&lt;br /&gt;&lt;br /&gt;TABLE_NAME           COLUMN_NAME          CACHE&lt;br /&gt;-------------------- -------------------- --------&lt;br /&gt;NEW_BLOB_TABLE       BLOB_COLUMN          &lt;strong&gt;NO&lt;/strong&gt;&lt;/pre&gt;То есть новую таблицу нужно либо изначально создать с параметром CACHE LOB-сегмента:&lt;br /&gt;&lt;pre&gt;create table new_blob_table&lt;br /&gt;lob (blob_column) store as (&lt;strong&gt;cache&lt;/strong&gt;)&lt;br /&gt;as select * from orig_blob_table where 1=2;&lt;/pre&gt;или после создания пустой таблицы (where 1=2), изменить параметр CACHE LOB-сегмента:&lt;br /&gt;&lt;pre&gt;alter table new_blob_table modify lob (request_content) (&lt;strong&gt;cache&lt;/strong&gt;);&lt;/pre&gt;Теперь, заливка длится чуть больше 1 минуты (!!!):&lt;br /&gt;&lt;pre&gt;SQL&gt; create table new_blob_table&lt;br /&gt;     lob (blob_column) store as (cache)&lt;br /&gt;     as select * from orig_blob_table where 1=2;&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; set timing on&lt;br /&gt;SQL&gt; insert /*+ append */ into new_blob_table select * from orig_blob_table;&lt;br /&gt;&lt;br /&gt;642966 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:01:12.83&lt;/pre&gt;Даже обычный инсерт отработал всего 4 минуты!&lt;br /&gt;&lt;pre&gt;SQL&gt; insert into new_blob_table select * from orig_blob_table;&lt;br /&gt;&lt;br /&gt;642966 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:04:18.85&lt;/pre&gt;Странно, что если создавать НЕпустую таблицу командой create table ... as select ... с параметром CACHE LOB-сегмента, он все равно зависает с ожиданиями direct path write (lob):&lt;br /&gt;&lt;pre&gt;create table new_blob_table&lt;br /&gt;lob (blob_column) store as (cache)&lt;br /&gt;as select * from orig_blob_table;&lt;/pre&gt;Теперь, при заливке командой &lt;span style="font-family:courier new;"&gt;insert /*+ append */&lt;/span&gt;, ожидания записи &lt;span style="font-family:courier new;"&gt;direct path write (lob)&lt;/span&gt; исчезли, есть коротенькие ожидания, но это уже ожидания чтения &lt;span style="font-family:courier new;"&gt;db file sequential read&lt;/span&gt; и &lt;span style="font-family:courier new;"&gt;db file scattered read&lt;/span&gt;. А статистика &lt;span style="font-family:courier new;"&gt;physical writes direct (lob)&lt;/span&gt; заменилась на &lt;span style="font-family:courier new;"&gt;physical writes direct&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Вот. Получается, что с &lt;span style="font-family:courier new;"&gt;insert /*+ append */&lt;/span&gt; происходит &lt;strong&gt;&lt;span style="color:#009900;"&gt;прямая запись&lt;/span&gt;&lt;/strong&gt;, но видимо эта запись уже отличается прямой записи БЛОБов. Если у кого-то есть более подробное описание всего этого, буду рада послушать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1915708058935428743?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1915708058935428743/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1915708058935428743' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1915708058935428743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1915708058935428743'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/08/lob.html' title='Ожидания при чтении и записи LOBов'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1678241411756561662</id><published>2008-08-01T07:11:00.000-07:00</published><updated>2008-08-05T01:17:28.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Партиционирование'/><title type='text'>Партиционирование существующей таблицы</title><content type='html'>Как лучше всего партиционировать существующую таблицу, которая &lt;strong&gt;&lt;span style="color:#009900;"&gt;уже содержит большой объем данных&lt;/span&gt;&lt;/strong&gt;?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#993300;"&gt;1) Создать новую партиционированную таблицу и залить данные из старой&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;CREATE TABLE ... PARTITION BY (RANGE)...&lt;br /&gt;INSERT INTO ... SELECT * FROM not_partitioned_table;&lt;br /&gt;или&lt;br /&gt;INSERT /*+ append */INTO ... SELECT * FROM not_partitioned_table;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:#993300;"&gt;2) Создать новую партиционированную таблицу из старой таблицы&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;CREATE TABLE partitioned_table&lt;br /&gt;PARTITION BY (RANGE) ...&lt;br /&gt;AS SELECT * FROM not_partitioned_table;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;3) С помощью EXCHANGE PARTITION&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;ALTER TABLE partitioned_table&lt;br /&gt;EXCHANGE PARTITION calls_01012008&lt;br /&gt;WITH TABLE not_partitioned_table;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;&lt;span style="color:#993300;"&gt;4) С помощью пакета DBMS_REDEFITION&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Во всех вышеперечисленных вариантах партиционирования существующей таблицы для активной системы по любому понадобится даунтайм таблицы, кроме 4 пункта(использование DBMS_REDEFINITION).&lt;br /&gt;&lt;br /&gt;Теперь, попробую более подробно описать каждый из вариантов.&lt;br /&gt;Скажем, у нас есть партиционированная таблица NOT_PARTITIONED_TABLE, в которой хранятся данные о звонках.&lt;pre&gt;SQL&gt; create table not_partitioned_table (&lt;br /&gt;  id number,&lt;br /&gt;  dialed_number varchar2(100),&lt;br /&gt;  call_date date&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; --- заполним таблицу звонковыми данными: 1 миллион записей, маловато, но пойдет&lt;br /&gt;SQL&gt; declare&lt;br /&gt;     start_date date;&lt;br /&gt;begin&lt;br /&gt;     start_date:=to_date('01.01.2008','DD.MM.YYYY');&lt;br /&gt;     for i in 1..1000000 loop&lt;br /&gt;         insert into not_partitioned_table values&lt;br /&gt;                      (i, '1234567890', start_date + (i-1)/24/60/10);&lt;br /&gt;     end loop;&lt;br /&gt;     commit;&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;/pre&gt;В итоге, у нас есть непартиционированная таблица NOT_PARTITIONED_TABLE с 1 миллионом записей о звонках с 1 по 7 января 2008 года:&lt;pre&gt;SQL&gt; select trunc(call_date), count(*)&lt;br /&gt;     from not_partitioned_table&lt;br /&gt;     group by trunc(call_date);&lt;br /&gt;&lt;br /&gt;TRUNC(CAL   COUNT(*)&lt;br /&gt;--------- ----------&lt;br /&gt;01-JAN-08     144000&lt;br /&gt;02-JAN-08     144000&lt;br /&gt;03-JAN-08     144000&lt;br /&gt;04-JAN-08     144000&lt;br /&gt;05-JAN-08     144000&lt;br /&gt;06-JAN-08     144000&lt;br /&gt;07-JAN-08     136000&lt;br /&gt;&lt;br /&gt;7 rows selected. &lt;/pre&gt;Наша цель: партиционировать эту таблицу с наименьшим даунтаймом таблицы.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;Вариант 1: Создать новую партиционированную таблицу и залить данные из старой&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;План действий такой:&lt;br /&gt;- Создаем новую партиционированную таблицу&lt;br /&gt;- Можно заблокировать непартиционированной таблицу, чтоб никто не смог изменить данные во время заливки&lt;br /&gt;- Заливаем данные из непартиционированной таблицу&lt;br /&gt;- Удаляем непартиционированную таблицу&lt;br /&gt;- Переименовываем новую партиционированную таблицу&lt;pre&gt;SQL&gt; create table partitioned_table (&lt;br /&gt;       id number,&lt;br /&gt;       dialed_number varchar2(100),&lt;br /&gt;       call_date date)&lt;br /&gt;     partition by range (call_date)&lt;br /&gt;     (&lt;br /&gt;     partition calls_01012008 values less than (to_date('02.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_02012008 values less than (to_date('03.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_03012008 values less than (to_date('04.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_04012008 values less than (to_date('05.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_05012008 values less than (to_date('06.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_06012008 values less than (to_date('07.01.2008','DD.MM.YYYY')),&lt;br /&gt;     partition calls_maxvalue values less than (maxvalue)&lt;br /&gt;     );&lt;br /&gt;Table created. &lt;/pre&gt;Перед заливкой заблокируем таблицу в режиме EXCLUSIVE командой LOCK TABLE, чтоб пока мы заливаем данные, никто не смог изменить данные в них или добавить новые.&lt;pre&gt;SQL&gt; set timing on&lt;br /&gt;SQL&gt; set autotrace on statistics&lt;br /&gt;SQL&gt; lock table not_partitioned_table in exclusive mode;&lt;br /&gt;&lt;br /&gt;Table(s) Locked.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:00:00.07&lt;/pre&gt;Теперь зальем данные командой INSERT. Сперва посмотрим заливку обычным INSERTом:&lt;pre&gt;SQL&gt; insert into partitioned_table select * from not_partitioned_table;&lt;br /&gt;&lt;br /&gt;1000000 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:07:53.31&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;       5666  recursive calls&lt;br /&gt;      42061  db block gets&lt;br /&gt;      11930  consistent gets&lt;br /&gt;       4035  physical reads&lt;br /&gt;&lt;strong&gt;   35909076  redo size&lt;/strong&gt;&lt;br /&gt;        357  bytes sent via SQL*Net to client&lt;br /&gt;        345  bytes received via SQL*Net from client&lt;br /&gt;          3  SQL*Net roundtrips to/from client&lt;br /&gt;          4  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;    1000000  rows processed&lt;/pre&gt;Заливка 1 миллиона записей длилась почти 8 минут. Инсерт сгенерил 35 909 076 байт redo - это почти равно размеру непартиционированной таблицы, таблица весит 33 554 432 байт.&lt;pre&gt;SQL&gt; select bytes from dba_segments&lt;br /&gt;     where segment_name like 'NOT_PARTITIONED_TABLE';&lt;br /&gt;&lt;br /&gt;     BYTES&lt;br /&gt;----------&lt;br /&gt;  33554432&lt;/pre&gt;Теперь попробуем залить те же данные прямым инсертом (direct path insert), командой INSERT /*+ APPEND */.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Direct Path Insert&lt;/span&gt;&lt;/strong&gt; отличается от обычного инсерта тем, что вставка происходит:&lt;br /&gt;1) в обход буферного кеша&lt;br /&gt;2) новые блоки добавляются за отметкой HWM&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;То есть новые блоки данных подготавливаются в pga сессии и в обход буферного кеша добавляются ЗА отметкой HWM&lt;/span&gt;&lt;/strong&gt;, если даже до отметки HWM есть свободное место для данных. Как объясняет Том Кайт, неправильно считать, что при таком инсерте (direct path insert) вообще не генерится redo. Redo по-любому генерится, но совсем малюсенький по сравнению с обычным инсертом, что существенно увеличивает скорость заливки.&lt;br /&gt;После таких заливок следует сделать полный бэкап базы на всякий случай.&lt;pre&gt;SQL&gt; insert /*+ append */ into partitioned_table&lt;br /&gt;     select * from not_partitioned_table;&lt;br /&gt;&lt;br /&gt;1000000 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:00:03.15&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;       5710  recursive calls&lt;br /&gt;       3735  db block gets&lt;br /&gt;       5928  consistent gets&lt;br /&gt;       3670  physical reads&lt;br /&gt;&lt;strong&gt;     343352  redo size&lt;/strong&gt;&lt;br /&gt;        351  bytes sent via SQL*Net to client&lt;br /&gt;        359  bytes received via SQL*Net from client&lt;br /&gt;          3  SQL*Net roundtrips to/from client&lt;br /&gt;          2  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;    1000000  rows processed &lt;/pre&gt;Заливка "инсерт аппендом" закончилась за 3 минуты (почти в 3 раза быстрей обычного инсерта), и сгенерил 343352 байтов redo (почти в 100 раз меньше чем при обычном инсерте).&lt;br /&gt;&lt;br /&gt;В три раза быстрей чем обычный инсерт, но как можно еще как-то ускорить заливку? Есть один способ: &lt;strong&gt;&lt;span style="color:#009900;"&gt;можно заранее выделить необходимый объем экстентов партициям&lt;/span&gt;&lt;/strong&gt;, чтоб во время заливки на это не тратилось время.&lt;pre&gt;SQL&gt; alter table partitioned_table&lt;br /&gt;     modify partition calls_01012008 allocate extent (size 5M);&lt;br /&gt;&lt;br /&gt;Table altered.&lt;br /&gt;....&lt;br /&gt;SQL&gt; alter table partitioned_table&lt;br /&gt;     modify partition calls_maxvalue allocate extent (size 5M);&lt;br /&gt;&lt;br /&gt;Table altered.&lt;/pre&gt;После предварительного выделения эктентов партициям, инсерт аппенд отработал всего за 5 секунд!!!!&lt;pre&gt;SQL&gt; insert /*+ append */ into partitioned_table&lt;br /&gt;    select * from not_partitioned_table;&lt;br /&gt;&lt;br /&gt;1000000 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:00:05.06&lt;/pre&gt;А обычный инсерт отработал за 11 секунд:&lt;pre&gt;SQL&gt; insert into partitioned_table select * from not_partitioned_table;&lt;br /&gt;&lt;br /&gt;1000000 rows created.&lt;br /&gt;&lt;br /&gt;Elapsed: 00:00:11.13&lt;/pre&gt;Для ускорения заливки и уменьшения даунтайма таблицы, можно заранее выделить необходимые эктенты партициям, чтоб во времы заливки на эту рекурсивную операцию не тратилось время.&lt;br /&gt;&lt;br /&gt;Теперь осталось удалить старую таблицу и переименовать партиционированную таблицу.&lt;pre&gt;SQL&gt; drop table not_partitioned_table;&lt;br /&gt;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table partitioned_table rename to new_table;&lt;br /&gt;&lt;br /&gt;Table altered.&lt;/pre&gt;Можно и партиции переименовать (но их можно было бы создать с нужным именем изначально):&lt;pre&gt;SQL&gt; alter table new_table rename partition calls_01012008 to new_calls_01012008;&lt;br /&gt;&lt;br /&gt;Table altered.&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;В следующие варианты - в следующем выпуске новостей.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1678241411756561662?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1678241411756561662/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1678241411756561662' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1678241411756561662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1678241411756561662'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/08/blog-post.html' title='Партиционирование существующей таблицы'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6234886971978396167</id><published>2008-07-31T06:41:00.000-07:00</published><updated>2008-07-31T07:16:18.041-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Параметр CACHE LOB-сегмента'/><title type='text'>Параметр CACHE LOB-сегмента</title><content type='html'>На прошлой неделе при поддержке запуска одной системы, столкнулась с резким снижением производительности в системе. Администраторы приложения доложили, что процессы еле-еле шевелятся. Я начала копать, правда не сразу докопалась до истины. Большинство сессий этих процессов ожидали объекта SYS_LOB0000086738C00025$$ - LOB сегмента по одному из столбцов (скажем PAYMENT_INFO) одной таблицы (скажем PAYMENT). Содержимое столбца извлекались этим запросом:&lt;pre&gt;select PAYMENT_INFO&lt;br /&gt;from PAYMENT&lt;br /&gt;where PAYMENT_ID = :1 AND PAYMENT_TYPE = :2  &lt;br /&gt;for update;&lt;/pre&gt; Выяснилось, что сегмент SYS_LOB0000086738C00025$$ имеет параметр NOCACHE в отличие от аналогичной базы данных, в котором этот же LOB-сегмент имеет параметр CACHE. Вот, что пишут в документации Oracle об этом параметре LOB-сегментов:&lt;blockquote&gt;CACHE, NOCACHE&lt;br /&gt;&lt;br /&gt;Definition&lt;br /&gt;&lt;br /&gt;The CACHE storage parameter causes LOB data blocks to be read/written via buffer cache. &lt;br /&gt;&lt;br /&gt;With the NOCACHE storage parameter, LOB data is read/written using direct reads/writes. This means that the LOB data blocks are never in the buffer cache and the Oracle server process performs the reads/writes.&lt;/blockquote&gt; Если честно, до этого не знала, что по умолчанию, LOB сегменты читаются в обход буфферного кеша. А установкой параметра LOB-сегмента в CACHE, можно попросить Oracle, чтоб он извлекал блоки этого сегмента через буфферный кеш, что увеличивает производительность системы. Только нужно быть осторожным с LOB-сегментами больших размеров, чтоб они не забили весь буферный кеш. Там же пишут, что использование параметра CACHE вместо NOCACHE улучшает производительность операций ввода-вывода:&lt;blockquote&gt;The CACHE option gives better read/write performance than the NOCACHE option.&lt;/blockquote&gt;В нашем случае, изменения параметра LOB-сегмента в CACHE помогло:&lt;pre&gt;alter table PAYMENT modify lob ("PAYMENT_INFO") (cache);&lt;/pre&gt;Прежние ожидания исчезли и приложение вернулось на прежний высокий уровень производительности. Обожаю хеппи енды.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6234886971978396167?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6234886971978396167/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6234886971978396167' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6234886971978396167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6234886971978396167'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/cache-lob.html' title='Параметр CACHE LOB-сегмента'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8613428567099962055</id><published>2008-07-31T05:34:00.000-07:00</published><updated>2008-07-31T05:45:26.220-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Функция'/><title type='text'>Working days between two dates</title><content type='html'>Функция Оказывается в Oracle нет такой стандартной функции для подсчета количества рабочих дней между двумя датами. Есть функия для подсчета количества месяцев между двумя датами MONTHS_BETWEEN:&lt;br /&gt;&lt;br /&gt;MONTHS_BETWEEN&lt;br /&gt; Calculates the number of months between two dates.&lt;br /&gt;&lt;br /&gt;В инете поискала такие самописные функции, которые бы считали количество месяцев между двумя датами. Больше всех понравилась &lt;a href="http://www.oracle.com/technology/oramag/code/tips2003/012603.html"&gt;этот метод подсчета&lt;/a&gt;, описанная в Tips of the Week на сайте Oracle, мне кажется он самый оптимальный из тех, что я посмотрела:&lt;pre&gt;create table date_test (start_dt date, end_dt date);&lt;br /&gt;&lt;br /&gt;select start_dt,&lt;br /&gt;       end_dt,&lt;br /&gt;       trunc(end_dt - start_dt) age,&lt;br /&gt;       (trunc(end_dt - start_dt) - ((case&lt;br /&gt;         WHEN (8 - to_number(to_char(start_dt, 'D'))) &gt;&lt;br /&gt;              trunc(end_dt - start_dt) + 1 THEN 0&lt;br /&gt;         ELSE&lt;br /&gt;          trunc((trunc(end_dt - start_dt) - (8 - to_number(to_char(start_dt, 'D')))) / 7) + 1&lt;br /&gt;       END) + (case&lt;br /&gt;         WHEN mod(8 - to_char(start_dt, 'D'), 7) &gt;&lt;br /&gt;              trunc(end_dt - start_dt) - 1 THEN&lt;br /&gt;          0&lt;br /&gt;         ELSE&lt;br /&gt;          trunc((trunc(end_dt - start_dt) -&lt;br /&gt;                (mod(8 - to_char(start_dt, 'D'), 7) + 1)) / 7) + 1&lt;br /&gt;       END))) workingdays&lt;br /&gt;  from date_test&lt;/pre&gt;&lt;br /&gt;Здесь он считает суммарное количество суббот и воскресений и отнимает от  общего количества дней между двумя датами. Правда, глубоко вникать не стала, на тествых датах работает правильно. Можно переписать в функцию: &lt;pre&gt;create or replace function working_days_between (start_dt in date, end_dt in date) return number is&lt;br /&gt;wdays number;&lt;br /&gt;begin&lt;br /&gt;select (trunc(end_dt - start_dt) - ((case&lt;br /&gt;         WHEN (8 - to_number(to_char(start_dt, 'D'))) &gt;&lt;br /&gt;              trunc(end_dt - start_dt) + 1 THEN 0&lt;br /&gt;         ELSE&lt;br /&gt;          trunc((trunc(end_dt - start_dt) - (8 - to_number(to_char(start_dt, 'D')))) / 7) + 1&lt;br /&gt;       END) + (case&lt;br /&gt;         WHEN mod(8 - to_char(start_dt, 'D'), 7) &gt;&lt;br /&gt;              trunc(end_dt - start_dt) - 1 THEN 0&lt;br /&gt;         ELSE&lt;br /&gt;          trunc((trunc(end_dt - start_dt) - (mod(8 - to_char(start_dt, 'D'), 7) + 1)) / 7) + 1&lt;br /&gt;       END))) into wdays from dual;&lt;br /&gt;       return wdays;&lt;br /&gt;end working_days_between;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8613428567099962055?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8613428567099962055/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8613428567099962055' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8613428567099962055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8613428567099962055'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/working-days-between-two-dates.html' title='Working days between two dates'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1066245504864309205</id><published>2008-07-31T00:13:00.000-07:00</published><updated>2008-07-31T00:25:18.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Сравнение схем'/><title type='text'>Сравнение двух схем</title><content type='html'>Недавно столкнулась с необходимостью сравнить объекты двух схем, что-то влом было самой писать скрипты по сравнению, поэтому поискала готовые методы сравнения:&lt;br /&gt;1) Сравнение схем с помощью Oracle Change Manager&lt;br /&gt;&lt;br /&gt;Сегодня еще рассказали, что в Тоаде тоже есть такая возможность:&lt;br /&gt;2) С помощью Toad for Oracle &lt;br /&gt;Правда начиная с поздних версий, например в 9.1 точно есть, а в 6.4 - нет.&lt;br /&gt;Database -&gt; Compare -&gt; Schemas&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1066245504864309205?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1066245504864309205/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1066245504864309205' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1066245504864309205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1066245504864309205'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/blog-post_31.html' title='Сравнение двух схем'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2225419383309001074</id><published>2008-07-23T01:31:00.000-07:00</published><updated>2008-07-25T06:00:12.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Кем была вызвана процедура'/><title type='text'>"Кем была вызвана процедура или функция?"</title><content type='html'>Мой коллега нашел метод позволяющий в процедуре узнать кем она была вызвана, например, в таком примере: &lt;blockquote&gt;Есть 3 процедуры: процедура 1, процедура 2 и процедура 3&lt;br /&gt;При этом процедура 3 вызывается как из процедуры 1, так и из процедуры 2&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Может ли процедура 3 не используя входные параметры понять из какой процедуры она вызвана, из 1-й или 2-й?&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;Он нашел функцию пакета &lt;span style="font-family:courier new;"&gt;dbms_utility.format_call_stack&lt;/span&gt;, который оказывается возвращает полную цепочку процедур, функций или анонимного PL/SQL блока, которая вызвала эту процедуру:&lt;pre&gt;----- PL/SQL Call Stack -----&lt;br /&gt;  object      line  object&lt;br /&gt;  handle    number  name&lt;br /&gt;3902e1880         4  procedure MYSCHEMA.PROC3&lt;br /&gt;3902e8470         3  procedure MYSCHEMA.PROC1&lt;br /&gt;3902d3400         2  anonymous block&lt;/pre&gt;В этом примере, анонимный блок вызвал процедуру &lt;span style="font-family:courier new;"&gt;PROC1&lt;/span&gt;, а &lt;span style="font-family:courier new;"&gt;PROC1&lt;/span&gt; вызвала процедуру &lt;span style="font-family:courier new;"&gt;PROC3&lt;/span&gt;.&lt;br /&gt;Процедура 3, которая вызывается процедурой 1 или 2:&lt;pre&gt;create or replace procedure proc3 is&lt;br /&gt;  call_stack varchar2(4096);&lt;br /&gt;begin&lt;br /&gt;  call_stack := dbms_utility.format_call_stack;&lt;br /&gt;  dbms_output.put_line(call_stack);&lt;br /&gt;end;&lt;/pre&gt;Процедуры 1 и 2, которые вызывают процедуру 3:&lt;pre&gt;create procedure proc1 is&lt;br /&gt;begin&lt;br /&gt;     proc3;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;create procedure proc2 is&lt;br /&gt;begin&lt;br /&gt;     proc3;&lt;br /&gt;end; &lt;/pre&gt;Вызов процедур 1 и 2:&lt;pre&gt;SQL&gt; exec proc1;&lt;br /&gt;&lt;br /&gt;----- PL/SQL Call Stack -----&lt;br /&gt;  object      line  object&lt;br /&gt;  handle    number  name&lt;br /&gt;3902e1880         4  procedure MYSCHEMA.PROC3&lt;br /&gt;3902e8470         3  procedure MYSCHEMA.PROC1&lt;br /&gt;390175a80         1  anonymous block&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt;&lt;br /&gt;SQL&gt; exec proc2;&lt;br /&gt;&lt;br /&gt;----- PL/SQL Call Stack -----&lt;br /&gt;  object      line  object&lt;br /&gt;  handle    number  name&lt;br /&gt;3902e1880         4  procedure MYSCHEMA.PROC3&lt;br /&gt;3902db938         3  procedure MYSCHEMA.PROC2&lt;br /&gt;390180160         1  anonymous block&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed&lt;/pre&gt;Только, из стэка вызывающих процедур и функций нужно вытащить то, что нужно. В данном случае вторую строку стэка. У Тома Кайта есть &lt;a href="http://asktom.oracle.com/tkyte/who_called_me/who.sql"&gt;процедура &lt;span style="font-family:courier new;"&gt;who_called_me&lt;/span&gt;&lt;/a&gt;, которая парсит этот стэк и возвращяет кем была вызвана процедура или функция.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2225419383309001074?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2225419383309001074/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2225419383309001074' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2225419383309001074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2225419383309001074'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/blog-post_23.html' title='&quot;Кем была вызвана процедура или функция?&quot;'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1534570111664531866</id><published>2008-07-22T06:17:00.000-07:00</published><updated>2008-07-22T06:33:03.690-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Мои тренинги'/><title type='text'>Мои второй тренинг</title><content type='html'>Вчера во второй раз прочитала свой тренинг &lt;strong&gt;&lt;span style="color:#33cc00;"&gt;SQL Tuning Workshop&lt;/span&gt;&lt;/strong&gt;, правда только одну треть своего тренинга. Мне показалось, что мне уже легче читается, ведь после первого тренинга много чего добавила и улучшила. Темы были такие:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Краткое описание архитектуры Oracle &lt;/li&gt;&lt;li&gt;Шаги выполнения SQL запросов &lt;/li&gt;&lt;li&gt;Совместное использование курсоров &lt;/li&gt;&lt;li&gt;Построение и чтение плана выполнения &lt;/li&gt;&lt;li&gt;Трассировка, чтение трассировочного файла &lt;/li&gt;&lt;li&gt;Форматирование файла трассировки утилитой TKPROF, чтение отформатированного файла. &lt;/li&gt;&lt;/ul&gt;Теперь, своей первой группе прочитаю вторую часть тренинга и сделаю выводы о том, что можно улучшить.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1534570111664531866?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1534570111664531866/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1534570111664531866' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1534570111664531866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1534570111664531866'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/blog-post_22.html' title='Мои второй тренинг'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6666903292462051766</id><published>2008-07-11T04:51:00.000-07:00</published><updated>2008-07-11T07:26:33.745-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Индексы'/><title type='text'>Дамп структуры индекса</title><content type='html'>Иногда очень полезно посмотреть на внутреннюю структуру индекса. Для этого можно выгрузить индекс в дамп следующей командой:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;alter session set events 'immediate trace name treedump level nnnn;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;где nnnn равен &lt;span style="font-family:courier new;"&gt;object_id&lt;/span&gt; индекса, который можно посмотреть в &lt;span style="font-family:courier new;"&gt;dba_objects:&lt;/span&gt;&lt;pre&gt;SQL&gt; column object_name format A15&lt;br /&gt;SQL&gt; select object_id, object_name&lt;br /&gt;  from dba_objects a&lt;br /&gt;  where owner = 'SCHEMA' and&lt;br /&gt;  object_type = 'INDEX' and&lt;br /&gt;  object_name = 'CUSTOMERS_PK';&lt;br /&gt;&lt;br /&gt;OBJECT_ID OBJECT_NAME&lt;br /&gt;---------- ---------------&lt;br /&gt;33243 CUSTOMERS_PK&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events 'immediate trace name treedump level 33243';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;/pre&gt;Последняя команда выгрузит структуру указанного индекса в файл в папку &lt;span style="font-family:courier new;"&gt;user_dump_dest&lt;/span&gt;, который обычно указывает на &lt;span style="font-family:courier new;"&gt;$ORACLE_BASE/admin/SID/udump&lt;/span&gt;.&lt;br /&gt;Содержимое файла выглядит приблизительно так (заголовок не включен):&lt;pre&gt;----- begin tree dump&lt;br /&gt;branch: 0x2402004 37756932 (0: nrow: 104, level: 1)&lt;br /&gt;   leaf: 0x2402005 37756933 (-1: nrow: 517 rrow: 517)&lt;br /&gt;   leaf: 0x2402006 37756934 (0: nrow: 514 rrow: 514)&lt;br /&gt;   leaf: 0x2402007 37756935 (1: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x2402008 37756936 (2: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x2403309 37761801 (3: nrow: 481 rrow: 481)&lt;br /&gt;...&lt;br /&gt;   leaf: 0x240336d 37761901 (97: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x240336e 37761902 (98: nrow: 482 rrow: 482)&lt;br /&gt;   leaf: 0x240336f 37761903 (99: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x2403370 37761904 (100: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x2403372 37761906 (101: nrow: 481 rrow: 481)&lt;br /&gt;   leaf: 0x2403373 37761907 (102: nrow: 377 rrow: 377)&lt;br /&gt;----- end tree dump&lt;/pre&gt;По дампу видно, что индекс состоит из одного корневого блока и 104 листовых блоков (с -1 до 102 включительно). Строки начинающиеся на &lt;span style="font-family:courier new;"&gt;branch&lt;/span&gt; - это либо корневой блок, либо блоки ветвления. Листовые блоки начинаются на &lt;span style="font-family:courier new;"&gt;leaf&lt;/span&gt;. Вторая цифра после него &lt;span style="font-family:courier new;"&gt;37756932&lt;/span&gt; - это адрес блока. Используя этот адрес блока, можно получить &lt;span style="font-family:courier new;"&gt;id&lt;/span&gt; файла и блока функциями пакета &lt;span style="font-family:courier new;"&gt;dbms_utility&lt;/span&gt; и выгрузить содержимое конкретных блоков индекса. Об этом чуть позже. Дальше, &lt;span style="font-family:courier new;"&gt;nrow&lt;/span&gt; - это суммарное количество ключей или строк включая строки, которые отмечены как удаленные, а &lt;span style="font-family:courier new;"&gt;rrow&lt;/span&gt; - количество ключей или строк. &lt;br /&gt;&lt;br /&gt;В этом дампе мы увидели общую структуру индекса и сколько ключей хранятся в каждом узле индекса, но в ней нет самих значений ключей. Я пока не видела одношагового решения для выгрузки всех узлов вместе со значениями ключей, но можно выгрузить содержимое отдельного узла, то есть блока индекса следующим образом:&lt;pre&gt;SQL&gt; select dbms_utility.data_block_address_file(37756932) file_id,&lt;br /&gt;            dbms_utility.data_block_address_block(37756932) block_id&lt;br /&gt;     from dual;&lt;br /&gt;&lt;br /&gt;   FILE_ID   BLOCK_ID&lt;br /&gt;---------- ----------&lt;br /&gt;         9       8196&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system dump datafile 9 block 8196;&lt;br /&gt;&lt;br /&gt;System altered.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6666903292462051766?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6666903292462051766/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6666903292462051766' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6666903292462051766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6666903292462051766'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/blog-post.html' title='Дамп структуры индекса'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2969106927488374004</id><published>2008-07-10T07:22:00.000-07:00</published><updated>2008-07-11T04:09:56.898-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Index Skip Scan'/><title type='text'>Index Skip Scan</title><content type='html'>Думаю, об индексах в Oracle можно писать и писать. Индексы - это одна из моих любимых тем по базам данных Oracle. До 9 версии Оракла, при поиске по составному индексу &lt;strong&gt;&lt;span style="color:#009900;"&gt;не использовался индекс если в запросе не было поиска по лидирующему (leading) столбцу индекса.&lt;/span&gt;&lt;/strong&gt; Поэтому и рекомендовалось в качестве лидирующего столбца выбирать столбец &lt;strong&gt;&lt;span style="color:#009900;"&gt;наиболее часто использующийся для поиска.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;В 9 версии появился новые индексный доступ &lt;strong&gt;&lt;span style="color:#000099;"&gt;INDEX SKIP SCAN&lt;/span&gt;&lt;/strong&gt;, который позволяет использовать составной индекс для поиска данных, &lt;strong&gt;&lt;span style="color:#009900;"&gt;даже если в условиях поиска отсутствует лидирующий столбец.&lt;/span&gt;&lt;/strong&gt; &lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; create table t (a number, b number);&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; create index t_ix on t(a, b);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; begin&lt;br /&gt;  2  for i in 1 .. 10000&lt;br /&gt;  3  loop&lt;br /&gt;  4  insert into t values(mod(i, &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;2&lt;/span&gt;&lt;/strong&gt;), i);&lt;br /&gt;  5  end loop;&lt;br /&gt;  6  commit;&lt;br /&gt;  7  end;&lt;br /&gt;  8  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; begin&lt;br /&gt;  2  dbms_stats.gather_table_stats(user, 'T', cascade=&gt;true);&lt;br /&gt;  3  end;&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; explain plan set statement_id='SKIP'&lt;br /&gt;  2  for select * from t where b=5;&lt;br /&gt;&lt;br /&gt;Explained.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; select * from table(dbms_xplan.display('PLAN_TABLE','SKIP', 'ALL'));&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt; Id   Operation              Name        Rows   Bytes  Cost&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;   0  SELECT STATEMENT                       1      6      3&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;*  1   INDEX SKIP SCAN      T_IX             1      6      3 &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   1 - access("T"."B"=5)&lt;br /&gt;       filter("T"."B"=5)&lt;br /&gt;&lt;br /&gt;Note: cpu costing is off&lt;br /&gt;&lt;br /&gt;15 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;/span&gt;&lt;/pre&gt;В этом примере использовался индексный доступ INDEX SKIP SCAN по составному индексу, при отсутствии поиска по лидирующему столбцу.&lt;br /&gt;&lt;br /&gt;Так, как же работает INDEX SKIP SCAN? На одной из &lt;a href="http://www.oracle.com/technology/products/oracle9i/daily/apr22.html"&gt;публикаций на сайте Оракла&lt;/a&gt;, пишут:&lt;br /&gt;&lt;blockquote&gt;During a skip scan, the composite index is accessed once for each distinct value of the leading column(s). For each distinct value, the index is searched to find the query's target values. &lt;/blockquote&gt;То есть для каждого различного значения лидирующего столбца выполняется поиск значений "второстепенных" столбцов (не нашла более подходящего слова для описания остальных, "лидируемых", ведомых, "менее значимых" столбцов составного индекса). Практически, &lt;strong&gt;&lt;span style="color:#009900;"&gt;выполняется INDEX RANGE SCAN для каждого различного значения лидирующего столбца.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;В документации Оракла пишут, что INDEX SKIP SCAN эффективен в тех случаях, когда лидирующий столбец составного индекса имеет &lt;strong&gt;&lt;span style="color:#009900;"&gt;минимальное количество различных значений.&lt;/span&gt;&lt;/strong&gt; &lt;blockquote&gt;Skip scanning is advantageous if there are few distinct values in the leading column of the composite index and many distinct values in the nonleading key of the index.&lt;/blockquote&gt;В нашем примере лидирующий столбец имеет всего 2 различных значения (1 и 0), но если бы он был более селективным, то есть содержал больше различных значений, то скорее всего оптимизатор предпочел бы TABLE FULL SCAN. Как, например, здесь:&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; create table t2 (a number, b number);&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; create index t2_ix on t2(a, b);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; begin&lt;br /&gt;  2  for i in 1 .. 10000&lt;br /&gt;  3  loop&lt;br /&gt;  4  insert into t2 values(mod(i, &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;10&lt;/span&gt;&lt;/strong&gt;), i);&lt;br /&gt;  5  end loop;&lt;br /&gt;  6  commit;&lt;br /&gt;  7  end;&lt;br /&gt;  8  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; begin&lt;br /&gt;  2  dbms_stats.gather_table_stats(user, 'T2', cascade=&gt;true);&lt;br /&gt;  3  end;&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; explain plan set statement_id='NOSKIP'&lt;br /&gt;  2  for select * from t2 where b=5;&lt;br /&gt;&lt;br /&gt;Explained.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; select * from table(dbms_xplan.display('PLAN_TABLE','NOSKIP', 'ALL'));&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt; Id   Operation              Name        Rows   Bytes  Cost&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;   0  SELECT STATEMENT                       1      6      5&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;*  1   TABLE ACCESS FULL    T2               1      6      5 &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   1 - filter("T2"."B"=5)&lt;br /&gt;&lt;br /&gt;Note: cpu costing is off&lt;br /&gt;&lt;br /&gt;14 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;/span&gt;&lt;/pre&gt;Мы всего лишь увеличили количество различных значений лидирующего столбца с 2 до 10, и оптимизатор посчитал, что в этом случае ему выгодней использовать TABLE FULL SCAN чем INDEX SKIP SCAN. Есть хинт &lt;span style="font-family:courier new;"&gt;index_ss(алиас_таблицы название_индекса)&lt;/span&gt;, который можно использовать для принудетельного использования индексного доступа INDEX SKIP SCAN:&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; explain plan set statement_id='INDEX_SS'&lt;br /&gt;  2  for select /*+ index_ss (t2 t2_ix) */* from t2 where b=5;&lt;br /&gt;&lt;br /&gt;Explained.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from table(dbms_xplan.display('PLAN_TABLE','INDEX_SS', 'ALL'));&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt; Id   Operation              Name        Rows   Bytes  Cost&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;   0  SELECT STATEMENT                       1      6     11&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;*  1   INDEX SKIP SCAN      T2_IX            1      6     11&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PLAN_TABLE_OUTPUT&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   1 - access("T2"."B"=5)&lt;br /&gt;       filter("T2"."B"=5)&lt;br /&gt;&lt;br /&gt;Note: cpu costing is off&lt;br /&gt;&lt;br /&gt;15 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;/span&gt;&lt;/pre&gt;Как уже было сказано выше, INDEX SKIP SCAN эффективен в тех случаях, когда лидирующий столбец имеет минимальное количество различных значений. INDEX SKIP SCAN - это не "silver bullet", то есть не идеальное и эффективнейшее решение для всех поисков по составному ключу без лидирующего столбца. Джонатан Льюс (Jonathan Lewis) в своей книге о стоимостном оптимизаторе (кстати, это одна из моих любимых книг по Ораклу) пишет, что INDEX SKIP SCAN может наоборот снижать производительность: &lt;blockquote&gt;This is a beneficial feature in some cases, particularly if you have compressed indexes with a very low number of distinct values in the first column(s). But occasionally you may find that a skip-scan is causing performance problems.&lt;/blockquote&gt;Есть еще скрытый параметр _optimizer_skip_scan_enabled, который можно установить в false, чтоб отключить индексный путь доступа INDEX SKIP SCAN.&lt;pre&gt;&lt;span style="color:#000000;"&gt;alter session set "_optimizer_skip_scan_enabled"=false;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2969106927488374004?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2969106927488374004/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2969106927488374004' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2969106927488374004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2969106927488374004'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/07/index-skip-scan.html' title='Index Skip Scan'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3563221647207567713</id><published>2008-05-20T08:40:00.000-07:00</published><updated>2008-05-20T09:00:51.284-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='iSQL*Plus'/><title type='text'>Подключение к iSQL*Plus как SYSDBA или SYSOPER в Oracle 9i</title><content type='html'>Как sysdba или sysoper можно подключиться через iSQL*Plus в Oracle 9i можно по другому url:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://hostname:7776/&lt;strong&gt;&lt;span style="color:#009900;"&gt;isqlplusdba&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;По умолчанию на &lt;span style="font-family:courier new;"&gt;/isqlplusdba&lt;/span&gt; включена базовая аутентификация и при перед открытием страницы, запросит имя пользователя и пароль.&lt;br /&gt;Чтоб добавить пользователя для базовой аутентификации в Oracle 9i используется стандартная утилита Apache - &lt;span style="font-family:courier new;"&gt;htpasswd&lt;/span&gt; (в Oracle10g - джава утилита &lt;span style="font-family:courier new;"&gt;jazn&lt;/span&gt;, о ней можно почитать &lt;a href="http://ragivetova.blogspot.com/2008/04/isqlplus-sysdba-sysoper.html"&gt;здесь&lt;/a&gt;):&lt;pre&gt;&lt;span style="color:#000000;"&gt;oracle@myhost $ cd $ORACLE_HOME/Apache/Apache/bin&lt;br /&gt;oracle@myhost $ ./htpasswd -b $ORACLE_HOME/sqlplus/admin/iplusdba.pw username password &lt;/span&gt;&lt;/pre&gt;Тепер, при открытие в &lt;span style="font-family:courier new;"&gt;http://hostname:7776/isqlplusdba&lt;/span&gt; можно ввести логин (username) и пароль пользователя (password) и подключиться к базе данных как SYSDBA и SYSOPER.&lt;br /&gt;&lt;br /&gt;Или же можно отключить базовую аутентификация в &lt;span style="font-family:courier new;"&gt;/isqlplusdba&lt;/span&gt; закомментировав 4 строчки в &lt;span style="font-family:courier new;"&gt;ORACLE_HOME/sqlplus/admin/isqlplus.conf&lt;/span&gt;:&lt;pre&gt;&lt;span style="color:#000000;"&gt;&amp;lt;Location /isqlplusdba&amp;gt;&lt;br /&gt;SetHandler fastcgi-script&lt;br /&gt;Order deny,allow&lt;br /&gt;#AuthType Basic&lt;br /&gt;#AuthName 'iSQL*Plus DBA'&lt;br /&gt;#AuthUserFile /u01/app/oracle/product/9.2.0.8.0/sqlplus/admin/iplusdba.pw&lt;br /&gt;#Require valid-user&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Не забудьте перегрузить Apache после изменений:&lt;pre&gt;&lt;span style="color:#000000;"&gt;oracle@hostname $ cd $ORACLE_HOME/Apache/Apache/bin&lt;br /&gt;oracle@hostname $ ./apachectl stop&lt;br /&gt;./apachectl stop: httpd stopped&lt;br /&gt;oracle@hostname $ ./apachectl start&lt;br /&gt;./apachectl start: httpd started&lt;/span&gt;&lt;/pre&gt;Теперь при открытии &lt;span style="font-family:courier new;"&gt;http://hostname:7776/isqlplusdba&lt;/span&gt; не будет запрашивать логин и пароль.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3563221647207567713?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3563221647207567713/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3563221647207567713' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3563221647207567713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3563221647207567713'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/isqlplus-sysdba-sysoper-oracle-9i.html' title='Подключение к iSQL*Plus как SYSDBA или SYSOPER в Oracle 9i'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2536307956861475022</id><published>2008-05-15T07:01:00.000-07:00</published><updated>2008-05-15T07:39:32.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='Оптимизация производительности'/><title type='text'>DBMS_STATS или ANALYZE? (3)</title><content type='html'>Это продолжение темы "DBMS_STATS или ANALYZE?" &lt;a href="http://ragivetova.blogspot.com/2008/05/dbmsstats-analyze-1.html"&gt;Здесь&lt;/a&gt; я написала о том, почему Oracle рекомендует использовать &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt; вместо &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt;, а здесь - о том, отличаются ли статистические данные собраные с помощью &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt; от данных, собранных с помощью &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt; и если отличаются, то чем именно и кому из них верить.&lt;br /&gt;&lt;br /&gt;Очередной вопрос: как определить, &lt;strong&gt;&lt;span style="color:#009900;"&gt;каким образом была собрана статистика&lt;/span&gt;&lt;/strong&gt;? Пакетом &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt; или оператором &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Столбец &lt;span style="font-family:courier new;"&gt;global_stats&lt;/span&gt; в представлениях &lt;span style="font-family:courier new;"&gt;dba_tables, dba_indexes, dba_tab_cols, dba_tab_columns, dba_tab_col_statistics&lt;/span&gt; определяет собрана глобальная статистика или нет.&lt;br /&gt;&lt;br /&gt;Так как &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt; не умеет собирать &lt;strong&gt;&lt;span style="color:#009900;"&gt;глобальную статистику&lt;/span&gt;&lt;/strong&gt; (ее может собрать только &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt;), то можем сделать вывод, что если глобальная статистика собрана, то статистика была собрана с помощью &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt;, а если нет глобальной статистики - то статистика была собрана оператором &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;YES&lt;/span&gt;&lt;/strong&gt; - собрана глобальная статистика, то есть статистика собрана с помощью &lt;span style="font-family:courier new;"&gt;dbms_stats&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;NO&lt;/span&gt;&lt;/strong&gt; - статистика собрана с помощью аггрегирования статистики низлежащих партиций, субпартиций, то есть с помощью &lt;span style="font-family:courier new;"&gt;analyze&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Вырезка из документации: &lt;blockquote&gt;GLOBAL_STATS&lt;br /&gt;For partitioned tables, indicates whether statistics were&lt;br /&gt;collected for the table as a whole (YES) or were estimated from statistics on&lt;br /&gt;underlying partitions and subpartitions (NO)&lt;br /&gt;&lt;/blockquote&gt;Подробней можно прочитать об этом на металинке Note: 236935.1.&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; analyze table emp compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select table_name, partitioned, global_stats&lt;br /&gt;  2  from user_tables where table_name='EMP';&lt;br /&gt;TABLE_NAME   PARTITIONED GLOBAL_STATS&lt;br /&gt;------------ ----------- ------------&lt;br /&gt;EMP          NO          &lt;strong&gt;NO&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_stats.gather_table_stats(user, 'EMP', cascade=&gt;true);&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select table_name, partitioned, global_stats&lt;br /&gt;  2  from user_tables where table_name='EMP';&lt;br /&gt;TABLE_NAME   PARTITIONED GLOBAL_STATS&lt;br /&gt;------------ ----------- ------------&lt;br /&gt;EMP          NO          &lt;strong&gt;YES&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2536307956861475022?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2536307956861475022/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2536307956861475022' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2536307956861475022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2536307956861475022'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/dbmsstats-analyze-3.html' title='DBMS_STATS или ANALYZE? (3)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6095968555163735707</id><published>2008-05-15T06:09:00.000-07:00</published><updated>2009-02-20T06:20:14.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='Оптимизация производительности'/><title type='text'>DBMS_STATS или ANALYZE? (1)</title><content type='html'>И dbms_stats и analyze используются для сбора статистики, которая используются стоимостным оптимизатором (&lt;strong&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Cost-Based Optimizer&lt;/span&gt;&lt;/strong&gt;) для построения планов выполнения. То есть их правильное использование оказывает очень большое влияние на производительность всей системы.&lt;br /&gt;Но почему Oracle "&lt;strong&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;настоятельно&lt;/span&gt;&lt;/strong&gt;" рекомендует использовать пакет dbms_stats для сбора статистики вместо analyze?&lt;br /&gt;Из документации Oracle: &lt;blockquote&gt;"Oracle Corporation strongly recommends that you use the DBMS_STATS package rather than ANALYZE to collect optimizer statistics."&lt;/blockquote&gt;Так что же может dbms_stats, чего не может analyze:&lt;br /&gt;- с помощью dbms_stats можно собирать &lt;strong&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;системную статистику&lt;/span&gt; &lt;/strong&gt;(analyze нет такой возможности)&lt;br /&gt;(о системной статистике напишу отдельно, но "Oracle Corporation highly recommends that you gather system statistics.")&lt;br /&gt;- с помощью dbms_stats можно собирать статистику в удаленной базе данных (через дблинк)&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; exec dbms_stats.gather_table_stats@remotedb('REMOTEUSER','REMOTETABLE',cascade=&gt;true);&lt;/span&gt;&lt;/pre&gt;и еще:&lt;br /&gt;&lt;blockquote&gt;"That package lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways."&lt;/blockquote&gt;Кажется, что если Oracle рекомендует использовать dbms_stats для сбора статистики и имеет ряд преимуществ перед analyze, то зачем нужен analyze?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4347359891525"&gt;Здесь&lt;/a&gt; Том Кайт объясняет, что dbms_stats собирает статику только для оптимизатора (CBO).&lt;br /&gt;А такие статистические данные, как количество перенесенных строк (chained rows), средний объем свободного места в блоке, количество неиспользованных блоков можно собрать только с помощью analyze.&lt;br /&gt;Из документации Oracle : &lt;blockquote&gt;"... you must use the ANALYZE statement rather than DBMS_STATS for statistics collection not related to the cost-based optimizer, such as:&lt;br /&gt;To use the VALIDATE or LIST CHAINED ROWS clauses&lt;br /&gt;To collect information on freelist blocks"&lt;/blockquote&gt;Если dbms_stats и analyze собирают одну и ту же статистику по объектам, то они собирают &lt;strong&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;одинаковые данные&lt;/span&gt;&lt;/strong&gt;?&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Или эти данные отличаются?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;Если отличаются, то кому из них верить?&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Updated: 20 февраля, 2009&lt;br /&gt;Попытаюсь ответить на эти вопросы: &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Некоторые столбцы/компоненты статистики&lt;/span&gt;, собранные dbms_stats-ом &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;отличаются&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;от той, которые собраны командой analyze.&lt;br /&gt;Например кол-во строк (&lt;span style="font-family:courier new;"&gt;num_rows&lt;/span&gt;), высота индекса (&lt;span style="font-family:courier new;"&gt;blevel&lt;/span&gt;), конечно же НЕ отличаются.&lt;br /&gt;А такие столбцы как &lt;span style="font-family:courier new;"&gt;avg_row_len&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;avg_col_len&lt;/span&gt; - отличаются: dbms_stat добавляет 1 байт за хранение длины столбца, а analyze - не учитывает байт, в котором хранится длина столбца. Вот что пишет Джонатан Льюис об этом:&lt;blockquote&gt;As a general rule, the figures for bytes in execution plans are derived from the &lt;span style="font-family:courier new;"&gt;avg_col_len&lt;/span&gt; columns of &lt;span style="font-family:courier new;"&gt;user_tab_columns&lt;/span&gt;. The deprecated &lt;span style="font-family:courier new;"&gt;analyze &lt;/span&gt;command excludes the length byte(s) for the column, but the call to &lt;span style="font-family:courier new;"&gt;dbms_stats.gather_table_stats&lt;/span&gt; includes the length byte(s). Since the choice of build table in a hash join is affected by the size of the data sets involved, &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;a switch from analyze to&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);font-family:courier new;" &gt; dbms_stats&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt; could (in principle) change the order of a hash join, or even cause the optimizer to use a different join mechanism.&lt;/span&gt;&lt;/blockquote&gt;В-общем, он говорит, что, в принципе, из-за этой разницы в статистике, оптимизатор может изменить план выполнения в зависимости от метода сбора статистики, так как статистика немного отличается. &lt;br /&gt;Ответ на последний вопрос "Если отличаются, то кому из них верить?": Думаю достаточно иметь ввиду, что некоторые столбцы/компоненты статистики собранные dbms_stats-ом отличаются от той, которая собрана командой analyze. И, к тому же статистика нужна только оптимизатору, а вам она не нужна. Поэтому долго не думайте и собирайте статистику dbms_stats-ом, а чтоб увеличить скорость сбора, распараллельте или же собирайте с небольшим estimate-ом.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ragivetova.blogspot.com/2008/05/dbmsstats-analyze-3.html"&gt;Здесь&lt;/a&gt; я написала о том, как определить, каким образом была собрана статистика: пакетом dbms_stats или оператором analyze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6095968555163735707?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6095968555163735707/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6095968555163735707' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6095968555163735707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6095968555163735707'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/dbmsstats-analyze-1.html' title='DBMS_STATS или ANALYZE? (1)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3714021658156792450</id><published>2008-05-14T12:28:00.001-07:00</published><updated>2008-05-17T11:45:53.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Tuning'/><title type='text'>Где именно находится оптимизатор  в архитектуре Oracle RDBMS?</title><content type='html'>Oracle DBA обычно не интересуются вопросом "Где именно находится оптимизатор в архитектуре Oracle RDBMS?" Некоторые из моих знакомые ДБА отнесли его к категории вопросов о смысле жизни.&lt;br /&gt;Но самый популярный ответ был "&lt;strong&gt;&lt;span style="color:#009900;"&gt;в ядре Oracle&lt;/span&gt;&lt;/strong&gt;".&lt;br /&gt;&lt;br /&gt;В &lt;a href="http://safari.informit.com/0672327910/ch14lev1sec1"&gt;книге Oracle Database 10g Insider Solutions&lt;/a&gt; пишут тоже самое: &lt;blockquote&gt;"The Cost Based Optimizer is at the heart of the Oracle kernel and plays a large part in the efficient execution of SQL statements in Oracle Database 10g."&lt;/blockquote&gt;Но где именно находится это ядро (kernel)? Это обычный процесс? Если да, то можно ли его увидеть в юниксе в списке процессов &lt;strong&gt;&lt;span style="color:#009900;"&gt;командой "ps"&lt;/span&gt;&lt;/strong&gt;?&lt;br /&gt;&lt;br /&gt;Отрывок из книги Тома Кайта "Oracle для профессионалов: Архитектура и основные особенности": &lt;blockquote&gt;"При получении запроса SELECT * FROM EMP именно выделенный/разделяемый сервер Oracle будет разбирать его и помещать в разделяемый пул (или находить соответствующий запрос в разделяемом пуле). &lt;strong&gt;&lt;span style="color:#009900;"&gt;Именно этот процесс создает план выполнения запроса.&lt;/span&gt;&lt;/strong&gt; Этот процесс реализует план запроса, находя необходимые данные в буферном кеше или считывая данные в буферный кеш с диска. Такие &lt;strong&gt;&lt;span style="color:#000099;"&gt;серверные процессы&lt;/span&gt;&lt;/strong&gt; можно назвать "&lt;strong&gt;&lt;span style="color:#000099;"&gt;рабочими лашадками&lt;/span&gt;&lt;/strong&gt;" СУБД. Часто именно они потребляют основную часть процессорного времени в системе, поскольку выполняют сортировку, суммирование, соединения - в общем, почти все."&lt;/blockquote&gt;То есть функции оптимизатора выполняются серверными процессами и их мы можем увидеть в списке процессов: &lt;pre&gt;&lt;span style="color:#000000;"&gt;oracle@myhost$ ps -ef  grep ora  grep LOCAL  more&lt;br /&gt;  oracle 22790     1  0 09:13:33 ?        0:03 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle  4426     1  0 11:20:58 ?        0:02 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 29167     1  0 11:11:32 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 12778     1  0 09:53:02 ?        0:03 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 14349     1  0 12:26:34 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 21141     1  0 11:47:35 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 11220     1  0 09:49:18 ?        0:06 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 16823     1  0 11:40:49 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 26760     1  0 11:57:20 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 20814     1  0 09:09:42 ?        0:01 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle 17374     1  0 12:32:28 ?        0:02 oracleTESTDB (LOCAL=NO)&lt;br /&gt;  oracle  8911     1  0 22:14:38 ?        0:00 oracleTESTDB (LOCAL=NO)&lt;/span&gt;&lt;/pre&gt;Если серверные процессы разбирают все запросы (выполняют все функции оптимизатора), значит ли это, что:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;Код самого оптимизатора находится в каждом серверном процессе?&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;Или серверные процессы всего лишь вызывают эти функции из ярда Oracle?&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#003300;"&gt;Или ядро Oracle - это и есть серверные процессы?&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#003300;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Для меня этот вопрос все еще остается открытым, если у кого-то есть идеи, буду рада их услышать.&lt;br /&gt;&lt;br /&gt;Добавлено 16 мая, 2008:&lt;br /&gt;Это ответ Джонатана Льюиса на этот вопрос (публикую с его разрешения): &lt;blockquote&gt;There is one main executable for the database in Oracle distribution, and that is called &lt;span style="font-family:courier new;"&gt;oracle&lt;/span&gt; (on Unix systems, but &lt;span style="font-family:courier new;"&gt;oracle.exe&lt;/span&gt; on Windows).&lt;br /&gt;This is the program that becomes &lt;span style="font-family:courier new;"&gt;pmon&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;smon&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;dbwr&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;s000&lt;/span&gt;, and all the other background processes when the instance starts up. The bits of code run from that executable vary across the different roles played in the instance.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;As such, the &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;optimiser is just part of the code that is called only by a program which is taking on the role of a dedicated server&lt;/span&gt;&lt;/strong&gt; (oracle_{SID}_nnn in unix variants) or a shared server (oracle_{SID}_Snnn).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;When people talk about the 'Oracle kernel' it's actually a very &lt;strong&gt;&lt;span style="color:#009900;"&gt;informal and inaccurate expression&lt;/span&gt;&lt;/strong&gt; - they are trying to give a vague impression of the most commonly used part of the code with an emphasis, perhaps, on the code segments that do a lot of synchronised work in the shared memory area. But &lt;strong&gt;&lt;span style="color:#009900;"&gt;there is no specific process that you can see that is "the" kernel&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;&lt;br /&gt;Jonathan Lewis&lt;br /&gt;http://jonathanlewis.wordpress.com&lt;br /&gt;&lt;br /&gt;Author: Cost Based Oracle: Fundamentals&lt;br /&gt;http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html&lt;br /&gt;&lt;br /&gt;The Co-operative Oracle Users' FAQ&lt;br /&gt;http://www.jlcomp.demon.co.uk/faq/ind_faq.html&lt;/blockquote&gt;Перевод:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Есть один основной бинарник в дистрибутиве Oracle, который так и называется &lt;span style="font-family:courier new;"&gt;oracle&lt;/span&gt; (в юникс системах, и &lt;span style="font-family:courier new;"&gt;oracle.exe&lt;/span&gt; в Windows). Когда стартуется инстанс, эта программа превращается в фоновые процессы &lt;span style="font-family:courier new;"&gt;pmon&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;smon&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;dbwr&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;s000&lt;/span&gt; и тд.&lt;br /&gt;В зависимости от роли, которую он выполняет в составе инстанса, выполняются отдельные биты кода этого бинарника.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Оптимизатор - это всего лишь &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;кусочек кода, который вызывается программой, выполняющей роль выделенного сервера&lt;/span&gt;&lt;/strong&gt; (oracle_{SID}_nnn в юниксе) или разделяемого сервера (oracle_{SID}_Snnn).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Когда люди говорят о "ядре Oracle", они на самом деле используют &lt;strong&gt;&lt;span style="color:#009900;"&gt;неформальное и не совсем точное выражение&lt;/span&gt;&lt;/strong&gt; - они стараются дать смутное ощущение о часто используемой части кода, возможно имея ввиду сегменты кода, которые выполняют кучу синхронизированных операций в разделяемой памяти.&lt;br /&gt;Но на самом деле &lt;strong&gt;&lt;span style="color:#009900;"&gt;нет отдельного процесса, которого можно увидеть и который являлся бы "ядром"&lt;/span&gt;&lt;/strong&gt;. &lt;/blockquote&gt;&lt;br /&gt;Прикольно, значит &lt;strong&gt;&lt;span style="color:#000099;"&gt;код самого оптимизатора находится в каждом серверном процессе&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;Спасибо всем, кто участвовал в процессе выяснения местонахождения оптимизатора в архитектуре Oracle. Отдельное спасибо Джонатану Льюису, кстати всем, кто занимается тюнингом, рекомендую почитать его книжку &lt;a href="http://www.rznbooks.ru/books/1626741/default.aspx"&gt;Основы Стоимостной Оптимизации &lt;/a&gt;(Cost-Based Oracle Fundamentals).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3714021658156792450?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3714021658156792450/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3714021658156792450' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3714021658156792450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3714021658156792450'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/oracle-rdbms.html' title='Где именно находится оптимизатор &lt;br /&gt; в архитектуре Oracle RDBMS?'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-122940130277700799</id><published>2008-05-06T02:41:00.000-07:00</published><updated>2008-05-07T00:00:49.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Оптимизация производительности'/><title type='text'>Одноблочное и многоблочное чтения  (single-block &amp; multi-block read)</title><content type='html'>Если при полном просмотре таблицы (&lt;strong&gt;&lt;span style="color:#009900;"&gt;full table scan&lt;/span&gt;&lt;/strong&gt;) выполняется многоблочное чтение, то это положительно влияет на производительность. То есть, за одну операцию ввода/вывода читается несколько блоков, и вся таблица будет прочитана с файла в буферный кэш за &lt;strong&gt;&lt;span style="color:#009900;"&gt;минимальное количество операций ввода/вывода&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Кол-во блоков, которое будет прочитано из файла в буферный кэш за одну системную операцию ввода/вывода устанавливается параметром &lt;strong&gt;&lt;span style="color:#000099;"&gt;db_file_multiblock_read_count&lt;/span&gt;&lt;/strong&gt;. В OLTP системах он обычно равен от 8 до 16, а в OLAP системах от 32 и выше. На большинстве платформ значение db_file_multiblock_read_count может быть равен максимум 128, об это написано в предыдущей &lt;a href="http://ragivetova.blogspot.com/2008/05/dbfilemultiblockreadcount.html"&gt;теме&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;С помощью представления v$filestat можно посмотреть статистику по количеству &lt;strong&gt;&lt;span style="color:#009900;"&gt;одноблочных и многоблочных чтений&lt;/span&gt;&lt;/strong&gt;. Описание полей из документации (только те, что интересуют нас и относятся к чтению): &lt;blockquote&gt;FILE# Number of the file&lt;br /&gt;PHYRDS Number of physical reads done&lt;br /&gt;PHYBLKRD Number of physical blocks read&lt;br /&gt;SINGLEBLKRDS Number of single block reads&lt;/blockquote&gt;В списке полей нет поля о кол-ве многоблочных чтений, но его мы можем получить отняв SINGLEBLKRDS (так как, за одну операцию одноблочного чтения читается один блок) от суммарного количества физических чтений PHYRDS:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MULTIRDS = PHYRDS-SINGLEBLKRDS&lt;/span&gt;&lt;br /&gt;А кол-во блоков прочитанных в режиме многоблочного чтения можно получить отняв SINGLEBLKRDS от суммарного кол-ва прочитанных блоков PHYBLKRD:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MULTIBLKRDS = PHYBLKRD-SINGLEBLKRDS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Еще один важный параметр, который можно получить - это &lt;strong&gt;&lt;span style="color:#000099;"&gt;среднее количество блоков прочитанных в многоблочном чтении&lt;/span&gt;&lt;/strong&gt;. Если этот параметр близок к db_file_multiblock_read_count, то это хорошо. Это значит, что при многоблочном чтении из файла в буферный кэш, за минимальное количество операций ввода/вывода, читается максимальное количество блоков.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BLKSMULTIBLKRDS = MULTIBLKRDS/MULTIRDS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Скрипт: &lt;pre&gt;&lt;span style="color:#000000;"&gt;select round(SINGLEBLKRDS/PHYBLKRD,2) SINGLEBLKRDS_PCT,&lt;br /&gt;round((PHYBLKRD-SINGLEBLKRDS)/PHYBLKRD,2) MULTIBLKRDS_PCT,&lt;br /&gt;round((PHYBLKRD-SINGLEBLKRDS)/(PHYRDS-SINGLEBLKRDS),2) BLKSMULTIBLKRDS,&lt;br /&gt;k.tablespace_name&lt;br /&gt;from v$filestat t, dba_data_files k&lt;br /&gt;where t.file#=k.file_id&lt;br /&gt;order by 1&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Здесь приблизительный результат: &lt;pre&gt;&lt;span style="color:#000000;"&gt;SINGLEBLKRDS_PCT MULTIBLKRDS_PCT BLKSMULTIBLKRDS TABLESPACE_NAME&lt;br /&gt;0         1     7,74     CCCTBS&lt;br /&gt;0         1     7,83     CCCTBS&lt;br /&gt;0         1     7,88     CCCTBS&lt;br /&gt;0         1    15,73     USERS&lt;br /&gt;0,01   0,99     7,88     CCCTBS&lt;br /&gt;0,01   0,99    14,65     DDDDTBS&lt;br /&gt;0,02   0,98    11,82     DATA_MED&lt;br /&gt;0,03   0,97    11,73     DATA_MED&lt;br /&gt;0,05   0,95    13,54     AAA_BBB&lt;br /&gt;0,07   0,93     1,03     EEEETBS&lt;br /&gt;0,26   0,74    14,49     DATA_SML&lt;br /&gt;0,3     0,7    10,32     GGGDATA&lt;br /&gt;0,31   0,69     9,35     SYSTEM&lt;br /&gt;0,49   0,51    11,32     DATA_BIG&lt;br /&gt;0,5     0,5    11,41     DATA_BIG&lt;br /&gt;0,52   0,48       10     DATA_BIG&lt;br /&gt;0,52   0,48    11,47     DATA_BIG&lt;br /&gt;0,53   0,47    10,21     DATA_BIG&lt;br /&gt;0,68   0,32    14,52     DATA_BIG&lt;br /&gt;0,91   0,09    14,68     DATA_BIG_IX&lt;br /&gt;0,91   0,09    15,28     DATA_BIG_IX&lt;br /&gt;0,92   0,08        1     UNDO&lt;br /&gt;0,92   0,08    14,81     DATA_BIG_IX&lt;br /&gt;0,92   0,08    15,08     DATA_BIG_IX&lt;br /&gt;0,93   0,07    15,32     DATA_BIG_IX&lt;br /&gt;0,98   0,02        1     AAA_BBB_IX&lt;br /&gt;0,99   0,01     1,65     FFFFTBS&lt;br /&gt;   1      0        1     DATA_SML_IX&lt;br /&gt;   1      0        1     DATA_MED_IX&lt;/span&gt;&lt;/pre&gt;Как показывает отчет, в табличных пространствах, где хранятся индексы (_IX) почти нет (или очень низкий процент) многоблочного чтения, думаю это из-за того, что в них нет таблиц, соответсвенно не бывает полных просмотров таблиц (table full scan) и очень низок процент fast full index scan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-122940130277700799?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/122940130277700799/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=122940130277700799' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/122940130277700799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/122940130277700799'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/blog-post_06.html' title='Одноблочное и многоблочное чтения &lt;br /&gt; (single-block &amp; multi-block read)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-7689767462538207661</id><published>2008-05-05T06:10:00.000-07:00</published><updated>2008-05-05T06:23:12.194-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='Оптимизация производительности'/><title type='text'>Максимальное значение db_file_multiblock_read_count</title><content type='html'>Параметр &lt;strong&gt;&lt;span style="color:#009900;"&gt;db_file_multiblock_read_count&lt;/span&gt;&lt;/strong&gt; определяет количество блоков, которые будут считаны за одну системную операцию чтения.&lt;br /&gt;&lt;br /&gt;Он используется стоимостным оптимизатором (Cost-based Optimizer) для вычисления &lt;strong&gt;&lt;span style="color:#009900;"&gt;суммарного кол-ва операций чтения для полного просмотра таблицы&lt;/span&gt; &lt;/strong&gt;(full table scan).&lt;br /&gt;&lt;br /&gt;Нередко стараются увеличить этот параметр, для улучшение производительности базы данных. Но необходимо тщательно выбирать значение этого параметра, так как слишком большое значение увеличит количество полных просмотров (full scan), а слишком маленькое значение увеличит использование индексов, даже в тех случаях, где полный просмотр таблиц был бы более эффективен.&lt;br /&gt;&lt;br /&gt;Самый лёгкий способ узнать максимальный размер db_file_multiblock_read_count - это присвоить этому параметру очень большое значение и он скорректируется до максимально возможного размера:&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; select name, value from v$parameter&lt;br /&gt;  2  where name = 'db_file_multiblock_read_count';&lt;br /&gt;&lt;br /&gt;NAME                           VALUE&lt;br /&gt;------------------------------ ----------&lt;br /&gt;db_file_multiblock_read_count  &lt;strong&gt;&lt;span style="color:#000099;"&gt;8&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set db_file_multiblock_read_count=100000000;&lt;br /&gt;&lt;br /&gt;System altered&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; select name, value from v$parameter&lt;br /&gt;  2  where name = 'db_file_multiblock_read_count';&lt;br /&gt;&lt;br /&gt;NAME                           VALUE&lt;br /&gt;------------------------------ ----------&lt;br /&gt;db_file_multiblock_read_count  &lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;128&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Этот запрос был выполнен на Oracle 9.2.0.8, размер блока БД - 8K, Solaris 5.9.&lt;br /&gt;Максимальное значение этого параметра зависит от внутреннего параметра (константы) &lt;strong&gt;SSTIOMAX&lt;/strong&gt;, который зависит от версии Oracle и размера блока базы данных. Это вырезка из Металинка Note:131530.1:&lt;blockquote&gt;What is SSTIOMAX?&lt;br /&gt;-----------------&lt;br /&gt;&lt;br /&gt;SSTIOMAX is an internal parameter/constant used by oracle, which limits the&lt;br /&gt;maximum amount of data transfer in a single IO of a read or write operation.&lt;br /&gt;This parameter is fixed and cannot be tuned/changed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Relationship between SSTIOMAX and db_file_multiblock_read_count (MBRC)&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;More often than not, DBAs try to increase the db_file_multiblock_read_count&lt;br /&gt;parameter (which can be set in the init.ora), in an attempt to optimize the&lt;br /&gt;IO performance of the read and write operations.&lt;br /&gt;&lt;br /&gt;Normally, with a higher value of MBRC, the IO performance is expected to be&lt;br /&gt;better.  So, users tend to increase this parameter to a higher value, in case&lt;br /&gt;they find it beneficial.  But, there is a limitation on this.&lt;br /&gt;&lt;br /&gt;The limitation is, the product of db_block_size and MBRC cannot exceed the&lt;br /&gt;SSTIOMAX.  For example:&lt;br /&gt;&lt;br /&gt;  db_block_size * db_file_multiblock_read_count &lt;= SSTIOMAX    (which is predefined for a particular version of oracle)  If the value of the product exceeds this, then the value of  db_file_multiblock_read_count set in the init.ora is ignored and  it is set as follows:    db_file_multiblock_read_count = SSTIOMAX/db_block_size (rounded)&lt;/blockquote&gt;&lt;br /&gt;В Oracle 9i SSTIOMAX = 1M, то есть если&lt;br /&gt;размер блока БД 16K, то максимальный размер db_file_multiblock_read_count = 1M / 16K = 64;&lt;br /&gt;размер блока БД 8K, то максимальный размер db_file_multiblock_read_count = 1M / 8K = 128;&lt;br /&gt;размер блока БД 4K, то максимальный размер db_file_multiblock_read_count = 1M / 4K = 256;&lt;br /&gt;&lt;br /&gt;Для сравнения, в Oracle 7.3 SSTIOMAX был равен 128K.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-7689767462538207661?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/7689767462538207661/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=7689767462538207661' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7689767462538207661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7689767462538207661'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/dbfilemultiblockreadcount.html' title='Максимальное значение db_file_multiblock_read_count'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4879996475408076134</id><published>2008-05-04T07:13:00.000-07:00</published><updated>2008-05-04T07:23:57.549-07:00</updated><title type='text'>Создание табличного пространства, размер блока которого отличается от размера блока БД</title><content type='html'>Для создания табличного пространства, размер блока которого отличается от размера блока БД, необходимо выделить память под соответствующий db_Xk_cache_size&lt;br /&gt;(db_2k_cache_size,db_4k_cache_size,db_8k_cache_size, db_16k_cache_size, db_32k_cache_size).&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; show parameter db_block_size&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_block_size                        integer     &lt;strong&gt;&lt;span style="color:#009900;"&gt;8192&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;SQL&gt; create tablespace tbs4k &lt;strong&gt;&lt;span style="color:#009900;"&gt;blocksize 4096&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;  2  datafile '/u01/oradata/TESTDB/tbs4kTESTDB01.dbf'&lt;br /&gt;  3  size 10M autoextend on next 1M;&lt;br /&gt;create tablespace tbs4k blocksize 4096&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;ORA-29339: tablespace block size 4096 does not match configured block sizes&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter cache_size&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_16k_cache_size                    big integer 0&lt;br /&gt;db_2k_cache_size                     big integer 0&lt;br /&gt;db_32k_cache_size                    big integer 0&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;db_4k_cache_size                     big integer 0&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;db_8k_cache_size                     big integer 0&lt;br /&gt;db_cache_size                        big integer 536870912&lt;br /&gt;db_keep_cache_size                   big integer 0&lt;br /&gt;db_recycle_cache_size                big integer 0&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;strong&gt;&lt;span style="color:#000099;"&gt;alter system set db_4k_cache_size=16M scope=spfile;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1159537920 bytes&lt;br /&gt;Fixed Size                   730368 bytes&lt;br /&gt;Variable Size             603979776 bytes&lt;br /&gt;Database Buffers          553648128 bytes&lt;br /&gt;Redo Buffers                1179648 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter cache&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_16k_cache_size                    big integer 0&lt;br /&gt;db_2k_cache_size                     big integer 0&lt;br /&gt;db_32k_cache_size                    big integer 0&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;db_4k_cache_size                     big integer 16777216&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;db_8k_cache_size                     big integer 0&lt;br /&gt;db_cache_advice                      string      ON&lt;br /&gt;db_cache_size                        big integer 536870912&lt;br /&gt;db_keep_cache_size                   big integer 0&lt;br /&gt;db_recycle_cache_size                big integer 0&lt;br /&gt;object_cache_max_size_percent        integer     10&lt;br /&gt;object_cache_optimal_size            integer     102400&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;session_cached_cursors               integer     100&lt;br /&gt;SQL&gt; create tablespace tbs4k &lt;strong&gt;&lt;span style="color:#009900;"&gt;blocksize 4096&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;  2  datafile '/u01/oradata/TESTDB/tbs4kTESTDB01.dbf'&lt;br /&gt;  3  size 10M autoextend on next 1M;&lt;br /&gt;&lt;br /&gt;Tablespace created.&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4879996475408076134?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4879996475408076134/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4879996475408076134' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4879996475408076134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4879996475408076134'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/05/blog-post.html' title='Создание табличного пространства, размер блока которого отличается от размера блока БД'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3760280584592162330</id><published>2008-04-28T12:09:00.001-07:00</published><updated>2008-04-28T12:33:01.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Grid Control 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>Загрузка данных из Агента в OMS</title><content type='html'>&lt;div align="right"&gt;&lt;a href="http://ragivetova.blogspot.com/2008/04/problem-with-management-agent-10g.html"&gt;English version of this article&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Oracle Management Agent 10g был установлен на узле с помощью скрипта &lt;strong&gt;&lt;span style="color:#009900;"&gt;agentDownload script&lt;/span&gt;&lt;/strong&gt;. Несмотря на то, что установка и настройка агента прошла успешно, новый узел не появился в списке хостов в веб-интерфейсе Enterprise Manager Grid Control.&lt;br /&gt;&lt;br /&gt;Статус агента:&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl status agent&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent Version     : 10.2.0.4.0&lt;br /&gt;OMS Version       : 10.2.0.1.0&lt;br /&gt;Protocol Version  : 10.2.0.0.0&lt;br /&gt;Agent Home        : /u01/app/gc/product/agent10g&lt;br /&gt;Agent binaries    : /u01/app/gc/product/agent10g&lt;br /&gt;Agent Process ID  : 26774&lt;br /&gt;Parent Process ID : 26765&lt;br /&gt;Agent URL         : https://agenthost.domain.com:3872/emd/main/&lt;br /&gt;Repository URL    : https://omshost:1159/em/upload&lt;br /&gt;Started at        : 2008-04-24 12:20:17&lt;br /&gt;Started by user   : gc&lt;br /&gt;Last Reload       : 2008-04-24 12:20:17&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Last successful upload                       : (none)&lt;br /&gt;Last attempted upload                        : (none)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Total Megabytes of XML files uploaded so far :     0.00&lt;br /&gt;Number of XML files pending upload           :        6&lt;br /&gt;Size of XML files pending upload(MB)         :     5.88&lt;br /&gt;Available disk space on upload filesystem    :    18.10%&lt;br /&gt;Last successful heartbeat to OMS             : 2008-04-24 12:20:26&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent is Running and Ready&lt;/span&gt;&lt;/pre&gt;В статусе агента видно, что &lt;strong&gt;&lt;span style="color:#009900;"&gt;Агент не может загрузить данные в OMS&lt;/span&gt;&lt;/strong&gt;, а если вручную попробывать загрузить данные, то выводит такое сообщение:&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ &lt;strong&gt;&lt;span style="color:#000099;"&gt;emctl upload&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet..&lt;/span&gt;&lt;/pre&gt;В логах агента, нашла такие ошибки в ORACLE_HOME/sysman/log/emagent.trc:&lt;pre&gt;&lt;span style="color:#000000;"&gt;2008-04-23 19:54:26,063 Thread-20 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,064 Thread-20 ERROR pingManager: nmepm_pingReposURL: Cannot connect to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:26,067 Thread-20 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,067 Thread-20 ERROR pingManager: nmepm_pingReposURL: Cannot connect to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:26,359 Thread-5 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,359 Thread-5 ERROR command: nmejcn: failed http connection to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:28,368 Thread-5 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Причина ошибки оказалась простой, из узла agenthost не определялся omshost:&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ ping -a omshost&lt;br /&gt;ping: unknown host omshost&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;После, прописания omshost в /etc/hosts (555.555.555.555 omshost), загрузка данных в OMS прошла успешно&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ ping -a omshost&lt;br /&gt;omshost (555.555.555.555) is alive&lt;br /&gt;&lt;br /&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: Upload timed out before completion.&lt;br /&gt;Number of files to upload before the upload: 13, total size (MB): 5.25.&lt;br /&gt;Remaining number of files to upload: 13, total size (MB): 5.25.&lt;br /&gt;&lt;br /&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: Upload timed out before completion.&lt;br /&gt;Number of files to upload before the upload: 6, total size (MB): 1.38.&lt;br /&gt;Remaining number of files to upload: 6, total size (MB): 1.38.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload completed successfully&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;Теперь в статусе агента видно, что загрузка прошла успешно:&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl status agent&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent Version     : 10.2.0.4.0&lt;br /&gt;OMS Version       : 10.2.0.1.0&lt;br /&gt;Protocol Version  : 10.2.0.0.0&lt;br /&gt;Agent Home        : /u01/app/gc/product/agent10g&lt;br /&gt;Agent binaries    : /u01/app/gc/product/agent10g&lt;br /&gt;Agent Process ID  : 26774&lt;br /&gt;Parent Process ID : 26765&lt;br /&gt;Agent URL         : https://agenthost.domain.com:3872/emd/main/&lt;br /&gt;Repository URL    : https://omshost:1159/em/upload&lt;br /&gt;Started at        : 2008-04-24 12:20:17&lt;br /&gt;Started by user   : gc&lt;br /&gt;Last Reload       : 2008-04-24 12:20:17&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Last successful upload                       : 2008-04-24 12:39:02&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Total Megabytes of XML files uploaded so far :     7.44&lt;br /&gt;Number of XML files pending upload           :        0&lt;br /&gt;Size of XML files pending upload(MB)         :     0.00&lt;br /&gt;Available disk space on upload filesystem    :    18.13%&lt;br /&gt;Last successful heartbeat to OMS             : 2008-04-24 12:39:27&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent is Running and Ready&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3760280584592162330?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3760280584592162330/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3760280584592162330' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3760280584592162330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3760280584592162330'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/oracle-management-service.html' title='Загрузка данных из Агента в OMS'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-232954117260580390</id><published>2008-04-28T12:04:00.000-07:00</published><updated>2008-04-28T12:40:05.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Grid Control 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>Problem with Management Agent 10g Upload</title><content type='html'>&lt;div align="right"&gt;&lt;a href="http://ragivetova.blogspot.com/2008/04/oracle-management-service.html"&gt;На русском&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I had a problem adding another target to Oracle Grid Control 10g. The Management Agent was installed by &lt;strong&gt;&lt;span style="color:#009900;"&gt;agentDownload script&lt;/span&gt;&lt;/strong&gt;, the installation finished successfully, but I the target didn’t show up in the Host list of Grid Control web page.&lt;br /&gt;&lt;br /&gt;I checked the status of agent on target host:&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl status agent&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent Version     : 10.2.0.4.0&lt;br /&gt;OMS Version       : 10.2.0.1.0&lt;br /&gt;Protocol Version  : 10.2.0.0.0&lt;br /&gt;Agent Home        : /u01/app/gc/product/agent10g&lt;br /&gt;Agent binaries    : /u01/app/gc/product/agent10g&lt;br /&gt;Agent Process ID  : 26774&lt;br /&gt;Parent Process ID : 26765&lt;br /&gt;Agent URL         : https://agenthost.domain.com:3872/emd/main/&lt;br /&gt;Repository URL    : https://omshost:1159/em/upload&lt;br /&gt;Started at        : 2008-04-24 12:20:17&lt;br /&gt;Started by user   : gc&lt;br /&gt;Last Reload       : 2008-04-24 12:20:17&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Last successful upload                       : (none)&lt;br /&gt;Last attempted upload                        : (none)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Total Megabytes of XML files uploaded so far :     0.00&lt;br /&gt;Number of XML files pending upload           :        6&lt;br /&gt;Size of XML files pending upload(MB)         :     5.88&lt;br /&gt;Available disk space on upload filesystem    :    18.10%&lt;br /&gt;Last successful heartbeat to OMS             : 2008-04-24 12:20:26&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent is Running and Ready&lt;/span&gt;&lt;/pre&gt;The status report showed that &lt;strong&gt;&lt;span style="color:#009900;"&gt;Agent could NOT upload to OMS&lt;/span&gt;&lt;/strong&gt;, so I tried to manually upload to OMS:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ &lt;strong&gt;&lt;span style="color:#000099;"&gt;emctl upload&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet..&lt;/span&gt;&lt;/pre&gt;I checked the agent logs and came across this message in ORACLE_HOME/sysman/log/emagent.trc:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;2008-04-23 19:54:26,063 Thread-20 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,064 Thread-20 ERROR pingManager: nmepm_pingReposURL: Cannot connect to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:26,067 Thread-20 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,067 Thread-20 ERROR pingManager: nmepm_pingReposURL: Cannot connect to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:26,359 Thread-5 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;br /&gt;2008-04-23 19:54:26,359 Thread-5 ERROR command: nmejcn: failed http connection to https://omshost:1159/em/upload: retStatus=-32&lt;br /&gt;2008-04-23 19:54:28,368 Thread-5 ERROR http: snmehl_connect: Failed to get address for omshost: Non-Authoritive Host not found (error = 2)&lt;/span&gt;&lt;/pre&gt;The omshost could not be resolved from agenthost:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ ping -a omshost&lt;br /&gt;ping: unknown host omshost&lt;/span&gt;&lt;/pre&gt;After configuring /etc/hosts (adding 555.555.555.555 omshost), and re-trying the upload, upload was successful:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ ping -a omshost&lt;br /&gt;omshost (555.555.555.555) is alive&lt;br /&gt;&lt;br /&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: Upload timed out before completion.&lt;br /&gt;Number of files to upload before the upload: 13, total size (MB): 5.25.&lt;br /&gt;Remaining number of files to upload: 13, total size (MB): 5.25.&lt;br /&gt;&lt;br /&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload error: Upload timed out before completion.&lt;br /&gt;Number of files to upload before the upload: 6, total size (MB): 1.38.&lt;br /&gt;Remaining number of files to upload: 6, total size (MB): 1.38.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl upload&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMD upload completed successfully&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;The agent status shows that upload is successful now:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;gc@agenthost $ emctl status agent&lt;br /&gt;Oracle Enterprise Manager 10g Release 4 Grid Control 10.2.0.4.0.&lt;br /&gt;Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent Version     : 10.2.0.4.0&lt;br /&gt;OMS Version       : 10.2.0.1.0&lt;br /&gt;Protocol Version  : 10.2.0.0.0&lt;br /&gt;Agent Home        : /u01/app/gc/product/agent10g&lt;br /&gt;Agent binaries    : /u01/app/gc/product/agent10g&lt;br /&gt;Agent Process ID  : 26774&lt;br /&gt;Parent Process ID : 26765&lt;br /&gt;Agent URL         : https://agenthost.domain.com:3872/emd/main/&lt;br /&gt;Repository URL    : https://omshost:1159/em/upload&lt;br /&gt;Started at        : 2008-04-24 12:20:17&lt;br /&gt;Started by user   : gc&lt;br /&gt;Last Reload       : 2008-04-24 12:20:17&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Last successful upload                       : 2008-04-24 12:39:02&lt;/strong&gt;&lt;/span&gt;Total Megabytes of XML files uploaded so far :     7.44&lt;br /&gt;Number of XML files pending upload           :        0&lt;br /&gt;Size of XML files pending upload(MB)         :     0.00&lt;br /&gt;Available disk space on upload filesystem    :    18.13%&lt;br /&gt;Last successful heartbeat to OMS             : 2008-04-24 12:39:27&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;Agent is Running and Ready&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-232954117260580390?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/232954117260580390/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=232954117260580390' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/232954117260580390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/232954117260580390'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/problem-with-management-agent-10g.html' title='Problem with Management Agent 10g Upload'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-5475392516619516129</id><published>2008-04-28T12:02:00.000-07:00</published><updated>2008-04-28T12:03:34.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Suite 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>Installation of Oracle Application Server 10g in Windows Vista</title><content type='html'>Installation of Oracle Application Server 10g in Windows Vista failed with the following error:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Starting Oracle Universal Installer...&lt;br /&gt;&lt;br /&gt;Checking installer requirements...&lt;br /&gt;&lt;br /&gt;Checking operating system version: must be 5.0, 5.1 or 5.2 . Actual 6.0&lt;br /&gt;Failed &lt;&lt;&lt;&lt;&lt;br /&gt;&lt;br /&gt;Exiting Oracle Universal Installer, log for this session can be found at C:\User&lt;br /&gt;s\Raku\AppData\Local\Temp\OraInstall2008-03-22_02-00-54AM\installActions2008-03-&lt;br /&gt;22_02-00-54AM.log&lt;br /&gt;&lt;br /&gt;Please press Enter to exit...&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;It's a pity that OAS 10g is not supported in Windows Vista.&lt;br /&gt;However, you can add 6.0 (for Vista) in install/oraparam file: &lt;br /&gt;&lt;em&gt;Windows=5.0,5.1,5.2,6.0 &lt;/em&gt;&lt;br /&gt;and restart the installation. &lt;br /&gt;There is, of course, no guarantee that it will work error-free. &lt;br /&gt;I installed the same way, I will look if it works correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-5475392516619516129?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/5475392516619516129/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=5475392516619516129' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5475392516619516129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5475392516619516129'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/installation-of-oracle-application.html' title='Installation of Oracle Application Server 10g in Windows Vista'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-5997330488049914369</id><published>2008-04-28T12:00:00.001-07:00</published><updated>2008-04-28T12:01:23.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Error in upgrading 9.2.0.1 database to 10g</title><content type='html'>Today, I was trying to upgrade my 9.2.0.1 database to 10g. I installed the 10g server, and run the Pre-Upgrade Information Tool (utlu102i.sql) to analyze and prepare my 9.2.0.1 database for upgrade. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;SQL&gt; @?/rdbms/admin/utlu102i&lt;br /&gt;DECLARE&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-20000: Version 9.2.0.1.0 not supported for upgrade to release 10.2.0&lt;br /&gt;ORA-06512: at line 1523&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;It turned out that I should have upgraded it to at least 9.2.0.4 before installing 10g server software. Should have.... &lt;br /&gt;Here is the &lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14238/preup.htm#CEGEIBHC"&gt;link &lt;/a&gt;to the upgrade documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-5997330488049914369?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/5997330488049914369/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=5997330488049914369' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5997330488049914369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5997330488049914369'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/upgrading-9201-database-to-10g.html' title='Error in upgrading 9.2.0.1 database to 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4511162553935673200</id><published>2008-04-28T11:58:00.000-07:00</published><updated>2008-07-22T06:40:48.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Error Creating Snapshot in AWR</title><content type='html'>When trying to run an &lt;strong&gt;&lt;span style="color:#009900;"&gt;ADDM&lt;/span&gt; &lt;/strong&gt;Report in Enterprise Manager Grid Control 10g, I got the following error:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;“Insufficient Data in Interval. For displaying data on this page, two historical snapshots are needed. Make sure that two snapshots are present in the target database instance. In addition modify the interval so that it is contained within two available snapshots”&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I looked at &lt;strong&gt;&lt;span style="color:#009900;"&gt;Automatic Workload Repository&lt;/span&gt;&lt;/strong&gt;, it wasn’t configured automatically.&lt;br /&gt;Then I tried to manually create snapshot in Automatic Workload Repository:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;“Are you sure you want to create a manual snapshot?&lt;br /&gt;Snapshots are created automatically by the database. Creating one manually may affect the results of the automatic snapshot immediately following.”&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I answered Yes, but snapshot couldn’t be created:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;ORA-13516: SWRF Operation failed: SWRF Schema not initialized&lt;br /&gt;ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 8&lt;br /&gt;ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 31&lt;br /&gt;ORA-06512: at line 1&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Then I tried the same thing to manually create snapshot using the package:&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; exec dbms_workload_repository.create_snapshot();&lt;br /&gt;&lt;br /&gt;begin dbms_workload_repository.create_snapshot(); end;&lt;br /&gt;&lt;br /&gt;ORA-13516: SWRF Operation failed: SWRF Schema not initialized&lt;br /&gt;ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 8&lt;br /&gt;ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 31&lt;br /&gt;ORA-06512: at line 1&lt;/span&gt;&lt;/pre&gt;The metalink Note:287818.1:&lt;br /&gt;&lt;em&gt;Error: ORA-13516 (ORA-13516)&lt;br /&gt;Text: SWRF Operation failed: %s&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;Cause: The operation failed because SWRF is not available. The possible&lt;br /&gt;causes are: SWRF schema not yet created; SWRF not enabled; SWRF&lt;br /&gt;schema not initialized; or database not open or is running in&lt;br /&gt;READONLY or STANDBY mode.&lt;br /&gt;Action: check the above conditions and retry the operation.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Note:459887.1:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Cause&lt;br /&gt;These errors would be caused because of wrong or invalid objects with respect to AWR&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;In order to resolve this issue it is recommended to drop and recreate the AWR objects , which can be done using &lt;strong&gt;&lt;span style="color:#000099;"&gt;CATNOAWR.SQL&lt;/span&gt; &lt;/strong&gt;and &lt;strong&gt;&lt;span style="color:#000099;"&gt;CATAWR.SQL&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;But from 10.2 onwards, the script name has changed. The catalog script for AWR Tables, used to create the Workload Repository Schema is CATAWRTB.SQL .&lt;/em&gt;&lt;br /&gt;Dropping and recreating the AWR objects and bouncing the database:&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; @$ORACLE_HOME/rdbms/admin/catnoawr.sql&lt;br /&gt;SQL&gt; @$ORACLE_HOME/rdbms/admin/catawr.sql&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4511162553935673200?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4511162553935673200/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4511162553935673200' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4511162553935673200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4511162553935673200'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/error-creating-snapshot-in-awr.html' title='Error Creating Snapshot in AWR'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-5645968046625056334</id><published>2008-04-28T11:29:00.000-07:00</published><updated>2008-04-28T11:54:45.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Grid Control 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>Ошибки в Oracle Management Agent 10g: 'No username specified for WBEM fetchlet'</title><content type='html'>&lt;div align="right"&gt;&lt;a href="http://ragivetova.blogspot.com/2008/04/no-username-specified-for-wbem-fetchlet.html"&gt;English version of this article&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;После добавления нового узла в Oracle Grid Control 10g, в логах агента я заметила такие ошибки в emagent.trc:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;2008-04-25 15:32:17,560 Thread-14019 WARN  collector: &lt;nmecmc.c&gt; Error exit. Error message: No username specified for WBEM fetchlet.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 ERROR fetchlets.wbem: &lt;strong&gt;&lt;span style="color:#009900;"&gt;No username specified for WBEM fetchlet&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 ERROR engine: [host,eccisdb,ProjectResourceUsage] : nmeegd_GetMetricData failed : No username specified for WBEM fetchlet.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 WARN  collector: &lt;nmecmc.c&gt; Error exit. Error message: No username specified for WBEM fetchlet.&lt;/span&gt;&lt;/pre&gt;Такая же ошибка была в веб-интерфейсе Oracle Grid Control:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;Host: agenthost55  &amp;gt;  Metric Collection Errors  &amp;gt;&lt;br /&gt; Error Details&lt;br /&gt; Target:  agenthost55&lt;br /&gt; Type:  Host&lt;br /&gt; Metric:  Aggregate Resource Usage Statistics (By Project)&lt;br /&gt; Collection Timestamp:  09-Apr-2008 12:24:18&lt;br /&gt; Error Type:  Collection Failure&lt;br /&gt; Message:  &lt;strong&gt;&lt;span style="color:#009900;"&gt;No username specified for WBEM fetchlet&lt;/span&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s1600-h/grid1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193174318809513874" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s400/grid1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ниже описание причины ошибки и ее решение из Металинка &lt;strong&gt;Note:271632.1&lt;/strong&gt;:&lt;pre&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Cause:&lt;/strong&gt;&lt;br /&gt;Beginning with EM 10g, certain OS vendors have enhanced their systems to include a new metric - Aggregate resource usage statistics, gathered by User and by Project. &lt;strong&gt;&lt;span style="color:#009900;"&gt;These metrics are collected by using the "CIM Object Manager" on the Solaris 9 host. In order to get this information, the CIM Object Manager needs to be supplied with Username and Password of a user on that host so that authentication can successfully happen&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;From within the EM 10g Grid Control UI,&lt;br /&gt;1. Click on Targets -&gt; Host tab&lt;br /&gt;2. Select your Solaris 9 host and go to the Hosts Home page (repeat these steps for each Solaris 9 host)&lt;br /&gt;3. Click on the Monitoring Configuration link at the bottom right side of the page&lt;br /&gt;4. Enter your OS username/password. It's best to enter a user that has DBA privileges.&lt;br /&gt;5. Click save.&lt;br /&gt;This will update the central Management Agent's targets.xml file on the Solaris 9 host and force a reload of the configuration files. The error above should stop.&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-5645968046625056334?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/5645968046625056334/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=5645968046625056334' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5645968046625056334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5645968046625056334'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/oracle-management-agent-10g-no-username.html' title='Ошибки в Oracle Management Agent 10g: &apos;No username specified for WBEM fetchlet&apos;'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s72-c/grid1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-7868304043255867458</id><published>2008-04-25T06:21:00.000-07:00</published><updated>2008-04-28T11:54:53.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Grid Control 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>'No username specified for WBEM fetchlet' errors in Agent 10g</title><content type='html'>&lt;div align="right"&gt;&lt;a href="http://ragivetova.blogspot.com/2008/04/oracle-management-agent-10g-no-username.html"&gt;Прочитать на русском&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After adding a new target to Oracle Grid Control 10g, I noticed these errors in emagent.trc:&lt;pre&gt;&lt;span style="color:#000000;"&gt;2008-04-25 15:32:17,560 Thread-14019 WARN  collector: &lt;nmecmc.c&gt; Error exit. Error message: No username specified for WBEM fetchlet.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 ERROR fetchlets.wbem: &lt;strong&gt;&lt;span style="color:#009900;"&gt;No username specified for WBEM fetchlet&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 ERROR engine: [host,eccisdb,ProjectResourceUsage] : nmeegd_GetMetricData failed : No username specified for WBEM fetchlet.&lt;br /&gt;2008-04-25 15:37:34,865 Thread-14064 WARN  collector: &lt;nmecmc.c&gt; Error exit. Error message: No username specified for WBEM fetchlet.&lt;/span&gt;&lt;/pre&gt;The same error was in the Grid Control Console:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;Host: agenthost55  &amp;gt;  Metric Collection Errors  &amp;gt;&lt;br /&gt; Error Details&lt;br /&gt; Target:  agenthost55&lt;br /&gt; Type:  Host&lt;br /&gt; Metric:  Aggregate Resource Usage Statistics (By Project)&lt;br /&gt; Collection Timestamp:  09-Apr-2008 12:24:18&lt;br /&gt; Error Type:  Collection Failure&lt;br /&gt; Message:  &lt;strong&gt;&lt;span style="color:#009900;"&gt;No username specified for WBEM fetchlet&lt;/span&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s1600-h/grid1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193174318809513874" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s400/grid1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is the solution from Metalink &lt;strong&gt;Note:271632.1&lt;/strong&gt;:&lt;pre&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Cause:&lt;/strong&gt;&lt;br /&gt;Beginning with EM 10g, certain OS vendors have enhanced their systems to include a new metric - Aggregate resource usage statistics, gathered by User and by Project. &lt;strong&gt;&lt;span style="color:#009900;"&gt;These metrics are collected by using the "CIM Object Manager" on the Solaris 9 host. In order to get this information, the CIM Object Manager needs to be supplied with Username and Password of a user on that host so that authentication can successfully happen&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;From within the EM 10g Grid Control UI,&lt;br /&gt;1. Click on Targets -&gt; Host tab&lt;br /&gt;2. Select your Solaris 9 host and go to the Hosts Home page (repeat these steps for each Solaris 9 host)&lt;br /&gt;3. Click on the Monitoring Configuration link at the bottom right side of the page&lt;br /&gt;4. Enter your OS username/password. It's best to enter a user that has DBA privileges.&lt;br /&gt;5. Click save.&lt;br /&gt;This will update the central Management Agent's targets.xml file on the Solaris 9 host and force a reload of the configuration files. The error above should stop.&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-7868304043255867458?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/7868304043255867458/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=7868304043255867458' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7868304043255867458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7868304043255867458'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/no-username-specified-for-wbem-fetchlet.html' title='&apos;No username specified for WBEM fetchlet&apos; errors in Agent 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jN6fOA1pqaw/SBHch0FSf5I/AAAAAAAAAD8/vXqEOkaXHus/s72-c/grid1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-7256544551935775492</id><published>2008-04-23T11:24:00.000-07:00</published><updated>2008-04-23T13:22:40.468-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Automatic Optimizer Statistics Collection</title><content type='html'>В Oracle 10g сбор статистики для оптимизатора выполняется &lt;strong&gt;&lt;span style="color:#009900;"&gt;автоматически&lt;/span&gt; &lt;/strong&gt;запланированным джобом (scheduled job) &lt;strong&gt;&lt;span style="color:#009900;"&gt;GATHER_STATS_JOB&lt;/span&gt;&lt;/strong&gt;. Данная статистика об объектах используется оптимизатором (Cost-Based Optimizer) для построения эффективных планов выполнения для запросов, тем самым значительно уменьшая время выполнения запросов.&lt;br /&gt;&lt;br /&gt;По умолчанию, сбор статистики выполняется по ночам с 22:00 до 06:00 утра и весь день в выходные дни.&lt;br /&gt;Собирается статистика только по тем объектам, у которых отсутствует статистика, или устарела.&lt;br /&gt;&lt;br /&gt;Каким образом Oracle узнает, что статистика устарела? &lt;br /&gt;Данные о кол-ве DML операциий (INSERT, DELETE, UPDATE) над объектом с момента последнего сбора статистики фиксируются в SGA, которые периодически записываются в таблицу &lt;strong&gt;DBA_TAB_MODIFICATIONS&lt;/strong&gt;. База данных использует эти данные для того, чтобы определить устарела ли статистика объекта.&lt;br /&gt;&lt;br /&gt;Из &lt;a href="http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10752/stats.htm#40674"&gt;документации &lt;/a&gt;Oracle: &lt;blockquote&gt;Optimizer statistics are automatically gathered with the job GATHER_STATS_JOB. This job gathers statistics on all objects in the database which have:&lt;br /&gt;Missing statistics&lt;br /&gt;Stale statistics&lt;br /&gt;&lt;br /&gt;This job is created automatically at database creation time and is managed by the Scheduler. This Scheduler runs this job when the maintenance window is opened. By default, the maintenance window opens &lt;strong&gt;&lt;span style="color:#009900;"&gt;every night from 10 P.M. to 6 A.M. and all day on weekends&lt;/span&gt;&lt;/strong&gt;. The GATHER_STATS_JOB continues until it finishes, even if it exceeds the allocated time for the maintenance window. The default behavior of the maintenance window can be changed.&lt;/blockquote&gt;Запланированный джоб GATHER_STATS_JOB:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; &lt;strong&gt;&lt;span style="color:#006600;"&gt;select owner, job_name, program_name, enabled from dba_scheduler_jobs&lt;br /&gt;where job_name='GATHER_STATS_JOB';&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;OWNER      JOB_NAME           PROGRAM_NAME         ENABLED&lt;br /&gt;---------- ------------------ -------------------- -----&lt;br /&gt;SYS        GATHER_STATS_JOB   GATHER_STATS_PROG    TRUE&lt;/span&gt;&lt;/pre&gt;Выключить Автоматический Сбор Статистики для Оптимизатора, можно отключив джоб:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt; &lt;strong&gt;&lt;span style="color:#009900;"&gt;exec dbms_scheduler.disable('GATHER_STATS_JOB');&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;strong&gt;&lt;span style="color:#000000;"&gt;select owner, job_name, program_name, enabled from dba_scheduler_jobs&lt;br /&gt;where job_name='GATHER_STATS_JOB';&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;OWNER      JOB_NAME           PROGRAM_NAME         ENABLED&lt;br /&gt;---------- ------------------ -------------------- -----&lt;br /&gt;SYS        GATHER_STATS_JOB   GATHER_STATS_PROG    FALSE&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Если в базе данных имеются таблицы, которые часто обновляются, то частый сбор статистики может негативно повлиять на производительность базы данных. Для того, чтоб исключить объекты из автоматического или любого другого сбора статистики можно "закрепить" ее статистику:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;begin&lt;br /&gt; dbms_stats.gather_table_stats('SCOTT','EMP');&lt;br /&gt; &lt;strong&gt;&lt;span style="color:#009900;"&gt;dbms_stats.lock_table_stats('SCOTT','EMP');&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;end;&lt;br /&gt;/&lt;/span&gt;&lt;/pre&gt;Теперь, по этой таблице невозможно будет собрать статистику ни автоматически, ни вручную:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;SQL&gt;exec dbms_stats.gather_table_stats('SCOTT','EMP');&lt;br /&gt;&lt;br /&gt;begin dbms_stats.gather_table_stats('SCOTT','EMP'); end;&lt;br /&gt;ORA-20005: object statistics are locked (stattype = ALL)&lt;br /&gt;ORA-06512: at "SYS.DBMS_STATS", line 13182&lt;br /&gt;ORA-06512: at "SYS.DBMS_STATS", line 13202&lt;br /&gt;ORA-06512: at line 2 &lt;/span&gt;&lt;/pre&gt;Снять блокировку статистики:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;dbms_stats.unlock_table_stats('SCOTT','EMP');&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-7256544551935775492?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/7256544551935775492/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=7256544551935775492' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7256544551935775492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7256544551935775492'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/automatic-optimizer-statistics.html' title='Automatic Optimizer Statistics Collection'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2909090855395479012</id><published>2008-04-22T07:00:00.000-07:00</published><updated>2008-04-23T00:21:55.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Statspack (9i) и Automatic Workload Repository (10g)</title><content type='html'>Для сбора информации о производительности базы данных в Oracle 9i использовался &lt;strong&gt;&lt;span style="color:#000099;"&gt;statspack&lt;/span&gt;&lt;/strong&gt;, в Oracle 10g statspack эволюционировал в &lt;strong&gt;&lt;span style="color:#000099;"&gt;Automatic Workload Repository&lt;/span&gt;&lt;/strong&gt; (Автоматически управляемый репозитарий рабочей нагрузки).&lt;br /&gt;&lt;br /&gt;В Oracle 9i statspack устанавливался дополнительно скриптом &lt;span style="font-family:courier new;"&gt;spcreate.sql&lt;/span&gt;, который создавал пользователя &lt;span style="font-family:courier new;"&gt;perfstat&lt;/span&gt;, под которым и создавался пакет &lt;span style="font-family:courier new;"&gt;statspack&lt;/span&gt; и другие необходимые объекты.&lt;br /&gt;&lt;br /&gt;В Oracle 10g Automatic Workload Repository устанавливается &lt;strong&gt;&lt;span style="color:#000000;"&gt;автоматически&lt;/span&gt;&lt;/strong&gt; прямо &lt;strong&gt;&lt;span style="color:#009900;"&gt;в схеме SYS&lt;/span&gt;&lt;/strong&gt;, и по умолчанию собирает статистику о производительности каждый час и хранит ее 7 дней.&lt;br /&gt;&lt;br /&gt;В Oracle 9i, снимок (snapshot) делался с помощью пакета statspack:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exec statspack.snap;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В Oracle 10g используется новый пакет dbms_workload_repository:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exec dbms_workload_repository.create_snapshot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Список снимков (snapshots) в Oracle 9i:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;select * from stats$snapshot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Список снимков (snapshots) в Oracle 10g:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;select * from dba_hist_snapshot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для создания отчета на основе двух снимков, в Oracle 9i использовался скрипт:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; @?/rdbms/admin/spreport.sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В Oracle 10g используется скрипт, который может сгенерировать отчет и текстовом, и в html формате:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; @?/rdbms/admin/awrrpt.sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В Oracle 10g все эти операции, то есть сделать снимок, просмотреть список снимков, и создать отчет в формате html, можно проделать в &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Enterprise Manager Database Control&lt;/span&gt;&lt;/strong&gt; или &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Grid Control&lt;/span&gt;&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2909090855395479012?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2909090855395479012/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2909090855395479012' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2909090855395479012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2909090855395479012'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/statpack-9i-automatic-workload.html' title='Statspack (9i) и Automatic Workload Repository (10g)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8763075900435722203</id><published>2008-04-21T07:01:00.000-07:00</published><updated>2008-04-28T11:36:54.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris и Oracle'/><title type='text'>Prstat и процессы oracle</title><content type='html'>Отчет ниже показывает, что процессы пользователя oracle занимают &lt;strong&gt;&lt;span style="color:#006600;"&gt;94%&lt;/span&gt;&lt;/strong&gt; всей оперативной памяти, то есть почти &lt;strong&gt;&lt;span style="color:#009900;"&gt;188GB&lt;/span&gt;&lt;/strong&gt;, в то время как оперативная память на сервере в сумме равна всего &lt;strong&gt;&lt;span style="color:#009900;"&gt;32GB&lt;/span&gt; &lt;/strong&gt;(16GB физической памяти + 4GB виртуальной памяти).&lt;br /&gt;&lt;br /&gt;Физическая память:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oracle@myhost $ prtdiag  grep Memory&lt;br /&gt;Memory size: 16384 Megabytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Виртуальная память:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oracle@myhost $ vmstat 3 3&lt;br /&gt;kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 sd sd sd in sy cs us sy id&lt;br /&gt;0 0 0 16319144 8342704 15 104 7 8 8 15688 0 0 0 0 0 473 2256 2086 2 1 97&lt;br /&gt;0 0 0 &lt;strong&gt;&lt;span style="color:#000099;"&gt;4425048&lt;/span&gt; &lt;/strong&gt;280488 33 409 0 3 3 11448 0 0 0 0 0 1076 408191 5033 24 15 60&lt;br /&gt;0 0 0 &lt;strong&gt;&lt;span style="color:#000099;"&gt;4425048&lt;/span&gt; &lt;/strong&gt;280440 25 255 0 13 13 8352 0 0 0 0 0 867 429324 6717 25 15 59&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oracle@myhost $ &lt;strong&gt;prstat -a -s size&lt;/strong&gt;&lt;br /&gt;PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP&lt;br /&gt;29689 user1 2540M 2313M cpu1 42 0 10:24:56 6.3% java/103&lt;br /&gt;24113 user2 1689M 1153M sleep 14 0 0:48:16 0.0% java/114&lt;br /&gt;21867 user3 1270M 829M sleep 15 0 1:19:42 0.1% java/81&lt;br /&gt;20270 user1 1267M 931M sleep 6 0 0:09:12 0.0% java/83&lt;br /&gt;13020 user3 1259M 821M sleep 1 0 1:15:39 0.0% java/81&lt;br /&gt;22021 oracle 1117M 1069M sleep 59 0 0:00:52 0.0% oracle/258&lt;br /&gt;22023 oracle 1115M 1064M sleep 59 0 0:01:17 0.0% oracle/11&lt;br /&gt;22086 oracle 1112M 1061M sleep 1 0 0:00:00 0.0% oracle/1&lt;br /&gt;22088 oracle 1112M 1061M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22025 oracle 1111M 1064M sleep 59 0 0:00:12 0.0% oracle/11&lt;br /&gt;2768 oracle 1110M 1072M sleep 59 0 0:00:01 0.0% oracle/11&lt;br /&gt;19012 oracle 1110M 1072M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;19030 oracle 1110M 1069M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;11409 oracle 1110M 1069M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22027 oracle 1110M 1070M sleep 1 0 0:00:31 0.0% oracle/1&lt;br /&gt;4125 oracle 1109M 1071M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22019 oracle 1109M 1064M sleep 59 0 0:03:36 0.0% oracle/1&lt;br /&gt;4005 oracle 1109M 1069M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;27534 oracle 1109M 1068M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;27536 oracle 1109M 1068M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22048 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22037 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22035 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22042 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22050 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22054 oracle 1109M 1062M sleep 21 0 0:00:00 0.0% oracle/1&lt;br /&gt;22056 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22060 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22064 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22058 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22070 oracle 1109M 1062M sleep 53 0 0:00:00 0.0% oracle/1&lt;br /&gt;22066 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;22068 oracle 1109M 1062M sleep 59 0 0:00:00 0.0% oracle/1&lt;br /&gt;NPROC USERNAME SIZE RSS MEMORY TIME CPU&lt;br /&gt;184 &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;oracle 196G 188G 94%&lt;/span&gt;&lt;/strong&gt; 0:44:30 0.1%&lt;br /&gt;1 vmpapp2 2540M 2313M 1.1% 10:24:56 6.3%&lt;br /&gt;1 vmpapp3 1689M 1153M 0.6% 0:48:16 0.0%&lt;br /&gt;4 vmpods5 1272M 935M 0.5% 0:09:12 0.0%&lt;br /&gt;1 vmpods2 1270M 829M 0.4% 1:19:42 0.1%&lt;br /&gt;1 vmpods4 1259M 821M 0.4% 1:15:39 0.0%&lt;br /&gt;6 vmpapp1 1012M 537M 0.3% 0:06:59 0.0%&lt;br /&gt;1 vmpapp4 1005M 516M 0.3% 0:06:23 0.0%&lt;br /&gt;2 vmpapp5 978M 492M 0.2% 0:08:46 0.6%&lt;br /&gt;1 vmpjms4 975M 479M 0.2% 0:04:49 0.0%&lt;br /&gt;Total: 277 processes, 2763 lwps, load averages: 2.62, 2.61, 2.52&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Многие утилиты Solaris не совсем правильно считают статистику по процессам, которые работают с разделяемой памятью (shared memory), в данном случае с разделяемой памятью Oracle.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Получается, что утилита prstat &lt;strong&gt;суммирует &lt;/strong&gt;разделяемую память на все процессы oracle.&lt;br /&gt;&lt;br /&gt;Кол-во процессов oracle:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oracle@myhost $ ps -ef grep ora wc -l&lt;br /&gt;185&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Общий размер SGA экземпляра oracle:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oracle@myhost $ sqlplus '/as sysdba'&lt;br /&gt;SQL&gt; show sga&lt;br /&gt;Total System Global Area 1075651720 bytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если умножим кол-во процессов на общий размер SGA, то мы приблизимся к 188GB, которое нам показал prstat. Конечно, для более точного подсчёта, нужно добавить еще размер PGA под каждый процесс.&lt;br /&gt;&lt;br /&gt;185 * 1 075 651 720 bytes = 198 995 568 200 bytes = 185GB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8763075900435722203?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8763075900435722203/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8763075900435722203' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8763075900435722203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8763075900435722203'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/prstat-oracle.html' title='Prstat и процессы oracle'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-7533231400710703828</id><published>2008-04-19T12:36:00.000-07:00</published><updated>2008-04-19T13:28:17.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Табличные пространства в Oracle 10g</title><content type='html'>В Oracle 10g появились следующие новые возможности по работе с табличными пространствами:&lt;br /&gt;&lt;br /&gt;1) Возможность переименовать табличные пространства&lt;br /&gt;2) Установка постоянного табличного пространства по умолчанию (default permanent tablespace)&lt;br /&gt;3) Поддержка больших файлов (bigfile tablespaces)&lt;br /&gt;4) Возможность переносить табличные пространства на другие платформы (cross platform transportable tablespaces)&lt;br /&gt;5) Группы временных табличных пространств (temporary tablespace groups)&lt;br /&gt;6) Передача файлов (DBMS_FILE_TRANSFER)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) Возможность переименовать табличные пространства&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; select tablespace_name, count(*) from dba_segments where tablespace_name like 'USERS%' group by tablespace_name;&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME COUNT(*)&lt;br /&gt;------------------------------ ----------&lt;br /&gt;USERS 43&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;strong&gt;alter tablespace users rename to users_new;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Tablespace altered&lt;br /&gt;&lt;br /&gt;SQL&gt; select tablespace_name, count(*) from dba_segments where tablespace_name like 'USERS%' group by tablespace_name;&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME COUNT(*)&lt;br /&gt;------------------------------ ----------&lt;br /&gt;USERS_NEW 43&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Правда, если вы не используете OMF, то файл данных не переименуется автоматически.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; select tablespace_name, file_name from dba_data_files where tablespace_name like 'USERS%';&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME FILE_NAME&lt;br /&gt;------------------------------ --------------------------------------------------------------------------------&lt;br /&gt;USERS D:\ORACLE\PRODUCT\ORADATA\TESTDB\USERS01.DBF&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;strong&gt;alter tablespace users rename to users_new;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Tablespace altered&lt;br /&gt;&lt;br /&gt;SQL&gt; select tablespace_name, file_name from dba_data_files where tablespace_name like 'USERS%';&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME FILE_NAME&lt;br /&gt;------------------------------ --------------------------------------------------------------------------------&lt;br /&gt;USERS_NEW D:\ORACLE\PRODUCT\ORADATA\TESTDB\USERS01.DBF&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Табличные пространства SYSTEM и SYSAUX нельзя переименовать таким образом.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; alter tablespace sysaux rename to sysaux2;&lt;br /&gt;&lt;br /&gt;alter tablespace sysaux rename to sysaux2&lt;br /&gt;&lt;br /&gt;ORA-13502: Cannot rename SYSAUX tablespace&lt;br /&gt;&lt;br /&gt;SQL&gt; alter tablespace system rename to system2;&lt;br /&gt;&lt;br /&gt;alter tablespace system rename to system2&lt;br /&gt;&lt;br /&gt;ORA-00712: cannot rename system tablespace&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;При переименовании табличного пространства UNDO, ссылка на него в файле параметров тоже автоматически меняется после перегруза, если используется spfile.&lt;br /&gt;Если экземпляр был старторван с pfile, но в alert.log выводится напоминание вручную обновить pfile.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; show parameter pfile&lt;br /&gt;&lt;br /&gt;NAME TYPE VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;spfile string D:\ORACLE\PRODUCT\10.2.0\DATAB&lt;br /&gt;ASE\SPFILETESTDB.ORA&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; show parameter undo&lt;br /&gt;&lt;br /&gt;NAME TYPE VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;undo_management string AUTO&lt;br /&gt;undo_retention integer 900&lt;br /&gt;undo_tablespace string UNDOTBS1&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; alter tablespace undotbs1 rename to undotbs_new;&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; show parameter undo&lt;br /&gt;&lt;br /&gt;NAME TYPE VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;undo_management string AUTO&lt;br /&gt;undo_retention integer 900&lt;br /&gt;undo_tablespace string UNDOTBS1&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; shutdown immediate&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 612368384 bytes&lt;br /&gt;Fixed Size 1292036 bytes&lt;br /&gt;Variable Size 348129532 bytes&lt;br /&gt;Database Buffers 255852544 bytes&lt;br /&gt;Redo Buffers 7094272 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; show parameter undo&lt;br /&gt;&lt;br /&gt;NAME TYPE VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;undo_management string AUTO&lt;br /&gt;undo_retention integer 900&lt;br /&gt;undo_tablespace string UNDOTBS_NEW&lt;br /&gt;SQL&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;2) Установка постоянного табличного пространства по умолчанию (default permanent tablespace)&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; &lt;strong&gt;alter database default tablespace example;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Database altered&lt;br /&gt;&lt;br /&gt;SQL&gt; select property_name, property_value from database_properties where property_name like 'DEFAULT_PERMANENT_TABLESPACE%';&lt;br /&gt;&lt;br /&gt;PROPERTY_NAME PROPERTY_VALUE&lt;br /&gt;------------------------------ --------------------------------------------------------------------------------&lt;br /&gt;DEFAULT_PERMANENT_TABLESPACE EXAMPLE&lt;br /&gt;&lt;br /&gt;SQL&gt; create user rahat identified by agivetova;&lt;br /&gt;&lt;br /&gt;User created&lt;br /&gt;&lt;br /&gt;SQL&gt; select username, default_tablespace from dba_users where username ='RAHAT';&lt;br /&gt;&lt;br /&gt;USERNAME DEFAULT_TABLESPACE&lt;br /&gt;------------------------------ ------------------------------&lt;br /&gt;RAHAT EXAMPLE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Поддержка табличных пространств состоящих из большого файла (bigfile tablespaces)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Одним из основных новинок в работе с табличными пространствами в Oracle 10g являются поддержка больших файлов.&lt;br /&gt;Табличные пространства bigfile состоят только из 1 файла данных, который может расти до 128TB в зависимости от размера блока.&lt;br /&gt;Например, если размер блока табличного пространства 8К, то табличное пространство может расти до 32ТВ.&lt;br /&gt;Внизу таблица с максимальными размерами табличных пространств в зависимости от размера блока:&lt;br /&gt;&lt;br /&gt;Размер блока табличного пространства Максимальный размер табличного пространства&lt;br /&gt;2K                                                                        8TB&lt;br /&gt;4K                                                                      16TB&lt;br /&gt;8K                                                                      32TB&lt;br /&gt;16K                                                                    64TB&lt;br /&gt;32K                                                                  128TB&lt;br /&gt;&lt;br /&gt;В представление dba_tablespaces добавлено поле bigfile, которое указывает, является ли табличное пространство - bigfile tablespace.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; select tablespace_name, bigfile from dba_tablespaces;&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME BIGFILE&lt;br /&gt;------------------------------ -------&lt;br /&gt;SYSTEM NO&lt;br /&gt;UNDOTBS_NEW NO&lt;br /&gt;SYSAUX NO&lt;br /&gt;TEMP NO&lt;br /&gt;USERS NO&lt;br /&gt;EXAMPLE NO&lt;br /&gt;&lt;br /&gt;6 rows selected&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;strong&gt;&lt;span style="color:#000099;"&gt;create bigfile tablespace big_users datafile 'D:\ORACLE\PRODUCT\ORADATA\TESTDB\BIG_USERS01.DBF' size 10M autoextend on next 10M;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Tablespace created&lt;br /&gt;&lt;br /&gt;SQL&gt; select tablespace_name, bigfile from dba_tablespaces;&lt;br /&gt;&lt;br /&gt;TABLESPACE_NAME BIGFILE&lt;br /&gt;------------------------------ -------&lt;br /&gt;SYSTEM NO&lt;br /&gt;UNDOTBS_NEW NO&lt;br /&gt;SYSAUX NO&lt;br /&gt;TEMP NO&lt;br /&gt;USERS NO&lt;br /&gt;BIG_USERS YES&lt;br /&gt;EXAMPLE NO&lt;br /&gt;&lt;br /&gt;7 rows selected&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;На практике оказывается, что многие операционные системы не поддерживают настолько большие файлы, поэтому прежде тем,&lt;br /&gt;как решить использовать bigfile табличные пространства, следует узнать поддерживает ли ОС большие файлы.&lt;br /&gt;В противном случае можно оказаться в ситуации, что невозможно будет увеличить табличное пространство, так как&lt;br /&gt;bigfile tablespace состоит только из одного файла данных и к нему невозможно добавить дополнительные файлы данных.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; &lt;span style="color:#000099;"&gt;&lt;strong&gt;alter tablespace big_users add datafile 'D:\ORACLE\PRODUCT\ORADATA\TESTDB\BIG_USERS02.DBF' size 20M;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;alter tablespace big_users add datafile 'D:\ORACLE\PRODUCT\ORADATA\TESTDB\BIG_USERS02.DBF' size 20M&lt;br /&gt;&lt;br /&gt;ORA-32771: cannot add file to bigfile tablespace&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;По умолчанию, все табличные пространства создаются c smallfile, но эту настройку можно изменить следующей командой:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; select property_name, property_value from database_properties where property_name like 'DEFAULT_TBS_TYPE';&lt;br /&gt;&lt;br /&gt;PROPERTY_NAME PROPERTY_VALUE&lt;br /&gt;------------------------------ --------------------------------------------------------------------------------&lt;br /&gt;DEFAULT_TBS_TYPE SMALLFILE&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="color:#000099;"&gt;&lt;strong&gt;alter database set default bigfile tablespace;&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database altered&lt;br /&gt;&lt;br /&gt;SQL&gt; select property_name, property_value from database_properties where property_name like 'DEFAULT_TBS_TYPE';&lt;br /&gt;&lt;br /&gt;PROPERTY_NAME PROPERTY_VALUE&lt;br /&gt;------------------------------ --------------------------------------------------------------------------------&lt;br /&gt;DEFAULT_TBS_TYPE BIGFILE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь, команда create tablespace будет создавать bigfile табличные пространства.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-7533231400710703828?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/7533231400710703828/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=7533231400710703828' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7533231400710703828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7533231400710703828'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/oracle-10g.html' title='Табличные пространства в Oracle 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2831778636458638156</id><published>2008-04-18T01:25:00.000-07:00</published><updated>2008-04-19T00:53:10.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Suite 10g'/><title type='text'>Ошибка при установке SOA Suite 10g</title><content type='html'>При установке SOA Suite 10g в Solaris 5.10, я столкнулась с такой ошибкой на последнем этапе инсталляции:&lt;br /&gt;&lt;em&gt;Configuration assistant "Oracle Application Server Configuration Assistant" failed &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Так как данная настройка была необязательной, то есть "Optional", инсталляция в-общем считалась успешной. Но не стартовал ни один процесс, не стартовал сам Oracle Aplication Server.&lt;br /&gt;&lt;br /&gt;Логи этого ассистента, которая завершилась неуспешно можно посмотреть в следующих файлах:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) $ORACLE_BASE/oraInventory/logs/installActionstimestamp.log &lt;/strong&gt;- сюда пишутся логи любого из неуспешно заверщенных ассистентов&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) $ORACLE_HOME/cfgtoollogs/configtoolstimestamp.log&lt;/strong&gt; - здесь логи Oracle Application Server Configuration Assistant, с которой связана данная ошибка.&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B31017_01/hpux.1013/install/ca.htm#BABJABJG"&gt;Здесь &lt;/a&gt;можно посмотреть куда кладутся логи других ассистентов.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3)$ORACLE_HOME/opmn/logs/opmn.log&lt;/strong&gt; - один из логов OPMN, который тоже не стартовал после установки.&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B14099_09/core.1012/b13996/appendix.htm#i1012194"&gt;Здесь&lt;/a&gt; есть описание каждого из логов OPMN.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Логи из ~/oraInventory/logs/oraInstall2008-04-17_02-22-00PM.out:&lt;/strong&gt;&lt;br /&gt;Oracle JAAS [Thu Apr 17 14:27:05 MSD 2008] admin password is changed successfully&lt;br /&gt;opmnctl: starting opmn and all managed processes...&lt;br /&gt;opmnctl: opmn start failed.&lt;br /&gt;--------------------------------------&lt;br /&gt;The following configuration assistants have not been successfully completed. These assistants must be completed for your product to be completely configured.&lt;br /&gt;Execute file /zones/u01/app/oas/product/oas10g/cfgtoollogs/configToolCommands to re-run all skipped/failed configuration assistants.&lt;br /&gt;/zones/u01/app/oas/product/oas10g/jdk/bin/java -cp /zones/u01/app/oas/product/oas10g/j2ee/home/applications/ascontrol/ascontrol/WEB-INF/lib/ascontrol.jar:/zones/u01/app/oas/product/oas10g/j2ee/home/applications/ascontrol/ascontrol/WEB-INF/lib/log4j-core.jar:/zones/u01/app/oas/product/oas10g/jlib/oraclepki.jar:/zones/u01/app/oas/product/oas10g/jlib/ojmisc.jar: oracle.sysman.ias.studio.installer.ASControlConfigAssistant -sso true -j2eeinstance home -username oc4jadmin -password *Protected value, not to be logged* -oraclehome /zones/u01/app/oas/product/oas10g&lt;br /&gt;/zones/u01/app/oas/product/oas10g/jdk/bin/java -jar /zones/u01/app/oas/product/oas10g/bpel/system/services/lib/bpm-install.jar installSOABasic -oracle-home "/zones/u01/app/oas/product/oas10g" -http-proxy-required false -dbvendor oracle -database myhost 1521 OASDB -username ORABPEL -password *Protected value, not to be logged* -ias-name APPSRV.myhost -iasadmin-password *Protected value, not to be logged* -sso true -homeContainer home -ohstype oc4j -ohshost myhost -ohsport 8889&lt;br /&gt;/zones/u01/app/oas/product/oas10g/owsm/bin/wsmadmin.sh install&lt;br /&gt;/zones/u01/app/oas/product/oas10g/perl/bin/perl /zones/u01/app/oas/product/oas10g/config/launchopmnCA.pl&lt;br /&gt;/zones/u01/app/oas/product/oas10g/ant/bin/ant -buildfile /zones/u01/app/oas/product/oas10g/webservices/lib/wsil-install.xml -logfile /zones/u01/app/oas/product/oas10g/cfgtoollogs/wsil.txt -DHOST=myhost -DOPMNPORT="6003" -DADMIN_USER=oc4jadmin -DOPMNINSTANCE=home -Denv.JAVA_HOME=/zones/u01/app/oas/product/oas10g/jdk -Denv.ANT_HOME=/zones/u01/app/oas/product/oas10g/ant -Denv.ORACLE_HOME=/zones/u01/app/oas/product/oas10g -DENABLE_SSO=true *Protected value, not to be logged*&lt;br /&gt;--------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Вырезка из $ORACLE_HOME/cfgtoollogs/configtools2008-04-17_02-22-00PM.log:&lt;/strong&gt;&lt;br /&gt;------------------------------------------------&lt;br /&gt;Launched configuration assistant 'Oracle Application Server Configuration Assistant'&lt;br /&gt;------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tool type is: Optional.&lt;br /&gt;The command being spawned is: '/zones/u01/app/oas/product/oas10g/jdk/bin/java -cp /zones/u01/app/oas/product/oas10g/j2ee/home/applic&lt;br /&gt;ations/ascontrol/ascontrol/WEB-INF/lib/ascontrol.jar:/zones/u01/app/oas/product/oas10g/j2ee/home/applications/ascontrol/ascontrol/WE&lt;br /&gt;B-INF/lib/log4j-core.jar:/zones/u01/app/oas/product/oas10g/jlib/oraclepki.jar:/zones/u01/app/oas/product/oas10g/jlib/ojmisc.jar: ora&lt;br /&gt;cle.sysman.ias.studio.installer.ASControlConfigAssistant -sso true -j2eeinstance home -username oc4jadmin -password *Protected value&lt;br /&gt;, not to be logged* -oraclehome /zones/u01/app/oas/product/oas10g'&lt;br /&gt;&lt;br /&gt;Configuration assistant "Oracle Application Server Configuration Assistant" failed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Содержимое лог файла $ORACLE_HOME/opmn/logs/opmn.log: (Реальные айпи адреса заменены на 555.555.555.555)&lt;/strong&gt;&lt;br /&gt;08/04/17 14:27:07 [ons-internal] ONS server initiated&lt;br /&gt;08/04/17 14:27:07 [pm-internal] Create pm state directory: /zones/u01/app/oas/product/oas10g/opmn/logs/states&lt;br /&gt;08/04/17 14:27:07 [pm-internal] PM state file does not exist: /zones/u01/app/oas/product/oas10g/opmn/logs/states/.opmndat&lt;br /&gt;08/04/17 14:27:07 [pm-internal] OPMN server ready. Request handling enabled.&lt;br /&gt;08/04/17 14:27:07 [ons-listener] &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;555.555.555.555&lt;/span&gt;&lt;/strong&gt;,6200: BIND (Cannot assign requested address)&lt;br /&gt;08/04/17 14:33:46 [ons-internal] ONS server initiated&lt;br /&gt;08/04/17 14:33:46 [pm-internal] PM state directory exists: /zones/u01/app/oas/product/oas10g/opmn/logs/states&lt;br /&gt;08/04/17 14:33:46 [pm-internal] PM state file does not exist: /zones/u01/app/oas/product/oas10g/opmn/logs/states/.opmndat&lt;br /&gt;08/04/17 14:33:46 [pm-internal] OPMN server ready. Request handling enabled.&lt;br /&gt;08/04/17 14:33:46 [ons-listener] &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;555.555.555.555&lt;/span&gt;&lt;/strong&gt;,6200: BIND (Cannot assign requested address)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Решение:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Причиной ошибки оказались настройки сети, о которой можно прочитать на металинке Note:549091.1 под темой OPMN Tries To Bind To Wrong IP Address During Install.&lt;br /&gt;&lt;br /&gt;Вырезка из металинка Note:549091.1:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;- The OPMN local port above should be binding to "localhost" i.e 127.0.0.1&lt;br /&gt;- "ping localhost" resolves to 127.0.0.1&lt;br /&gt;- "nslookup localhost" resolves to 127.0.0.1&lt;br /&gt;- "nslookup 3.3.3.3" resolves to localhost.subdn.us.oracle.com&lt;br /&gt;&lt;br /&gt;Cause&lt;br /&gt;The problem here is caused by the fact "localhost" is stored within DNS. Normally localhost should not be in DNS.&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;-- To implement the solution, execute the following steps::&lt;br /&gt;Either:&lt;br /&gt;1. Remove localhost entry from DNS (preferred option)&lt;br /&gt;Or:&lt;br /&gt;2. Change the search order in /etc/resolv.conf so it searches the local domain first, so it reads:&lt;br /&gt;&lt;br /&gt;search us.oracle.com uk.oracle.com subdns.us.oracle.com&lt;br /&gt;nameserver 1.1.1.1&lt;br /&gt;nameserver 2.2.2.2&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;У меня localhost определялся правильно, но оказалось, что у самого хоста оказалось &lt;strong&gt;2 разных IP адреса&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oas@myhost $ ping -a myhost&lt;br /&gt;myhost (&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;333.333.333.333&lt;/span&gt;&lt;/strong&gt;) is alive&lt;br /&gt;oas@myhost $ ping -a myhost.domain.com&lt;br /&gt;myhost.domain.com (&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;555.555.555.555&lt;/strong&gt;&lt;/span&gt;) is alive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Содержимое /etc/hosts:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@myhost.domain.com # cat /etc/hosts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Internet host table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;127.0.0.1 localhost&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;333.333.333.333&lt;/span&gt;&lt;/strong&gt; myhost myhost.domain.com loghost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Из справочника по ОС Solaris (ссылка &lt;a href="http://www.brandonhutchinson.com/Solaris_10_ipnodes_caveat.html"&gt;здесь&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;em&gt;On Solaris 10, IPv4 addresses are looked up in /etc/inet/ipnodes before /etc/inet/hosts.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Содержимое /etc/inet/ipnodes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@myhost.domain.com # cat /etc/inet/ipnodes&lt;br /&gt;#&lt;br /&gt;# Internet host table&lt;br /&gt;#&lt;br /&gt;::1 localhost&lt;br /&gt;127.0.0.1 localhost&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;555.555.555.555&lt;/strong&gt;&lt;/span&gt; myhost.domain.com loghost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ошибка возникала из-за того, что IP адрес хоста был прописан неправильно в /etc/inet/ipnodes:&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;555.555.555.555&lt;/strong&gt;&lt;/span&gt; myhost.domain.com loghost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь хост определяется правильно:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oas@myhost $ ping -a myhost&lt;br /&gt;myhost (&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;333.333.333.333&lt;/span&gt;&lt;/strong&gt;) is alive&lt;br /&gt;oas@myhost $ ping -a myhost.domain.com&lt;br /&gt;myhost.domain.com (&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;333.333.333.333&lt;/span&gt;&lt;/strong&gt;) is alive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;После исправления этой ошибки, деисталлировала Oracle Suite 10g и установила заново. Инсталляция прошла успешно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2831778636458638156?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2831778636458638156/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2831778636458638156' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2831778636458638156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2831778636458638156'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/soa-suite-10g.html' title='Ошибка при установке SOA Suite 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1924870091304628646</id><published>2008-04-17T06:11:00.000-07:00</published><updated>2008-04-28T11:39:59.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Manager Database Control 10g'/><title type='text'>Удаление репозитария Enterprise Manager Database Control</title><content type='html'>При удалении Enterprise Manager Database Control repository с помощью команды&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;emca -deconfig dbcontrol db -repos drop&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;процесс может зависнуть на неопреленное время:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;oracle@myhost$ emca -deconfig dbcontrol db -repos drop&lt;br /&gt;&lt;br /&gt;STARTED EMCA at Apr 17, 2008 5:08:41 PM&lt;br /&gt;EM Configuration Assistant, Version 10.2.0.1.0 Production&lt;br /&gt;Copyright (c) 2003, 2005, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Enter the following information:&lt;br /&gt;Database SID: TESTDB&lt;br /&gt;Listener port number: 1521&lt;br /&gt;Password for SYS user:&lt;br /&gt;Password for SYSMAN user:&lt;br /&gt;&lt;br /&gt;Do you wish to continue? [yes(Y)/no(N)]: Y&lt;br /&gt;Apr 17, 2008 5:08:53 PM oracle.sysman.emcp.EMConfig perform&lt;br /&gt;INFO: This operation is being logged at /zones/u01/app/oracle/product/10.2.0/cfgtoollogs/emca/TESTDB/emca_2008-04-17_05-08-41-PM.log.&lt;br /&gt;Apr 17, 2008 5:08:54 PM oracle.sysman.emcp.util.DBControlUtil stopOMS&lt;br /&gt;INFO: Stopping Database Control (this may take a while) ...&lt;br /&gt;Apr 17, 2008 5:08:59 PM oracle.sysman.emcp.EMReposConfig dropRepository&lt;br /&gt;INFO: Dropping the EM repository (this may take a while) ...&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Одной из причин, может быть то, что у пользователя SYSMAN есть &lt;strong&gt;активные сессии &lt;/strong&gt;в базе данных. Вырезка из документации:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"While installing Enterprise Manager using existing database, Oracle Management Service configuration hangs while dropping the repository. This is due to active SYSMAN sessions connected to the database.&lt;br /&gt;&lt;br /&gt;To resolve this issue, shutdown any existing Enterprise Manager sessions (both Grid Control and Database Control) or other SQLPLUS SYSMAN sessions."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Также, следует удалить файлы с расширением &lt;strong&gt;*.lck&lt;/strong&gt; в директориях $ORACLE_HOME/cfgtoollogs/emca и $ORACLE_HOME/cfgtoollogs/emca/$ORACLE_SID.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1924870091304628646?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1924870091304628646/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1924870091304628646' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1924870091304628646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1924870091304628646'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/enterprise-manager-database-control.html' title='Удаление репозитария Enterprise Manager Database Control'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4591340032557976208</id><published>2008-04-16T08:42:00.000-07:00</published><updated>2008-04-28T11:40:32.018-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Suite 10g'/><title type='text'>Установка Oracle Application Server 10g</title><content type='html'>Установить Oracle Application Server 10g можно по следующим шагам:&lt;br /&gt;1) Загрузить и установить базу данных 10.2.0&lt;br /&gt;2) Загрузить дистрибутивы Oracle Application Server 10g&lt;br /&gt;2) Загрузить SOA схемы в созданную базу данных&lt;br /&gt;3) Установить Oracle Application Server 10g&lt;br /&gt;&lt;br /&gt;Подробней:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1)&lt;/strong&gt; База данных будет использоваться для хранилища данных. Ее можно установить под тем же пользователем, можно и под другим, а можно и на отдельном сервере создать.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2)&lt;/strong&gt; Загрузить дистрибутивы в зависимости от платформы и разархивировать:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;cpio -idmv знак_меньше soa_Solaris_101310_disk1.cpio&lt;br /&gt;cpio -idmv знак_меньше soa_Solaris_101310_disk2.cpio&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3)&lt;/strong&gt; Схемы SOA: &lt;strong&gt;ORABPEL, ORAESB, ORAWSM&lt;/strong&gt;. Их можно загрузить с помощью скрипта &lt;strong&gt;irca.sh&lt;/strong&gt;.&lt;br /&gt;Скрипт является частью дистрибутива Oracle Application Server 10g и лежит в папке Disk1/install/soa_schemas/irca&lt;br /&gt;irca - Integration Repository Creation Assistance&lt;br /&gt;&lt;br /&gt;&lt;em&gt;oracle@myhost$ sh irca.sh &lt;br /&gt;Integration Repository Creation Assistant (IRCA) 10.1.3.1.0&lt;br /&gt;(c) Copyright 2006 Oracle Corporation. All rights reserved.&lt;br /&gt;&lt;br /&gt;Enter database "host port serviceName" [localhost 1521 orcl]: myhost 1521 OASDB&lt;br /&gt;Enter sys password:  &lt;br /&gt;Running IRCA for all product(s):&lt;br /&gt; connection="myhost 1521 OASDB", , orabpelUser=ORABPEL, esbUser=ORAESB, orawsmUser=ORAWSM&lt;br /&gt;&lt;br /&gt;Validating database ...&lt;br /&gt;Validating database character set ...&lt;br /&gt;WARNING: The target database character set is CL8ISO8859P5&lt;br /&gt;For multi-byte support, the AL32UTF8 character set is recommended.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Running prerequisite checks for ORABPEL ...&lt;br /&gt;Enter password for ORABPEL:  &lt;br /&gt;Loading ORABPEL schema (this may take a few minutes) ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Running prerequisite checks for ORAESB ...&lt;br /&gt;Enter password for ORAESB:  &lt;br /&gt;Loading ORAESB schema (this may take a few minutes) ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Running prerequisite checks for ORAWSM ...&lt;br /&gt;Enter password for ORAWSM:  &lt;br /&gt;Loading ORAWSM schema (this may take a few minutes) ...&lt;br /&gt;&lt;br /&gt;INFO: ORABPEL schema contains 225 valid objects.&lt;br /&gt;&lt;br /&gt;INFO: ORAESB schema contains 180 valid objects.&lt;br /&gt;&lt;br /&gt;INFO: ORAWSM schema contains 90 valid objects.&lt;br /&gt;&lt;br /&gt;IRCA completed.&lt;br /&gt;Please check for any ERROR message above and also check the log file &lt;br /&gt;/var/tmp//irca2008-04-16_07-41-45PM.log for any error or other information.&lt;br /&gt;&lt;br /&gt;oracle@myhost$ &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4)&lt;/strong&gt; Установка сервера приложений:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;./runInstaller&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Я выбрала тип установки Advanced, чтоб самой выбрать опции установки.&lt;br /&gt;&lt;br /&gt;Укажите параметры базы данных, которую вы создали:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_jN6fOA1pqaw/SAYnHRYZXrI/AAAAAAAAABU/6L17quw-xH0/s1600-h/oas1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_jN6fOA1pqaw/SAYnHRYZXrI/AAAAAAAAABU/6L17quw-xH0/s320/oas1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189878626469371570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Укажите пароли для схем &lt;strong&gt;ORABPEL, ORAESB, ORAWSM&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYn_xYZXsI/AAAAAAAAABc/Djm9Ct81F6c/s1600-h/oas2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYn_xYZXsI/AAAAAAAAABc/Djm9Ct81F6c/s320/oas2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189879597131980482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующий шаг:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_jN6fOA1pqaw/SAYoTRYZXtI/AAAAAAAAABk/43YyCv2RPkM/s1600-h/oas3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_jN6fOA1pqaw/SAYoTRYZXtI/AAAAAAAAABk/43YyCv2RPkM/s320/oas3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189879932139429586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующий:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYojxYZXuI/AAAAAAAAABs/b1XOfRgF5Ew/s1600-h/oas4.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYojxYZXuI/AAAAAAAAABs/b1XOfRgF5Ew/s320/oas4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189880215607271138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующий...&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_jN6fOA1pqaw/SAYo5BYZXvI/AAAAAAAAAB0/nJ_VDMR1XRM/s1600-h/oas5.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_jN6fOA1pqaw/SAYo5BYZXvI/AAAAAAAAAB0/nJ_VDMR1XRM/s320/oas5.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189880580679491314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И наконец:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYpExYZXwI/AAAAAAAAAB8/JXjvqZpJqBs/s1600-h/oas6.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_jN6fOA1pqaw/SAYpExYZXwI/AAAAAAAAAB8/JXjvqZpJqBs/s320/oas6.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189880782542954242" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4591340032557976208?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4591340032557976208/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4591340032557976208' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4591340032557976208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4591340032557976208'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/oracle-application-server-10g.html' title='Установка Oracle Application Server 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jN6fOA1pqaw/SAYnHRYZXrI/AAAAAAAAABU/6L17quw-xH0/s72-c/oas1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8391352090049852310</id><published>2008-04-16T07:42:00.000-07:00</published><updated>2008-04-28T11:40:51.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Ошибка после установки патча 10.2.0.3</title><content type='html'>После апгрейда 10.2.0.1 до 10.2.0.3, база не поднялась с такой ошибкой:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;ORA-00202: control file: '/zones/u01/app/oracle/oradata/OASDB/control01.ctl'&lt;br /&gt;ORA-27037: unable to obtain file status&lt;br /&gt;SVR4 Error: 25: Inappropriate ioctl for device&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Платформа: Solaris 10. Вырезка из металинка:&lt;br /&gt;"The 10.2.0.3 patchset code changes attempted to use directio() calls in a manner not supported by the filesystem.&lt;br /&gt;&lt;br /&gt;This issue affects VxFS filesystems which are typically managed by Veritas or Solstice.  This issue may also affect QFS filesystems and SAM-FS filesystems.  It is not known to affect UFS filesystems even if they are managed by Veritas or Solstice."&lt;br /&gt;&lt;br /&gt;Решение: установка пачта 5752399.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8391352090049852310?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8391352090049852310/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8391352090049852310' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8391352090049852310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8391352090049852310'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/10203-solaris-10.html' title='Ошибка после установки патча 10.2.0.3'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3052145230269823401</id><published>2008-04-05T03:39:00.000-07:00</published><updated>2008-04-17T06:28:37.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Block Change Tracking в Oracle 10g</title><content type='html'>Новая опция block change tracking в Oracle 10g позволяет отслеживать измененные блоки, чтобы при инкрементальном бэкапе через RMAN, не нужно было сканировать весь датафайл, чтоб отыскать измененные блоки, тем самым уменьшая время выполнения инкрементального бэкапа.&lt;br /&gt;&lt;br /&gt;Чтобы включить эту опцию нужно выполнить следующую команду:&lt;br /&gt;&lt;em&gt;alter database enable block change tracking using file '/u01/app/oracle/admin/TESTDB/rman/block_change.log';&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Это команда запустит новый background process CTRW (Change Tracking Writer), который будет логировать блоки, измененные с момента последнего бэкапа, в файл block_change.log.&lt;br /&gt;&lt;br /&gt;Далее, можно увидеть статус отслеживания измененных блоков:&lt;br /&gt;&lt;em&gt;select * from v$block_change_tracking;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;Выключение опции:&lt;br /&gt;&lt;em&gt;alter database disable block change tracking;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3052145230269823401?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3052145230269823401/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3052145230269823401' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3052145230269823401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3052145230269823401'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/block-change-tracking-oracle-10g.html' title='Block Change Tracking в Oracle 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2829822254571713019</id><published>2008-04-04T07:07:00.000-07:00</published><updated>2008-05-20T23:43:34.586-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iSQL*Plus'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Подключение к iSQL*Plus как SYSDBA или SYSOPER в Oracle 10g</title><content type='html'>О подключении к iSQL*Plus как SYSDBA или SYSOPER в Oracle 9i можно почитать &lt;a href="http://ragivetova.blogspot.com/2008/05/isqlplus-sysdba-sysoper-oracle-9i.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;На &lt;span style="font-family:courier new;"&gt;http://hostname:5560/isqlplus&lt;/span&gt; невозможен доступ под SYSDBA или SYSOPER, если даже в Connect Identifier допишите "as sysdba" после названия базы данных:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ERROR - ORA-28009: connection as SYS should be as SYSDBA or SYSOPER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Чтобы подключиться к iSQL*Plus как SYSDBA или SYSOPER, нужно воспользоваться ссылкой &lt;span style="font-family:courier new;"&gt;http://hostname:5560/isqlplus/dba&lt;/span&gt;.&lt;br /&gt;По умолчанию, доступ к этому URL закрыт, а при попытке попасть получите сообщение:&lt;br /&gt;&lt;br /&gt;"Для входа на сервер по адресу iSQL*Plus DBA нужны имя пользователя и пароль. ..."&lt;br /&gt;&lt;br /&gt;Для того, чтобы разрешить пользователю подключаться URL к iSQL*Plus DBA, нужно с помощью утилиты JAZN (Java AuthoriZatioN):&lt;br /&gt;&lt;br /&gt;1) Создать пользователя для iSQL*Plus DBA URL&lt;br /&gt;2) Назначить ему роль webDba&lt;br /&gt;3) Выйти из jazn и при необходимости перегрузить iSQL*Plus.&lt;br /&gt;&lt;br /&gt;Запуск утилиты jazn:&lt;pre&gt;&lt;span style="color:#000000;"&gt;D:\&gt;set ORACLE_HOME=D:\oracle\product\10.2.0&lt;br /&gt;&lt;br /&gt;D:\&gt;set JAVA_HOME=%ORACLE_HOME%\jdk&lt;br /&gt;&lt;br /&gt;D:\&gt;cd %ORACLE_HOME%\oc4j\j2ee\isqlplus\application-deployments\isqlplus&lt;br /&gt;&lt;br /&gt;D:\oracle\product\10.2.0\oc4j\j2ee\isqlplus\application-deployments\isqlplus&gt;%JAVA_HOME%\bin\java -Djava.security.properties=%ORACLE_HOME%\oc4j\j2ee\home\config\jazn.security.props -jar %ORACLE_HOME%\oc4j\j2ee\home\jazn.jar -user "iSQL*Plus DBA\admin" -password welcome -shell&lt;br /&gt;&lt;br /&gt;JAZN:&gt;&lt;/span&gt;&lt;/pre&gt;В unix среде команды аналогичные, только нужно заменить % на $, set на export, и слэши.&lt;pre&gt;&lt;span style="color:#000000;"&gt;JAZN:&gt; adduser "iSQL*Plus DBA" urldba urlpasswd&lt;br /&gt;JAZN:&gt;&lt;br /&gt;JAZN:&gt; listusers&lt;br /&gt;iSQL*Plus DBA/admin&lt;br /&gt;iSQL*Plus DBA/urldba&lt;br /&gt;JAZN:&gt;&lt;br /&gt;JAZN:&gt; grantrole webDba "iSQL*Plus DBA" urldba&lt;br /&gt;JAZN:&gt; exit&lt;/span&gt;&lt;/pre&gt;Тепер, при входе в &lt;span style="font-family:courier new;"&gt;http://hostname:5560/isqlplus/dba&lt;/span&gt; можно ввести логин (urladmin) и пароль пользователя (urlpasswd) и попасть в iSQL*Plus DBA URL, где есть возможность подключиться к базе данных как SYSDBA и SYSOPER.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2829822254571713019?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2829822254571713019/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2829822254571713019' title='Комментарии: 18'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2829822254571713019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2829822254571713019'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/isqlplus-sysdba-sysoper.html' title='Подключение к iSQL*Plus как SYSDBA или SYSOPER в Oracle 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-4255738420100903204</id><published>2008-04-02T00:21:00.000-07:00</published><updated>2008-04-17T06:30:16.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><title type='text'>Autoallocate vs. Uniform</title><content type='html'>Сегодня в очередной раз столкнулась с дилеммой: какие табличные пространства создавать для продуктивной базы данных (OLTP, объем около 1тб) - uniform или autoallocate?&lt;br /&gt;&lt;br /&gt;Смысл uniform в том, что экстенты выделяются одного размера. Например, если мы создаем табличное пространство: &lt;br /&gt;&lt;br /&gt;&lt;em&gt;CREATE TABLESPACE "LARGE_DATA" DATAFILE&lt;br /&gt;'/kazcare/u01/oradata/KAZCARE/large_data${ORACLE_SID}01.dbf' SIZE 1024M&lt;br /&gt;AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED&lt;br /&gt;EXTENT MANAGEMENT LOCAL &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;UNIFORM SIZE 16M&lt;/strong&gt;&lt;/span&gt; SEGMENT SPACE MANAGEMENT AUTO;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Экстенты таблицы, которая будет создана в этом табличном пространстве, будут одинакового размера - 16M.&lt;br /&gt;&lt;br /&gt;А таблицы, созданные в следующем табличном пространстве будут автоматически регулироваться и размер каждого последующего экстента будет увеличиваться от 64K до 64M по мере роста сегмента.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;CREATE TABLESPACE "ANY_DATA" DATAFILE&lt;br /&gt;'/u01/oradata/TESTDB/any_data01.dbf' SIZE 1024M&lt;br /&gt;AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED&lt;br /&gt;EXTENT MANAGEMENT LOCAL &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;AUTOALLOCATE&lt;/strong&gt;&lt;/span&gt; SEGMENT SPACE MANAGEMENT AUTO; &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Металинк:&lt;br /&gt;&lt;br /&gt;"If the tablespace is expected to contain objects of varying sizes requiring&lt;br /&gt;different extent sizes and having many extents, then AUTOALLOCATE is the best&lt;br /&gt;choice."&lt;br /&gt;&lt;br /&gt;"On the other hand, if you want exact control over unused space, and you can&lt;br /&gt;predict exactly the space to be allocated for an object or objects and the&lt;br /&gt;number and size of extents, then UNIFORM is a good choice."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-4255738420100903204?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/4255738420100903204/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=4255738420100903204' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4255738420100903204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/4255738420100903204'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/autoallocate-vs-uniform.html' title='Autoallocate vs. Uniform'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-5903207013215214290</id><published>2008-04-01T06:35:00.000-07:00</published><updated>2008-04-17T06:55:24.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Приколы'/><title type='text'>1 Апреля</title><content type='html'>&lt;object id="A7220853342225371136" quality="high" data="http://llnw.jibjab.com/content/player.swf?content_url=http://www.jibjab.com/sendables/api/remote/6MQWRv0HFO80mKx4HjSQn2sf.xml" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" height="369" width="435"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="movie" value="http://llnw.jibjab.com/content/player.swf"&gt;&lt;/param&gt;&lt;param name="scaleMode" value="showAll"&gt;&lt;/param&gt;&lt;param name="quality" value="high"&gt;&lt;/param&gt;&lt;param name="allowNetworking" value="all"&gt;&lt;/param&gt;&lt;param name="FlashVars" value="content_url=http://www.jibjab.com/sendables/api/remote/6MQWRv0HFO80mKx4HjSQn2sf.xml"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="never"&gt;&lt;/param&gt;&lt;/object&gt;&lt;div style="text-align:center; width:435px; margin-top:6px;"&gt;Don't send a lame &lt;a href="http://www.jibjab.com/sendables/category/69/st_pattys"&gt;St. Patrick's Day eCard&lt;/a&gt;. Try &lt;a href="http://www.jibjab.com/sendables"&gt;JibJab Sendables&lt;/a&gt;!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-5903207013215214290?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/5903207013215214290/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=5903207013215214290' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5903207013215214290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/5903207013215214290'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/04/blog-post.html' title='1 Апреля'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-6465388921595852145</id><published>2008-03-24T13:10:00.000-07:00</published><updated>2008-04-17T06:33:04.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enhancement Request'/><title type='text'>Создание Enhancement Request (Запрос на Улучшение)</title><content type='html'>Если вы считаете, что в продуктах Oracle не хватает функциональности, которая была бы очень полезна, то можете завести Enhancement Request через Metalink. Не факт, что каждый созданный Enhancement Request будет вообще принят, и если даже будет принят, Oracle не обещает, что оно появиться в следующей версии продукта.&lt;br /&gt;Это из металинка Note:214168.1:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Customers can only file enhancement requests from MetaLink. &lt;br /&gt;&lt;br /&gt;Please be aware that not all Enhancement Requests will be approved. The most common reason why an Enhancement is refused is because it is not in line with Oracle’s future product direction. ...&lt;br /&gt;For Enhancement Requests that are approved for future releases, there is no guarantee that the Enhancement will take place in any specific release."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Как завести Запрос на Улучшение?&lt;br /&gt;Логинитесь в Metalink, переходите в Service Request. Дальше нажимаете на Create SR, в появившемся окне указываете информацию о продукте в Product Description, а в блоке Problem Summary выбираете в Type of Problem -&gt; Product Enhancement Request и описываете свои пожелания.&lt;br /&gt;&lt;br /&gt;Например такой запрос на улучшение: &lt;br /&gt;"Почему бы Ораклу не сделать возможным переименование пользователя одной командой?"&lt;br /&gt;Один из моих моих хороших знакомых ДБА написал скрипт, который бы переименовал пользователя путём апдейта системных таблиц. Я сама скрипт еще не видела, но безопасно ли таким образом переименовывать пользователя в продуктивной базе данных?&lt;br /&gt;Именно по этому вопросу уже существует Enhancement Request под номером 158508, но так как есть workaround к нему, Oracle считает, что пользователи пока могут и так обойтись:&lt;br /&gt;Это из Note:14013.1:&lt;br /&gt;&lt;em&gt;    Can you rename a user through Oracle?&lt;br /&gt;    Enhancement Request 158508.&lt;br /&gt;    Common workaround(s):&lt;br /&gt;    a - Do a user-level export of user A.&lt;br /&gt;        create new user B.&lt;br /&gt;        import dba/dba_passwd fromuser=A touser=B&lt;br /&gt;        drop user A.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Но например такой Enhancement Request (тоже из Note:14013.1):&lt;br /&gt;&lt;em&gt;    Can you rename a tablespace?&lt;br /&gt;    Enhancement Request 148742.&lt;br /&gt;    Common workaround(s):&lt;br /&gt;    a - Export all of the objects from the tablespace.&lt;br /&gt;        Drop the tablespace including contents.&lt;br /&gt;        Recreate the tablespace.&lt;br /&gt;        Import the objects back in.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Наверно благодаря этому Enhancement Request возможность переименовать табличное пространство появилась в версии 10g:&lt;br /&gt;&lt;em&gt;ALTER TABLESPACE &amp;lt;oldname&amp;gt; RENAME TO &amp;lt;newname&amp;gt;;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Как вы считаете, какой функциональности не хватает в RDBMS Oracle?&lt;br /&gt;Кстати, я перевела "Enhancement Request" как "Запрос на Улучшение"? Если у кого-то есть идеи получше, напишите о них.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-6465388921595852145?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/6465388921595852145/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=6465388921595852145' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6465388921595852145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/6465388921595852145'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/enhancement-request.html' title='Создание Enhancement Request (Запрос на Улучшение)'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-844949361071219215</id><published>2008-03-24T08:16:00.000-07:00</published><updated>2008-04-28T11:41:17.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 9i'/><title type='text'>Создание standby с помощью rman</title><content type='html'>Поднятие standby из бэкапа с помощью rman имеет ряд преимуществ:&lt;br /&gt;1) не нужно останавливать основную базу&lt;br /&gt;2) не повлияет на производительность основной базы данных&lt;br /&gt;&lt;br /&gt;Здесь я опишу главные моменты, где идет отличие от ручного поднятия standby. Предполагается, что настройка параметров инициализации для основной и резеврной БД, и другие моменты, уже знакомы. &lt;br /&gt;&lt;br /&gt;И так, если еще нет полного бэкапа основной БД, то нужно ее забэкапить:&lt;br /&gt;&lt;em&gt;rman target / catalog rman/mypassword@RMCAT&lt;br /&gt;RUN {&lt;br /&gt;ALLOCATE CHANNEL ch1 TYPE 'SBT_TAPE';&lt;br /&gt;CROSSCHECK ARCHIVELOG ALL;&lt;br /&gt;BACKUP&lt;br /&gt;    INCREMENTAL LEVEL=0&lt;br /&gt;    FILESPERSET 5 FORMAT 'bk_%s_%p_%t' &lt;br /&gt;    DATABASE include current controlfile for standby;&lt;br /&gt;BACKUP FORMAT 'al_%s_%p_%t' ARCHIVELOG ALL DELETE INPUT;&lt;br /&gt;RELEASE CHANNEL ch1;&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Дальше, на резервном сервере, после поднятия резервной БД в nomount:&lt;br /&gt;&lt;em&gt;rman&lt;br /&gt;connect catalog rman/password@CATDB&lt;br /&gt;connect target sys/"mypassword"@mydb&lt;br /&gt;connect auxiliary /&lt;br /&gt;run{&lt;br /&gt;ALLOCATE AUXILIARY CHANNEL c1 TYPE 'SBT_TAPE' parms="ENV=(NB_ORA_CLIENT=primary_host, NB_ORA_SERV=backupsrv)";&lt;br /&gt;duplicate target database for standby dorecover NOFILENAMECHECK;&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Здесь список ошибок, которые могут возникнуть, и их решения:&lt;br /&gt;Ошибка №1:&lt;br /&gt;RMAN-00571: ===========================================================&lt;br /&gt;RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============&lt;br /&gt;RMAN-00571: ===========================================================&lt;br /&gt;RMAN-03009: failure of allocate command on c1 channel at 03/24/2008 19:59:18&lt;br /&gt;ORA-19554: error allocating device, device type: SBT_TAPE, device name: &lt;br /&gt;ORA-27211: Failed to load Media Management Library&lt;br /&gt;Additional information: 2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Это из документации Oracle:&lt;br /&gt;&lt;em&gt;"The most important line of the error output is the ORA-27211 error. It indicates the basic problem, that the media management library could not be loaded. ......By default, the database expects to find the media management library at $ORACLE_HOME/lib/libobk.so on UNIX, or %ORACLE_HOME%/bin/orasbt.dll on NT."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Решение от Виталия Воронцова, Oracle DBA и продвинутого пользователя по Netbackup:&lt;br /&gt;слинковать библиотеку Netbackupа&lt;br /&gt;&lt;em&gt;oracle@myhost$ ./usr/openv/netbackup/bin/oracle_link&lt;br /&gt;Mon Mar 24 20:09:47 UZT 2008&lt;br /&gt;All Oracle instances should be shutdown before running this script.&lt;br /&gt;Please log into the Unix system as the Oracle owner for running this script&lt;br /&gt;Do you want to continue? (y/n) [n] y&lt;br /&gt;LIBOBK path: /usr/openv/netbackup/bin&lt;br /&gt;ORACLE_HOME: /u01/app/oracle/product/9.2.0.7.0&lt;br /&gt;Oracle version: 9.2.0.7.0&lt;br /&gt;Linking LIBOBK:&lt;br /&gt;ln -s /usr/openv/netbackup/bin/libobk.so64.1 /u01/app/oracle/product/9.2.0.7.0/lib/libobk.so&lt;br /&gt;Done&lt;br /&gt;Please check the trace file located in /tmp/make_trace.6960 &lt;br /&gt;to make sure the linking process was successful.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Ошибка №2:&lt;br /&gt;RMAN-00571: ===========================================================&lt;br /&gt;RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============&lt;br /&gt;RMAN-00571: ===========================================================&lt;br /&gt;RMAN-03002: failure of Duplicate Db command at 03/25/2008 17:49:18&lt;br /&gt;RMAN-03015: error occurred in stored script Memory Script&lt;br /&gt;ORA-19507: failed to retrieve sequential file, handle="bk_15539_1_650240673", parms=""&lt;br /&gt;ORA-27029: skgfrtrv: sbtrestore returned error&lt;br /&gt;ORA-19511: Error received from media manager layer, error text:&lt;br /&gt;   Failed to process backup file &lt;bk_15539_1_650240673&gt;&lt;br /&gt;&lt;br /&gt;Это из документации Veritas NetBackup 6 for Oracle: System Administrator's Guide:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Ensure that the NetBackup server is configured to allow a redirected restore. The administrator can remove restrictions for all clients by creating the following file on the Netbackup master server:&lt;br /&gt;/usr/openv/netbackup/db/altnames/No.Restrictions&lt;br /&gt;Or, to restrict clients to restore only from certain other clients, create the following file:&lt;br /&gt;/usr/openv/netbackup/db/altnames/client_name&lt;br /&gt;Where client_name is the name of the client allowed to do the redirected restore (the destination client). Then, add the name of the NetBackup for Oracle source client to that file."&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-844949361071219215?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/844949361071219215/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=844949361071219215' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/844949361071219215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/844949361071219215'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/standby-rman.html' title='Создание standby с помощью rman'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-290380778555393974</id><published>2008-03-21T16:00:00.000-07:00</published><updated>2008-04-28T11:41:47.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Suite 10g'/><title type='text'>Установка OAS 10g на Windows Vista</title><content type='html'>Установка Oracle Application Server 10g на Windows Vista завершилась безуспешно:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Starting Oracle Universal Installer...&lt;br /&gt;&lt;br /&gt;Checking installer requirements...&lt;br /&gt;&lt;br /&gt;Checking operating system version: must be  5.0, 5.1 or 5.2 .    Actual 6.0&lt;br /&gt;                                      Failed &lt;&lt;&lt;&lt;&lt;br /&gt;&lt;br /&gt;Exiting Oracle Universal Installer, log for this session can be found at C:\User&lt;br /&gt;s\Raku\AppData\Local\Temp\OraInstall2008-03-22_02-00-54AM\installActions2008-03-&lt;br /&gt;22_02-00-54AM.log&lt;br /&gt;&lt;br /&gt;Please press Enter to exit...&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Жаль, что OAS10g не поддерживается в Windows Vista. Конечно можно обойти это, добавив в файле oraparam 6.0: Windows=5.0,5.1,5.2,6.0, но не факт, что будет работать без неприятных сюрпризов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-290380778555393974?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/290380778555393974/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=290380778555393974' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/290380778555393974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/290380778555393974'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/oas-10g-windows-vista.html' title='Установка OAS 10g на Windows Vista'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2050803893969486524</id><published>2008-03-21T06:17:00.001-07:00</published><updated>2008-03-21T06:17:29.196-07:00</updated><title type='text'>Временный останов передачи архивных логов на standby</title><content type='html'>останов:&lt;br /&gt;alter system set log_archive_dest_state_?='defer' scope=both; &lt;br /&gt;&lt;br /&gt;возобновление:&lt;br /&gt;alter system set log_archive_dest_state_?='enable' scope=both;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2050803893969486524?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2050803893969486524/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2050803893969486524' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2050803893969486524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2050803893969486524'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/standby.html' title='Временный останов передачи архивных логов на standby'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-1361418540205195916</id><published>2008-03-19T03:50:00.000-07:00</published><updated>2008-04-17T06:58:07.933-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>ORA-01630</title><content type='html'>ORA-01630: max # extents (505) reached in temp segment in tablespace TEMP2 &lt;br /&gt;&lt;br /&gt;Решение:&lt;br /&gt;ALTER TABLESPACE SYSTEM default storage (MAXEXTENTS UNLIMITED);&lt;br /&gt;либо пересоздать temporary tablespace - locally managed tablespace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-1361418540205195916?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/1361418540205195916/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=1361418540205195916' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1361418540205195916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/1361418540205195916'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/ora-01630.html' title='ORA-01630'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-3020813046882834187</id><published>2008-03-13T07:57:00.000-07:00</published><updated>2009-06-02T01:16:29.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ошибки и их устранение'/><title type='text'>Проблемы с listener ORA-12535: TNS:operation timed out в Oracle 9i</title><content type='html'>Одной из причин таких ошибок в часы пик может быть то, что листенер всего-навсего не успевает обработать поступающие запросы на подключение.&lt;br /&gt;Например, когда одновременно запускаются очень много клиентских джобов, которые все в один момент обрушиваются на листенер, листенер успевает обработать только первые поступившие запросы, а остальные падают с ошибкой ORA-12535. &lt;br /&gt;&lt;br /&gt;Для борьбы с ними можно попробовать следующие варианты:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) Параметр INBOUND_CONNECT_TIMEOUT&lt;/strong&gt;&lt;br&gt;Можно попробовать установить параметр в файле listener.ora: INBOUND_CONNECT_TIMEOUT_&lt;listener_name&gt; = 600&lt;br /&gt;Этот параметр задает кол-во секунд, в течение которых должна быть завершена обработка запроса клиента. Если за указанное время листенер не успевает обработать запрос клиента на подключение, он выдает ошибку ORA-12535 и обрывает соединение с клиентом.&lt;br /&gt;Это аналог параметра CONNECT_TIMEOUT, который является устаревшим в версии 9i.&lt;br /&gt;&lt;br /&gt;Еще можно попробовать в файле sqlnet.ora добавить параметр:&lt;br /&gt;SQLNET.INBOUND_CONNECT_TIMEOUT = 700&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Параметр QUEUESIZE&lt;/strong&gt;С помощью этого параметра можно установить кол-во запросов, которые может обрабатывать листенер одновременно.&lt;br /&gt;&lt;br /&gt;LISTENER_TESTDB =&lt;br /&gt;  (ADDRESS_LIST =&lt;br /&gt;    (ADDRESS = (PROTOCOL = TCP)(Host = myhost)(Port = 2483)(QUEUESIZE=200))&lt;br /&gt;  )&lt;br /&gt;SID_LIST_LISTENER_TESTDB =&lt;br /&gt;  (SID_LIST =&lt;br /&gt;    (SID_DESC =&lt;br /&gt;      (GLOBAL_DBNAME = TESTDB)&lt;br /&gt;      (ORACLE_HOME = /testdb/u01/app/oracle/product/9.2.0.8.0)&lt;br /&gt;      (SID_NAME = TESTDB)&lt;br /&gt;    )&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Поднятие дополнительных листенеров&lt;/strong&gt;&lt;br /&gt;Установка параметров INBOUND_CONNECT_TIMEOUT и QUEUESIZE  не всегда может помочь, так как листенер работает с той же скоростью, а те запросы, которые ожидают подключения к базе, всего-навсего будут дольше удерживаться, пока не рассосется очередь. Но если очередь все-таки не рассосется за указанное время, клиенты опять упадут с ошибкой ORA-12535. &lt;br /&gt;&lt;br /&gt;Чтоб решить проблему с производительностью раз и навсегда можно поднять дополнительные листенеры и настроить tns на стороне клиента, чтоб, если не отвечает первый листенер, запрос шел на второй, третий листенеры.&lt;br /&gt;&lt;br /&gt;И так, на сервере поднимаем 2 листенера на 2 разных портах 2483 и 2484. &lt;br /&gt;В файле listener.ora прописываем:&lt;br /&gt;&lt;br /&gt;LISTENER_TESTDB =&lt;br /&gt;  (ADDRESS_LIST =&lt;br /&gt;    (ADDRESS = (PROTOCOL = TCP)(Host = myhost)(Port = 2484))&lt;br /&gt;  )&lt;br /&gt;SID_LIST_LISTENER_TESTDB =&lt;br /&gt;  (SID_LIST =&lt;br /&gt;    (SID_DESC =&lt;br /&gt;      (GLOBAL_DBNAME = TESTDB)&lt;br /&gt;      (ORACLE_HOME = /testdb/u01/app/oracle/product/9.2.0.8.0)&lt;br /&gt;      (SID_NAME = TESTDB)&lt;br /&gt;    )&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;LISTENER_TESTDB2 =&lt;br /&gt;  (ADDRESS_LIST =&lt;br /&gt;    (ADDRESS = (PROTOCOL = TCP)(Host = myhost)(Port = 2483))&lt;br /&gt;  )&lt;br /&gt;SID_LIST_LISTENER_TESTDB2 =&lt;br /&gt;  (SID_LIST =&lt;br /&gt;    (SID_DESC =&lt;br /&gt;      (GLOBAL_DBNAME = TESTDB2)&lt;br /&gt;      (ORACLE_HOME = /testdb/u01/app/oracle/product/9.2.0.8.0)&lt;br /&gt;      (SID_NAME = TESTDB2)&lt;br /&gt;    )&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Запускаем листенеры:&lt;br /&gt;oracle@myhost  $ lsnrctl&lt;br /&gt;LSNRCTL&gt; start LISTENER_TESTDB&lt;br /&gt;LSNRCTL&gt; start LISTENER_TESTDB2&lt;br /&gt;&lt;br /&gt;Теперь нужно на стороне клиента прописать в tnsnames.ora: &lt;br /&gt;TESTDB =&lt;br /&gt;  (DESCRIPTION =&lt;br /&gt;    (ADDRESS_LIST =&lt;br /&gt;      (FAILOVER = ON) &lt;br /&gt;      (LOAD_BALANCE = ON)  &lt;br /&gt;      (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 2483))&lt;br /&gt;      (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 2484))    &lt;br /&gt;    )&lt;br /&gt;    (CONNECT_DATA = (SERVICE_NAME = TESTDB))&lt;br /&gt;  )&lt;br /&gt;Теперь можно в $ORACLE_HOME/network/log посмотреть размеры лог файлов каждого листенера. Они будут расти по мере обработки запросов на подключение.&lt;br /&gt;&lt;br /&gt;oracle@myhost  $ ls -la *.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-3020813046882834187?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/3020813046882834187/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=3020813046882834187' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3020813046882834187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/3020813046882834187'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2008/03/listener-ora-12535-tnsoperation-timed.html' title='Проблемы с listener ORA-12535: TNS:operation timed out в Oracle 9i'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-7846767931626688008</id><published>2007-12-11T07:53:00.000-08:00</published><updated>2008-04-17T06:55:09.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Приколы'/><title type='text'>Про лягушку</title><content type='html'>В Тридевятом царстве, в тридесятом государстве жила-была прекрасная, независимая, самостоятельная и умная принцесса. Вот однажды сидела она на берегу живописного пруда в зеленой долине близ своего замка, размышляла о смысле жизни и вдруг увидала лягушку. Лягушка прыгнула ей на колени и сказала: &lt;br /&gt;&lt;br /&gt;"Милая, добрая девушка. Когда-то я был прекрасным принцем, но злая колдунья заколдовала меня, превратив в лягушку.Если ты меня поцелуешь, я снова превращусь в принца, и тогда, моя прелесть, я поселюсь в твоем замке, а ты будешь готовить мне еду, чистить моего коня, стирать мою одежду, растить моих детей и радоваться, что я взял тебя в жены."&lt;br /&gt;&lt;br /&gt;Тем же вечером, легко поужинав лягушачьими лапками Принцесса снова сидела на берегу живописного пруда и размышляла о смысле жизни и была счастлива.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-7846767931626688008?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/7846767931626688008/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=7846767931626688008' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7846767931626688008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/7846767931626688008'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/12/blog-post.html' title='Про лягушку'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8840654795937390302</id><published>2007-11-22T04:11:00.000-08:00</published><updated>2008-04-17T06:58:22.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Database 10g'/><title type='text'>Роль CONNECT в 10g</title><content type='html'>Только сегодня заметила, что в 10g роль CONNECT лишили всех системных привилегий, оставили только CREATE SESSION. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/appendixa.htm"&gt;...beginning in Oracle Database 10g Release 2 (10.2), the CONNECT role has only the CREATE SESSION privilege, all other privileges are removed.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Объясняют это тем, что:&lt;br /&gt;"Making this change enables new and existing database customers to enforce good security practices more easily."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8840654795937390302?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8840654795937390302/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8840654795937390302' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8840654795937390302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8840654795937390302'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/11/connect-10g.html' title='Роль CONNECT в 10g'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-230232492108256131</id><published>2007-11-16T02:53:00.000-08:00</published><updated>2008-04-28T12:07:20.063-07:00</updated><title type='text'>Oracle Critical Patch Update</title><content type='html'>Critical Patch Update выпускается Ораклом каждый квартал в виде патчей для устранения &lt;strong&gt;критических багов и уязвимостей&lt;/strong&gt;.&lt;br /&gt;Раньше были security alerts, но теперь только critical patch update.&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/deploy/security/alerts.htm"&gt;http://www.oracle.com/technology/deploy/security/alerts.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Последний CPU был в выпущен в октябре.&lt;br /&gt;Кто-нибудь ставил их на Oracle Database 10g?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-230232492108256131?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/230232492108256131/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=230232492108256131' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/230232492108256131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/230232492108256131'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/11/oracle-critical-patch-update.html' title='Oracle Critical Patch Update'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-2900817571682950472</id><published>2007-11-16T01:12:00.000-08:00</published><updated>2008-04-17T06:58:39.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Сертификация'/><title type='text'>1Z0-033</title><content type='html'>сдала экзамен, все ок, теперь жду письма с моим сертификатам от Оракла:)&lt;br /&gt;Кстати, не забудьте заполнить Hands-on Course Requirement Form - для того, чтобы Оракл подтвердил, что вы прослушали один обязательный курс. Без него, письма придется ждать бесконечно долго.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-2900817571682950472?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/2900817571682950472/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=2900817571682950472' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2900817571682950472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/2900817571682950472'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/11/1z0-033_16.html' title='1Z0-033'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8491567067728977579</id><published>2007-11-09T07:46:00.000-08:00</published><updated>2008-04-24T03:35:24.199-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Сертификация'/><title type='text'>1Z0-033</title><content type='html'>Говорят, экзамен 1Z0-033 - самый сложный из трэка OCP 9i. Посмотрим...&lt;br /&gt;Вопросы по тюнингу Oracle Shared Server не вдохновляют. Если честно, ни в одной компании не видела shared server в продуктиве.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8491567067728977579?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8491567067728977579/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8491567067728977579' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8491567067728977579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8491567067728977579'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/11/1z0-033.html' title='1Z0-033'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-8590616099354575066</id><published>2007-06-22T05:15:00.000-07:00</published><updated>2008-04-28T11:44:02.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris и Oracle'/><title type='text'>как заменить ^M в юниксе</title><content type='html'>Виндузовый перевод строки в юниксе будет выглядеть как ^M.&lt;br /&gt;Чтобы удалить их, откройте файл в vi и наберите следующую команду:&lt;br /&gt;&lt;br /&gt;:%s/^M$//g &lt;br /&gt;&lt;br /&gt;Для того, чтобы набрать ^M нужно нажать CTRL-V CTRL-M.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-8590616099354575066?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/8590616099354575066/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=8590616099354575066' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8590616099354575066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/8590616099354575066'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2007/06/m.html' title='как заменить ^M в юниксе'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30095010.post-115097565403024484</id><published>2006-06-22T04:22:00.000-07:00</published><updated>2008-04-28T11:56:32.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris и Oracle'/><title type='text'>checking sqlplus connection succeeded</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;#!/usr/bin/bash&lt;br /&gt;INICIO=$(sqlplus -s user/password@dbname&amp;lt;&amp;lt; END awk '{printf $1}')&lt;br /&gt;&lt;br /&gt;if [ -z ${INICIO} ]&lt;br /&gt;then&lt;br /&gt;echo "connected";&lt;br /&gt;else&lt;br /&gt;echo "not connected";&lt;br /&gt;fi&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30095010-115097565403024484?l=ragivetova.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ragivetova.blogspot.com/feeds/115097565403024484/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30095010&amp;postID=115097565403024484' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/115097565403024484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30095010/posts/default/115097565403024484'/><link rel='alternate' type='text/html' href='http://ragivetova.blogspot.com/2006/06/checking-if-oracle-is-up.html' title='checking sqlplus connection succeeded'/><author><name>Агиветова Рахат</name><uri>http://www.blogger.com/profile/13326907390601524037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
