Показаны сообщения с ярлыком pending. Показать все сообщения
Показаны сообщения с ярлыком pending. Показать все сообщения

1 июня 2012 г.

bash tips&tricks

1. Повторить команду, выполненную ранее (!!).

$ date
Fri Jun  1 09:33:49 EEST 2012
$ !!
date
Fri Jun  1 09:33:51 EEST 2012


15 марта 2012 г.

oracle: манипуляции с PERFSTAT

oracle: statspack

Перенести схему PERFSTAT в другое табличное пространство. 
Освободить место в существующем  табличном пространстве.
Експорт/импорт схемы PERFSTAT.

-- создать tablespace куда хотим перенести
CREATE TABLESPACE perfstat_tbs datafile '/u01/ORADATA/PERFSTAT/perfstat_01.dbf'
SIZE 5000m autoextend ON;


-- останавливаем job сбора статистики (выполняется от владельца джоба)
-- обязательно нужен commit
SELECT *
FROM   user_jobs;

EXEC dbms_job.broken(jobno, TRUE);
COMMIT;


-- Сохраним на всякий случай сам джоб из какого нить девелопера
DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
  ( job       => X
   ,what      => 'statspack.snap;'
   ,next_date => TO_DATE('01.01.4000 00:00:00','dd/mm/yyyy hh24:mi:ss')
   ,INTERVAL  => 'trunc(SYSDATE+1/24,'HH')'
   ,no_parse  => FALSE
   ,instance  => 1
  );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
COMMIT;
END;
/


-- экспорт схемы
cd /backup_vol/oracle_backup
export NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
exp perfstat@orcl FILE=perfstat_15_03_2012.dmp LOG=perfstat_15_03_2012.LOG owner=PERFSTAT

-- импорт схемы
Сохраняем скрипт создания юзера PERFSTAT со всеми грантами и прочим из какого нить девелопера в файл скажем perfstata_schema.sql

Будет что вроде приведённого ниже куска, если переносим в другой tablespace, то при импорте меняем DEFAULT TABLESPACE PERFSTAT_TBS в оператре CREATE USER PERFSTAT на тот tablespace, в который хотим его перенести, ну и не забыть создать сам tablespace.

CREATE USER PERFSTAT
  IDENTIFIED BY VALUES 'xxxxxxxxxxxxxx'
  DEFAULT TABLESPACE PERFSTAT_TBS
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;
....

-- удаляем полностью PERFSTAT, чтобы удалить все данные в схеме
DROP USER PERFSTAT CASCADE;

-- создаём схему PERFSTAT, которую предварительно сохранили в perfstata_schema.sql

-- импорт
export NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
imp perfstat@orcl file=perfstat_12_05_2011.dmp log=imp_perfstat_12_05_2011.log fromuser=PERFSTAT touser=PERFSTAT

-- проверяем индексы
SELECT index_name,status FROM dba_indexes WHERE owner='PERFSTAT';

-- проверяем джоб
SELECT * FROM user_jobs;

9 мая 2011 г.

oracle: Таблицы

Типы таблиц


Heap organized tables - обычные таблицы (heap - куча), данные хранятся в неупорядоченном виде.

Index organized tables (IOT) - данные хранятся в упорядоченном виде, отсортированы по первичному ключу.

27 апреля 2011 г.

oracle: Consistent gets and Current gets

1. CONSISTENT(согласованный на какой то момент)
блок запрашивается в режиме consistent - если его нет в буфере
- блок считывается с диска (physical reads++), помещается в буфер
- выбирается из буфера, при необходимости к нему применеются undo (consistent gets++)

2.  CURRENT(текущая версия блока, используется когда DML операция изменяет данные)
блок запрашивается в режиме CURRENT - если его нет в буфере
- блок считывается с диска (physical reads++), помещается в буфер
- вытаскивается в режиме CURRENT (db block gets++)

3. процесс считывает блоки минуя буфер - physical reads direct
- physical reads ++

20 апреля 2011 г.

oracle: блокировки (locks), защёлки (latches), enqueues

Блокировки 
Типы блокировок
Где хранится информация о блокировках? ITL, INITRANS, MAXTRANS 
Выполнение блокировок с помощью защелок 

Принципы блокирования в СУБД Oracle. 


Разница между блокировками и защёлками.

Защелка (latch) – устанавливается, если кто-то работает с определенным участком памяти, и, как следствие, никто другой теперь в этот участок не попадет.

Блокировка – никого не допускает к строкам таблицы, если Вы меняете ее.

Блокировка реализуется с помощью защёлки 
Мы работаем с записью. Она уже находится в буфере в SGA. Запись эту нужно заблокировать, чтобы никакая другая сессия не заблокировала ее.

Наш серверный процесс вешает защелку на буфер с записью, читает буфер, находит нужную запись, ставит отметочку о том, что эта запись заблокирована нами. Таким образом, блокировка создана. Снимаем защелку. Работаем с записью.

Все прочие сессии, пока защелка закрыла буфер, ждали ее снятия. Как только защелка снята, очередной процесс устанавливает защелку на этот буфер, читает, находит запись, обнаруживает нашу блокировку, снимает свою защелку и ждет, когда мы снимем блокировку.



Типы блокировок

0 - none
1 - null (NULL)
2 - row-S (SS) разделяемая блокировка строки (RS) при выполнении select for update;
3 - row-X (SX) монопольная блокировка строки (RX) при выполнении операторов insert, delete, update;
4 - share (S) разделяемая блокировка таблицы share mode, генерируется, например, оператором lock table <…> in share mode;
5 - S/Row-X (SSX) (разделяемая блокировка таблицы и монопольная блокировка строк share row exclusive; генерируется, например, оператором lock table <…..> in share row exclusive mode;
6 - exclusive (X) монопольная блокировка ( X) при выполнении lock table.

Режимы  4 - share (S) и 5 - S/Row-X (SSX) встречаются крайне редко.



Блокировки DML


TX - блокировка транзакций
устанавливается при выполнении следующих операторов insert, delete, update, select for update. Блокировки транзакций работают только в режиме (lmode) - 6 exclusive (X) монопольная блокировка. Блокировки транзакций всегда осуществляются на уровне строк: блокируется строка и предотвращается изменение строки другими транзакциями до тех пор, пока не буде выполнен откат текущей транзакции или транзакция не будет зафиксирована. Чтобы была установлена блокировка TX, сначала устанавливается блокировка TM для таблицы в режиме 3 (RX). Затем устанавливается блокировка TX в режиме 6 (X). Блокировка TX не будет установлена, если другая транзакция установила блокировку TX на эту же строку.

TM - блокировки очерёдности DML
применяются, если в транзакции выдается один из операторов insert, delete, update, select for update, lock table. Таблицы блокируются ораклом, чтобы зарезервировать доступ к таблице и предотвратить конкуренцию между операторами DDL за таблицу. Проще говоря, блокировка таблиц (TM) позволяет быть уверенным, что структура таблицы не изменится при изменении её содержимого.

Блокировки TM могут быть в следующих режимах (lmode) : 3- row exclusive монопольная блокировка строки (RX) при выполнении операторов insert, delete, update; 2- row share разделяемая блокировка строки (RS) при выполнении select for update; 6 – exclusive монопольная блокировка ( X) при выполнении lock table. 

На рисунке показаны режимы блокировки таблиц и операции, которые эти блокировки разрешают и запрещают

Следующий рисунок показывает, что будет если один процесс держит блокировку, а второй пытается её получить на один и тот же ресурс:



Блокировки DDL 

21 марта 2011 г.

17 марта 2011 г.

oracle: backup/restore

Restore means to retrieve individual datafiles from backup and store
the files on disk.
Recover means to apply the redo logs to make the database
consistent.

9 марта 2011 г.

oracle: DBMS_MONITOR

нужно разобраться с этим пакетом как нить
Например, DBMS_MONITOR.SESSION_TRACE_ENABLE включает трассировку сессии

17 февраля 2011 г.

oracle: flashback table

Откатить таблицу на какой нибудь момент времени

oracle: узнать включен ли flashback

!!! нужно разобраться

1. Используем SCN:

flashback table t to scn :scn;

Выскочила ошибка: ORA-08189: cannot flashback the table because row movement is not enabled

Нужно сделать

alter table t enable row movement;

и после

flashback table t to scn :scn;

Выдало ошибку: ORA-30055: NULL snapshot expression not allowed here

Но когда указал конкретный SCN, не через переменную, то получилось

flashback table t to scn 528407;