-- -- 1) alter index owner.index_name rebuild online; -- 2)kill session -- 3) ... -- -- Check Locks On online_index: select * from v$session where sid in (select session_id from dba_dml_locks where name = 'EVENTCOMMIT') -- Cleanup index: declare retval boolean; object_id binary_integer; wait_for_lock binary_integer; begin object_id := 71593; wait_for_lock := 0; retval := dbms_repair.online_index_clean (object_id, wait_for_lock); commit; dbms_output.put_line(retval); end;
понедельник, 7 декабря 2009 г.
Index online redefinition repair
Work with NFS on Linux
-- -- Work with NFS on Linux -- -- On NFS Server: chkconfig --list chkconfig --level 345 nfs on service nfs start vi /etc/exports /u05/oracle/backups replica(rw) service nfs reload -- On NFS Client: mount -t nfs aqua:/u05/oracle/backups /mnt/aqua_backups umount /mnt/aqua_backups vi /etc/fstab aqua:/u05/oracle/backups /mnt/aqua_backups nfs soft,bg 1 2 mount /mnt/aqua_backups
четверг, 27 августа 2009 г.
Установка и конфигурирование шлюза Oracle к SQL Server
Установка шлюза
Соблюдение требований к оборудованию и операционной системе (Certification Matrix for Open System Gateways).
Настройка переменных среды окружения
export DISPLAY=xxx.xxx.xxx.xxx:0.0
export ORACLE_BASE=/app/oracle
Шаги установщика Oracle Universal Installer:
Соблюдение требований к оборудованию и операционной системе (Certification Matrix for Open System Gateways).
Настройка переменных среды окружения
export DISPLAY=xxx.xxx.xxx.xxx:0.0
export ORACLE_BASE=/app/oracle
Шаги установщика Oracle Universal Installer:
Oracle Universal Installer: Welcome -> Next Oracle Universal Installer: Select a Product to Install -> Oracle Database Gateways 11.1.0.6 Oracle Universal Installer: Specify Home Details -> Name: OraGtw11g_home1 Path: /app/oracle/product/11.1.0/tg_1 Oracle Universal Installer: Available Product Components -> a. Select Oracle Database Gateway for SQL Server 11.1.0.6.0. b. Click Next. Oracle Universal Installer: Oracle Database Gateway for SQL Server -> SQL Server Database Server Host Name: testhost SQL Server Database Server Port number: 1344 SQL Server Instance Name: SQL Server Database Name: testdb Oracle Universal Installer: Summary -> Click Install. Oracle Net Configuration Assistant: Welcome -> Click Cancel. Oracle Net Configuration Assistant -> Click Yes. Error -> Click Ok. Oracle Universal Installer: Configuration Assistants -> Click Next. Execute Configuration Scripts -> (as root)# /app/oracle/product/11.1.0/tg_1/root.sh -> Then Click OK. Oracle Net Configuration Assistant: End of Installation -> Click Exit
понедельник, 24 августа 2009 г.
Блокировки Oracle (Dead locks)
Возвращает строки, когда блокировки присутствуют:
SELECT ' Blocking_user : ' || bs.username || chr(13)||chr(10)|| ' DB_user : ' || bs.username || chr(13)||chr(10)|| ' Waiting_user : ' || ws.username || chr(13)||chr(10)|| ' Blocking_SID : ' || bs.SID || chr(13)||chr(10)|| ' Blocking_Serial# : ' || bs.serial# || chr(13)||chr(10)|| ' Waiting_SID : ' || ws.SID || chr(13)||chr(10)|| ' Blocking_App : ' || bs.program || chr(13)||chr(10)|| ' Waiting_App : ' || ws.program || chr(13)||chr(10)|| ' Blocking_machine : ' || bs.machine || chr(13)||chr(10)|| ' Waiting_machine : ' || ws.machine || chr(13)||chr(10)|| ' Blocking_OS_user : ' || bs.osuser || chr(13)||chr(10)|| ' Waiting_OS_user : ' || ws.osuser || chr(13)||chr(10)|| ' lock_type : ' || DECODE ( wk.TYPE, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'USER Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL USER LOCK', 'DX', 'Distributed Xaction', 'CF', 'Control FILE', 'IS', 'Instance State', 'FS', 'FILE SET', 'IR', 'Instance Recovery', 'ST', 'Disk SPACE Transaction', 'TS', 'Temp Segment', 'IV', 'Library Cache Invalidation', 'LS', 'LOG START OR Switch', 'RW', 'ROW Wait', 'SQ', 'Sequence Number', 'TE', 'Extend TABLE', 'TT', 'Temp TABLE', wk.TYPE) || chr(13)||chr(10)|| ' Mode_held : ' || DECODE ( hk.lmode, 0, 'None', 1, 'NULL', 2, 'ROW-S (SS)', 3, 'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE', TO_CHAR (hk.lmode)) ||chr(13)||chr(10)|| ' Mode_req : ' || DECODE ( wk.request, 0, 'None', 1, 'NULL', 2, 'ROW-S (SS)', 3, 'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE', TO_CHAR (wk.request)) ||chr(13)||chr(10)|| ' Id1 : ' || TO_CHAR (hk.id1) || chr(13)||chr(10)|| ' Id2 : ' || TO_CHAR (hk.id2) FROM v$lock hk, v$session bs, v$lock wk, v$session ws WHERE hk.BLOCK = 1 AND hk.lmode != 0 AND hk.lmode != 1 AND wk.request != 0 AND wk.TYPE(+) = hk.TYPE AND wk.id1(+) = hk.id1 AND wk.id2(+) = hk.id2 AND hk.SID = bs.SID(+) AND wk.SID = ws.SID(+) ORDER BY 1;
четверг, 20 августа 2009 г.
Индексы требующие перестроения
declare v_Owner dba_indexes.owner%type; -- Setup Index Owner v_IdxName dba_indexes.index_name%type; -- Setup Index Name vOwner dba_indexes.owner%type; -- Index Owner vIdxName dba_indexes.index_name%type; -- Index Name vAnalyze varchar2(100); -- String of Analyze Stmt vCursor number; -- DBMS_SQL cursor vNumRows integer; -- DBMS_SQL return rows vHeight index_stats.height%type; -- Height of index tree vLfRows index_stats.lf_rows%type; -- Index Leaf Rows vDLfRows index_stats.del_lf_rows%type; -- Deleted Leaf Rows vDLfPerc number; -- Del lf Percentage vMaxHeight number; -- Max tree height vMaxDel number; -- Max del lf percentage cursor cGetIdx( pc_owner dba_indexes.owner%type, pc_index dba_indexes.owner%type ) is select owner,index_name from dba_indexes where owner = nvl(pc_owner, owner) and index_name = nvl(pc_index, index_name) and index_type='NORMAL' order by owner, index_name; begin -- Customize maximums: vMaxHeight := 3; vMaxDel := 20; -- Customize indexes: v_Owner := 'OWNER_NAME'; v_IdxName := 'INDEX_NAME'; -- Open Indexes Cursor: open cGetIdx(v_Owner, v_IdxName); -- For every index, validate structure: loop fetch cGetIdx into vOwner, vIdxName; exit when cGetIdx% notfound; -- Try Analyze Index: begin -- Open DBMS_SQL cursor: vCursor := dbms_sql.open_cursor; -- Set up dynamic string to validate structure: vAnalyze := 'analyze index ' || vOwner || '.' || vIdxName || ' validate structure'; dbms_sql.parse(vCursor, vAnalyze, dbms_sql.v7); vNumRows := dbms_sql.execute(vCursor); -- Close DBMS_SQL cursor: dbms_sql.close_cursor(vCursor); -- Does index need rebuilding? If so, then generate command select height, lf_rows, del_lf_rows into vHeight, vLfRows, vDLfRows from index_stats; -- Handle case where div by zero: if vDLfRows = 0 then vDLfPerc := 0; else vDLfPerc := trim((vDLfRows / vLfRows) * 100); end if; if (vDLfPerc > vMaxDel) then dbms_output.put_line( 'alter index ' || vOwner || '.' || vIdxName || ' rebuild online compute statistics;' || ' -- ' || to_char(vDLfPerc, '09') || '%' ); end if; exception when others then dbms_output.put_line( '-- ' || vOwner || '.' || vIdxName || ': ' || sqlerrm()); end; end loop; -- Close Indexes Cursor: close cGetIdx; end; /
среда, 15 апреля 2009 г.
Мониторинг отката транзакций
Иногда после принудительного прекращения массового обновления ощущается замедление работы СУБД.
Можно проверить наличие отката транзакций запросом:
select *
from V$FAST_START_SERVERS t;
который вернет информацию по процесам, выполняющим откат незавершенной транзакции.
Ход выполнения отката транзакции можно уточнить запросом:
select t.UNDOBLOCKSDONE/t.UNDOBLOCKSTOTAL*100
from v$fast_start_transactions t;
Более подробно можно почитать здесь:
week2_10gdba.html
Можно проверить наличие отката транзакций запросом:
select *
from V$FAST_START_SERVERS t;
который вернет информацию по процесам, выполняющим откат незавершенной транзакции.
Ход выполнения отката транзакции можно уточнить запросом:
select t.UNDOBLOCKSDONE/t.UNDOBLOCKSTOTAL*100
from v$fast_start_transactions t;
Более подробно можно почитать здесь:
week2_10gdba.html
Подписаться на:
Сообщения (Atom)