Feed on
Posts
Comments

Category Archive for 'Oracle'

За да възпроизведа проблемите, описани в статията; както и за да тествам евентуалните решения, драснах набързо един тестова пакет. Има си кусури - примерно не се държи правилно ако config таблицата е празна - но за решение “набързо” се получи добре. Всъщност толкова добре, че реших да го сложа тук, да не го загубя :)

(Aко ти е интересно, чети нататък…)

Read Full Post »

UPDATE GLOBAL INDEXES

Отдавна не съм споделял oracle-related приключения. Пусти мързел…

Днес ще разкажа за следната случка. На всеки час едно приложение “замръзва” за няколко секунди. Всъщност идентифицирането на причините отне доста усилия. Видимите симптоми се появяват на ниво application server. Ровихме из настройките там, ровихме из мрежата, ОС, базите…

На края успяхме да идентифицираме следната зависимост: това приложение (покрай другите неща) използва и една супер натоварена таблица. Информацията в тази таблица се пази няколко часа, след това се изтрива; за това пък за тези няколко часа се натрупват доста данни - гигабайти. Операциите са предимно Insert и Select. Таблицата е разделена на partitions по часове, като на всеки час един job минава и затрива данните от най-стария partition с

alter table ... truncate partition ... UPDATE GLOBAL INDEXES

Това UPDATE GLOBAL INDEXES се налага, защото първичния ключ на таблицата има глобален индекс. Това е така, защото на partitioned таблици, уникалния индекс или трябва да е глобален, или да съдържа partition key колоните (логично).

Оказа се, обаче, че в тази схема има голям проблем. Странното “замръзване” на приложението съвпада точно с времето, когато се стартира този този TRUNCATE job.

(Aко ти е интересно, чети нататък…)

Read Full Post »

dba_hist_tbspc_space_usage

Много полезно, за всички, които си пазят AWR snapshots за по-дълъг период от време. От тази таблица може да се изкара trend за нарастването на базата. Примерно по месеци изглеждат така:

select tsu.snap_id, to_char(sn.mon, 'Mon.YYYY'), round(sum(tsu.tablespace_size * nvl(ts.blocksize, p.value))/1024/1024/1024, 2) GB_size
  from dba_hist_tbspc_space_usage tsu,
       sys.ts$ ts,
       v$parameter p,
       (select trunc(begin_interval_time, ‘MONTH’) Mon, min(snap_id) snap_id
          from dba_hist_snapshot
         group by trunc(begin_interval_time, ‘MONTH’)) sn
 where p.name = ‘db_block_size’
   and tsu.tablespace_id = ts.ts#(+)
   and sn.snap_id = tsu.snap_id
 group by tsu.snap_id, sn.mon
 order by 1

Този SQL идва с няколко забележки:
- малко ми е тъпо размера на tablespace да се пази в блокове, а не байтове. Отне ми известно време да схвана какви са числата. Документацията не помага много :)
- ако в миналото е имало tablespace, който в последствие е drop-нат, се приема, че е бил с default-ния block size. Аз, лично не намерих друг начин
- още нещо леко тъпо: v$tablespace няма изведена колонка blocksize, докато dba_tablespaces няма ts#. Заради тази… хм… неконсистентност в поведението, предпочетох да използвам директно sys.ts$. На който не му харесва това, може да си ги join-не по tablespace_name

Read Full Post »

DG Switchover мотичка

Напоследък съм влюбен в DataGuard Broker. Страшно полезен инструмент! Е, има си своите странности, все пак…

Днес тествах switcover при конфигурация от една primary, един physical и един logical standby. Предварително се подготвих с research на възможните бъгове и техните workarounds. За щастие сме на доста стабилна версия. Примерно една от грозните мотики е описана в note 761661.1. Абе убих си един ден ровене…

И все пак не бях съвсем изряден. Когато се засилих да прехвърлям, се случи следното:

(Aко ти е интересно, чети нататък…)

Read Full Post »

10.2.0.5 is out

Цък:

Забелязах, че вече има 10.2.0.5 за Linux x86 и Linux x86-64. Patchset 8202632.
Да ние честит новия пачсет!

Read Full Post »

DataGuard закачка

Записвам си да не забравя.

Проблем: боркера мрънка, че нещо не му е на кеф:

DGMGRL> show configuration

Configuration
  Name:                DG_DEV
  Enabled:             YES
  Protection Mode:     MaxPerformance
  Fast-Start Failover: DISABLED
  Databases:
    prim  - Primary database
    stb1 - Logical standby database
    stb2 - Physical standby database

Current status for “DG_DEV”:
Warning: ORA-16608: one or more databases have warnings

(Aко ти е интересно, чети нататък…)

Read Full Post »

Kyle Hailey

Един от основателите на OakTable Network. Работил в Oracle Kernel Development, минал през Oracle Gold Support в Париж, после през Quest, за да се завърне в Oracle като един от “мозъците”, измислили OEM. Един от евангелистите на wait interface-а като мощен инструмент за performance troubleshooting/tunning. От четеното за него подозирам, че той стои и зад много полезния, но рядко използван механизъм за Direct Memory Access в Grid Cоntrol-a. В момента работи за Embarcadero, но като лектор се включва с Performance-related сесии на семинарите на Hotsos, NoCOUG, RMOUG, NYOUG, Oracle World и Dbforum (защо не и на BGOUG, някой ден?).

Човека има какво да сподели. И ще го сподели, на живо, макар и виртуално, в края на март. Подозирам, че ще си струва.

Read Full Post »

Това ще влезе в категория quick checks. Предварително казвам, че (все още) не познавам добре системата, за която става дума.

Днес ми излезе интересен въпрос: една таблица има няколко десетки милиона реда, с данни от 8 години насам. Има колонка с дата, по която има индекс. Колонката няма хистограма. Когато пуснем заявката select count(1) from tab where date_col > sysdate-1, съвсем правилно, се изпозлва съответният индекс, т.е. не сме в тази скучна ситуация “Oracle не ми използва индекса”. Обаче се прави Index Fast Full Scan (wtf???), което естествено, дава незадоволителна производителност:

(Aко ти е интересно, чети нататък…)

Read Full Post »

Ако има някой не-чул/не-разбрал, да кажа и аз: пролетната сбирка на БГПО ще се случи в края на април (от 23 до 25 април 2010). И този път организаторите са успели да привлекат звезда от световна величина: самият Tom Kyte. Адски съм благодарен за усилията, които правят - не е лесно да се доведе такъв човек. И се надявам той да не им върже тенекия, както направи Anjo Kolk.

Всъщност с напредването на възрастта (пригответе големи подаръци за наближаващият ми юбилей, благодаря ;-) ), все повече оценявам нашите си “звезди” - примерно Юлиян Дончев. Owen Hughes също е почти местен с третото си идване, a и също е много добър лектор. Както и Пламен, когато реши да говори. Пък и всеки друг, решил да сподели опит или да покаже резултати от неговия research. (Иване, не се ослушвай)

Този път аз ще се включа с една по-нестандартна лекция. Мисля, че това, което съм подготвил, ще бъде интересно не само за DBA, а и за developers, sysadmins, даже и за IT-ориентирани мениджъри. За това пък съм се замислил (и дано да успея) за есенната сбирка да подготвя най-hard Oracle-database-related лекцията от всичко, което съм правил до сега. Ама това е в далечното несигурно бъдеще… Сега ще говоря за performance forecasting. Тази презентация си я подготвям от година и половина и се надявам, че се е получила добре.

Ще се видим там, нали?

Read Full Post »

Flash-free Metalink

Преди 2-3 месеца Oracle потопиха в море от скръб всички честни клиенти, като затвориха старата бърза и удобна версия на Metalink и оставиха само бъгавата неудобна и нелогична Flash версия. Ако е вярно това, че когато те псуват, те сърби най-задната част от тялото, сигурно всички в Oracle Support са подлудили личните си дерматолози. Думите са слаби да опиша само аз какво им мисля, да не говорим за сръбските DBA-и.

Но има искрица в тунела. Днес случайно попадах на HTML версия на омразния My Oracle Support. Освободена от всички тъпи “красоти” на flash версията (които може да са много cool, ама само до петото отваряне). Бърза, спретната, и съвсем легална. Enjoy!

Read Full Post »

Next »