-- Включение/отключение автоматического управления файлами на резервном сервере:
ALTER SYSTEM STANDBY_FILE_MANAGEMENT = AUTO;
ALTER SYSTEM STANDBY_FILE_MANAGEMENT = MANUAL;
-- Команда ручного добавления файла данных на резервном сервере:
alter database create datafile 'UNNAMED00012' as '/oradata/users02.dbf';
-- Включение режима принудительного переключения журналов повтора:
alter system set archive_lag_target=900;
-- Включение режима принудительного журналирования:
ALTER DATABASE FORCE LOGGING;
вторник, 16 декабря 2008 г.
среда, 1 октября 2008 г.
Просмотр плана выполнения SQL запроса по его HASH_VALUE
--
-- Просмотр плана выполнения SQL запроса по его HASH_VALUE:
--
select hash_value,
child_number,
lpad(' ',2*depth)||operation||' '||options||decode(id, 0, substr(optimizer,1,6)||' Cost='||to_char(cost)) operation,
object_name object,
cost,
cardinality,
round(bytes / 1024) kbytesfrom,
id,
depth,
access_predicates,
filter_predicates
from v$sql_plan
where hash_value = &SQL_HASH_VALUE
order by hash_value, child_number, id;
-- Просмотр плана выполнения SQL запроса по его HASH_VALUE:
--
select hash_value,
child_number,
lpad(' ',2*depth)||operation||' '||options||decode(id, 0, substr(optimizer,1,6)||' Cost='||to_char(cost)) operation,
object_name object,
cost,
cardinality,
round(bytes / 1024) kbytesfrom,
id,
depth,
access_predicates,
filter_predicates
from v$sql_plan
where hash_value = &SQL_HASH_VALUE
order by hash_value, child_number, id;
воскресенье, 28 сентября 2008 г.
Создание резервного сервера для кластерной СУБД
- Subject: RMAN: RAC Backup and Recovery using RMAN
- Subject: Step By Step Guide To Create Physical Standby Database Using RMAN
Резервирование открытой базы данных Oracle
Резервирование открытой базы данных Oracle производится с режиме ARCHIVELOG, путем перевода табличного пространства в режим резервирования.
Команды смены состояния табличных пространств:
alter tablespace begin backup;
-- !cp -p
alter tablespace end backup;
В скриптах обратить внимание на спецсимвол $ - т.к. в unix системах командный интерпретатор пытается обработать знак $.
Еще с чем пришлось столкнуться - так это зарезервированные слова в СУБД Oracle. Например, название табличного пространства DEFAULT - зарезервированное слово. Желательно названия табличных пространств указывать в двойных кавычках.
Некоторые команды диагностики:
--PROD
select * from v$backup;
select name, status, fuzzy from V$DATAFILE_HEADER;
select * from v$backup where status = 'ACTIVE';
-- Подробная информация по состоянию резервного копирования:
SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status,b.Change#,b.time
FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b
WHERE d.TS#=t.TS#
AND b.FILE#=d.FILE#
-- STBY
select file#, FUZZY from V$DATAFILE_HEADER;
-- Упомининие случаев на "Metalink":
Bug 1158714 - V$Datafile_Header.Fuzzy Field Only Reflects Hot Backup Fuzziness
Note 90220.1 - How to determine the Status of files ALTER TABLESPACE BEGIN BACKUP
Команды смены состояния табличных пространств:
alter tablespace
-- !cp -p
alter tablespace
В скриптах обратить внимание на спецсимвол $ - т.к. в unix системах командный интерпретатор пытается обработать знак $.
Еще с чем пришлось столкнуться - так это зарезервированные слова в СУБД Oracle. Например, название табличного пространства DEFAULT - зарезервированное слово. Желательно названия табличных пространств указывать в двойных кавычках.
Некоторые команды диагностики:
--PROD
select * from v$backup;
select name, status, fuzzy from V$DATAFILE_HEADER;
select * from v$backup where status = 'ACTIVE';
-- Подробная информация по состоянию резервного копирования:
SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status,b.Change#,b.time
FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b
WHERE d.TS#=t.TS#
AND b.FILE#=d.FILE#
-- STBY
select file#, FUZZY from V$DATAFILE_HEADER;
-- Упомининие случаев на "Metalink":
Bug 1158714 - V$Datafile_Header.Fuzzy Field Only Reflects Hot Backup Fuzziness
Note 90220.1 - How to determine the Status of files ALTER TABLESPACE BEGIN BACKUP
четверг, 18 сентября 2008 г.
PLSQL заметки
CREATE OR REPLACE PROCEDURE loaderrata (xmlfile VARCHAR2)
-- Demonstration of use of Xpath syntax to extract specific values
-- from the infoset and move them into an Oracle table.
Статья в Oracle Magazine
-- Demonstration of use of Xpath syntax to extract specific values
-- from the infoset and move them into an Oracle table.
Статья в Oracle Magazine
вторник, 9 сентября 2008 г.
Включение режима архивирования
alter system set log_archive_dest_1='LOCATION=/u01/oradata/arch_logs_01/loans/ MANDATORY' scope=spfile;
alter system set log_archive_dest_2='LOCATION=/u01/oradata/arch_logs_02/loans/ OPTIONAL' scope=spfile;
alter system set log_archive_format='loans_%t_%s_%r.arc' scope=spfile;
alter system set archive_lag_target=900 scope=spfile;
-- Включение режима архивирования:
shutdown immediate
startup mount
alter database archivelog;
alter database open;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system set log_archive_dest_2='LOCATION=/u01/oradata/arch_logs_02/loans/ OPTIONAL' scope=spfile;
alter system set log_archive_format='loans_%t_%s_%r.arc' scope=spfile;
alter system set archive_lag_target=900 scope=spfile;
-- Включение режима архивирования:
shutdown immediate
startup mount
alter database archivelog;
alter database open;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
четверг, 28 августа 2008 г.
среда, 27 августа 2008 г.
Трассировка в Oracle
Расмотрены вопросы использования трассировки в Oracle.
Дополнительно:
http://oradba.com.ru/tuning/optimizer/tips/t2_sqltrace.shtml
Пример:
grant alter session to;
-- On:
begin
execute immediate 'alter session set max_dump_file_size = UNLIMITED';
execute immediate 'alter session set tracefile_identifier=TRACE_LABEL';
execute immediate 'alter session set events=''10046 trace name context forever,level 12''';
end;
/
-- Select:
select * from dual;
-- Off:
begin
execute immediate 'alter session set events=''10046 trace name context off''';
end;
/
Еще один пример:
-- Включение:
begin
dbms_system.set_bool_param_in_session(129,9871,'timed_statistics',true);
dbms_system.set_int_param_in_session(129,9871,'max_dump_file_size',2147483647);
dbms_system.set_ev(129,9871,10046,12,'');
end;
/
-- Выключение:
begin
--dbms_system.set_bool_param_in_session(129,9871,'timed_statistics',true);
--dbms_system.set_int_param_in_session(129,9871,'max_dump_file_size',2147483647);
dbms_system.set_ev(129,9871,10046,0,'');
end;
/
Дополнительно:
http://oradba.com.ru/tuning/optimizer/tips/t2_sqltrace.shtml
Пример:
grant alter session to
-- On:
begin
execute immediate 'alter session set max_dump_file_size = UNLIMITED';
execute immediate 'alter session set tracefile_identifier=TRACE_LABEL';
execute immediate 'alter session set events=''10046 trace name context forever,level 12''';
end;
/
-- Select:
select * from dual;
-- Off:
begin
execute immediate 'alter session set events=''10046 trace name context off''';
end;
/
Еще один пример:
-- Включение:
begin
dbms_system.set_bool_param_in_session(129,9871,'timed_statistics',true);
dbms_system.set_int_param_in_session(129,9871,'max_dump_file_size',2147483647);
dbms_system.set_ev(129,9871,10046,12,'');
end;
/
-- Выключение:
begin
--dbms_system.set_bool_param_in_session(129,9871,'timed_statistics',true);
--dbms_system.set_int_param_in_session(129,9871,'max_dump_file_size',2147483647);
dbms_system.set_ev(129,9871,10046,0,'');
end;
/
среда, 13 августа 2008 г.
System Stats strategy
В оригинальной статье рассмотриваются вопросы калибровки стоимости чтения при индексном доступе и при многоблочном чтении - полном сканировании таблицы.
При значениях, получаемых по умолчанию в Oracle 10g - оказывается что полное сканирование таблицы с 30 млн. строк дешевле чем индексный доспуп по первичному ключу.
Для операционной системы SOLARIS можно попробовать "пузомерку" для определения истинных значений характеристик IO (исключая буферизирующее чтение и прочие кэши)
FileBench
Для этих же целей можно использовать Oracle утилиту Orion.
Также рассматриваются настройки параметров в случае сбора системной статистики
optimizer_index_cost_adj
optimizer_index_caching
При значениях, получаемых по умолчанию в Oracle 10g - оказывается что полное сканирование таблицы с 30 млн. строк дешевле чем индексный доспуп по первичному ключу.
Для операционной системы SOLARIS можно попробовать "пузомерку" для определения истинных значений характеристик IO (исключая буферизирующее чтение и прочие кэши)
FileBench
Для этих же целей можно использовать Oracle утилиту Orion.
Также рассматриваются настройки параметров в случае сбора системной статистики
optimizer_index_cost_adj
optimizer_index_caching
вторник, 12 августа 2008 г.
Выполнение настроек сессии - after_logon_trigger
create or replace trigger bkw$_after_logon_on_database after logon on database declare -- Target parameters: l_tracefile_id varchar(100); l_event varchar(100); l_target_username varchar(100); l_targer_ip_address varchar(100); -- Current Parameters: l_cur_username varchar(100); l_cur_ip_address varchar(100); begin -- -- Setup Target parameters: -- l_tracefile_id := 'BKW_TRACE_001'; l_event := '10046 trace name context forever,level 12'; l_target_username := ''; l_targer_ip_address := ''; -- -- Read current parameters From Syscontext: -- -- Username: select sys_context('USERENV','SESSION_USER') into l_cur_username from dual; -- Client IP: select sys_context('USERENV','IP_ADDRESS') into l_cur_ip_address from dual; -- -- Check Conditions: -- if (l_cur_username=l_target_username) and (l_cur_ip_address=l_targer_ip_address) then execute immediate 'alter session set max_dump_file_size = UNLIMITED'; execute immediate 'alter session set tracefile_identifier='||l_tracefile_id; execute immediate 'alter session set events=''||l_event||'''; end if; exception when others then null; end; /
понедельник, 11 августа 2008 г.
Oracle Events
Diagnostic events
10046
Трассировка sql запросов.
Источник
10053
Отладка стоимостного оптимизатора (optimizer debug event)
Источник
10195
Отключение генерации транзитивных предикатов
Что-то в инете
10046
Трассировка sql запросов.
Источник
10053
Отладка стоимостного оптимизатора (optimizer debug event)
Источник
10195
Отключение генерации транзитивных предикатов
Что-то в инете
Настройка производительности приложения
Общая методика настройки приложения в среде Oracle 10g заключается в последовательном выполнении серии мероприятий. На первой стадии настраиваются общие параметры экземпляра СУБД.
Необходимо выбрать значение параметра optimizer_mode на уровне экземпляра СУБД. Что позволит перейти к дальнейшим настройкам на следующих уровнях.
Выбор значения параметра optimizer_mode зависит от специфики приложения. Для транзакционных систем - "OLTP систем" установите значение в FIRST_ROWS, а для гибридных и аналитических "OLAP систем" - рекомендуется ALL_ROWS, что является значением по умолчанию. Существуют и другие значения параметра, но они в контексте СУБД Oracle версии 10g менее "привлекательны" - речь идет о значении параметра optimizer_mode=CHOOSE, т.к. оптимизатор по правилам в редакции СУБД ORACLE начиная с версии 10g не поддерживается.
На примере одной Автоматизированной Банковской Системы (АБС) - пробовались следующие значения параметра optimizer_mode: ALL_ROWS, FIRST_ROWS и CHOOSE.
После миграции на версию СУБД Oracle 10g sql запросы АБС сменили планы выполнения. Часть sql запросов показали сравнительно лучшую производительность по сравнению с предыдущими версиями СУБД Oracle (8i) - однако получить положительный отклик от пользователей АБС не представляется возможным. Другая часть sql запросов кардинально не изменила своих временных характеристик.
А вот с чем придется столкнуться, так это подмножество SQL запросов - которое стало выполняться значительно медленнее.
Продолжение следует...
Статья не закончена...
Необходимо выбрать значение параметра optimizer_mode на уровне экземпляра СУБД. Что позволит перейти к дальнейшим настройкам на следующих уровнях.
Выбор значения параметра optimizer_mode зависит от специфики приложения. Для транзакционных систем - "OLTP систем" установите значение в FIRST_ROWS, а для гибридных и аналитических "OLAP систем" - рекомендуется ALL_ROWS, что является значением по умолчанию. Существуют и другие значения параметра, но они в контексте СУБД Oracle версии 10g менее "привлекательны" - речь идет о значении параметра optimizer_mode=CHOOSE, т.к. оптимизатор по правилам в редакции СУБД ORACLE начиная с версии 10g не поддерживается.
На примере одной Автоматизированной Банковской Системы (АБС) - пробовались следующие значения параметра optimizer_mode: ALL_ROWS, FIRST_ROWS и CHOOSE.
После миграции на версию СУБД Oracle 10g sql запросы АБС сменили планы выполнения. Часть sql запросов показали сравнительно лучшую производительность по сравнению с предыдущими версиями СУБД Oracle (8i) - однако получить положительный отклик от пользователей АБС не представляется возможным. Другая часть sql запросов кардинально не изменила своих временных характеристик.
А вот с чем придется столкнуться, так это подмножество SQL запросов - которое стало выполняться значительно медленнее.
Продолжение следует...
Статья не закончена...
Подписаться на:
Сообщения (Atom)