Oracle DB administering

SCN и Oracle

Posted on

Converting Hexadecimal Oracle SCNs to Decimal Oracle serializes transactions and manages concurrency and recovery using an ever-increasing number called a system change number, or SCN. Usually, we see these numbers expressed in decimal, in places like the v$ views and the alert log. Occasionally, however, Oracle’s code expresses SCNs in hexadecimal. Unfortunately, you can’t just […]

Oracle DB administering

Таблицы x$ в Oracle

Posted on

Есть такие «магические» (по выражению Тома Кайта) таблицы. Все они содержат определенную информацию о буферном кеше. X$BH – содержит информацию о заголовках буферов (всех размеров) в кэш-буфере. X$KCBWBPD – информация о пулах ( V$BUFFER_POOL) X$KCBWDS – информация о WS (Working Sets) Можно построить цепочку: блок объекта (obj$) находится в буфере (X$BH) – буфер находится в […]

Oracle DB administering

Получение значений метрик из AWR

Posted on

select os.value, hss.begin_interval_time from DBA_HIST_OSSTAT os, dba_hist_snapshot hss where os.snap_id = hss.snap_id and os.stat_name = ‘LOAD’ — AVG_BUSY_TIME, AVG_USER_TIME, AVG_SYS_TIME, AVG_IOWAIT_TIME order by begin_interval_time select begin_time, value from DBA_HIST_SYSMETRIC_HISTORY where metric_name = ‘User Transaction Per Sec’ order by begin_time — User Transaction Per Sec — Physical Reads Per Sec — Physical Writes Per Sec — […]

Oracle DB administering

Top N текущих сессий

Posted on

Этот запрос взят отсюда: http://gorodovets.blogspot.com/2009/07/oracle-top-sql.html select sql_text, username, disk_reads_per_exec, buffer_gets_per_exec, buffer_gets, disk_reads, parse_calls, sorts, executions, loads, rows_processed, hit_ratio, first_load_time, sharable_mem, persistent_mem, runtime_mem, cpu_time_secs, cpu_time_secs_per_execute, elapsed_time_secs, elapsed_time_secs_per_execute, address, hash_value from (select sql_text, b.username, round ((a.disk_reads/decode(a.executions,0,1,a.executions)),2) disk_reads_per_exec, a.disk_reads, a.buffer_gets, round ((a.buffer_gets/decode(a.executions,0,1,a.executions)),2) buffer_gets_per_exec, a.parse_calls, a.sorts, a.executions, a.loads, a.rows_processed, 100 – round(100* a.disk_reads/greatest(a.buffer_gets,1),2) hit_ratio, a.first_load_time, sharable_mem, persistent_mem, runtime_mem, round(cpu_time […]

Oracle DB administering

Создание клона базы из физической копии

Posted on

Скопировать файлы данных (со стэндбая, например) чтобы остановить применение архивлогов: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL чтобы заново запустить применение архивлогов: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION 1. Определить новое окружение – ORACLE_SID (если нужно, еще ORACLE_BASE, ORACLE_HOME, PATH) 2. Сделать запрос на создание нового control file (на рабочем окружении): alter […]

Oracle DB programming

Анализ SGA на предмет неправильного использования bind переменных

Posted on

Можно использовать такой запрос select sql_text,address, hash_value, executions, loads, version_count, invalidations, parse_calls from v$sqlarea where version_count > 100; Но лучше следующий Ищем курсоры с несколькими версиями child_address: select address, count(child_address) from v$sql group by address having count(child_address) > 10 Берем оттуда sql и адрес Смотрим, почему разные child’ы: select * from V$SQL_BIND_METADATA where address in […]

Oracle DB administering

Настройка shared cursors

Posted on

http://psoug.org/reference/cursor_sharing.html http://www.orafaq.com/node/758 http://www.freelists.org/post/oracle-l/RE-shared-pool-latch,2 http://kerryosborne.oracle-guy.com/2008/09/flush-a-single-sql-statement/ http://orachat.com/oracle-library-cache-tuning-real-case-study/ AWR-Report In-Depth Analysis –total cursors open, by session select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic#  and s.sid=a.sid and b.name = ‘opened cursors current’; –total cursors open, by username & machine select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur, s.username, s.machine from v$sesstat […]

Oracle DB administering

DBMS_REDEFINITION: Последовательность действий при переопределении таблицы

Posted on

1. Проверяем, нет ли противопоказаний для переопределения таблицы BEGIN DBMS_REDEFINITION.CAN_REDEF_TABLE( uname => ‘MYUSER’, tname => ‘FILES’, options_flag => DBMS_REDEFINITION.CONS_USE_ROWID); END; 2. Создаем промежуточную таблицу по мотивам имеющейся таблицы, которую нужно переопределить, с новыми параметрами create table MYUSER.int_files tablespace tbs_new as select * from myuser.files where rownum = 0 Индексы и всякие констрейнты создавать не обязательно. Их […]

Oracle DB administering

Кодировка SqlPlus в Windows

Posted on

Чтобы пользоваться SqlPlus из-под Windows: set NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 chcp 1251 sqlplus В командном окне (Far) нужно поменять шрифт на Lucida Console NLS_LANG обычно приходится ставить, чтобы в скриптах нормально обрабатывались русские символы, а chcp позволяет понимать сообщения на русском, которые Oracle начинает выдавать после установки NLS_LANG.

Oracle DB administering

Oracle: обновление базы с использованием редакций

Posted on

Основной смысл заключается в том, чтобы пока все пользователи работают с текущей редакцией, создать новую редакцию на основе текущей, внести в нее необходимые изменения (пользователи этого не заметят), протестировать новую редакцию с изменениями и сделать ее текущей. Чтобы пользователи начали работать с новой редакцией они должны закрыть свои старые сессии и открыть новые, т.е. для […]