本日の面接まとめ:INSERT合併過大によるロック問題解決


今日面接に行ってこの問題に聞かれて、最初は本当に彼の言うことが分からなかった.
1.一時シナリオ1:ロック・テーブルの状況を確認し、ロック・テーブルを処理する

/*
*locked
*query locked object and analyse reason,kill it
*
*/

select 'alter system kill session ''' || SID || ',' || SERIAL# || ''';'
  from (select distinct a.sid,
                        a.Serial#,
                        status,
                        machine,
                        LOCKWAIT,
                        logon_time
          from v$session a, v$locked_object b
         where (a.status = 'ACTIVE' or a.status = 'INACTIVE')
           and a.sid = b.session_id
           and b.ORACLE_USERNAME = 'XYHISTEST' -- 
        )
       
/*2、 
alter system kill session 'sid,serial#';
alter system kill session '6976,33967';*/   

/*3、 oracle , , */
SELECT l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       l.os_user_name,
       s.machine,
       s.terminal,
       o.object_name,
       s.logon_time
  FROM v$locked_object l, all_objects o, v$session s
 WHERE l.object_id = o.object_id
   AND l.session_id = s.sid
 ORDER BY sid, s.serial#;

/*3. */
select s.SID, s.OSUSER, p.spid as OSPID, s.MACHINE, s.TERMINAL, s.PROGRAM
  from v$session s, v$process p
 where s.sid = 6 --session_id
   and s.paddr = p.addr;

/*4、 sql */
select b.sql_text
  from v$session a, v$sql b
 where a.sid = 6 --session_id
   and a.SQL_ADDRESS = b.ADDRESS(+);

/*5、 sql */
SELECT l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       s.user#,
       l.os_user_name,
       s.machine,
       s.terminal,
       a.sql_text,
       a.action
  FROM v$sqlarea a, v$session s, v$locked_object l
 WHERE l.session_id = s.sid
   AND s.prev_sql_addr = a.address
 ORDER BY sid, s.serial#;



2.暫定案2:流量制御、書き込み周波数制御:
(1)アクセス層,アプリケーション層,サービス層,データアクセス層でトラフィックを制御することができ,
(2)メッセージキューでデータベースへの書き込み速度を非同期制御したり、RPCツールでキューへのデータのキャッシュを行い、データベースへの書き込み頻度を制御したりすることもできます.
3.長期案:実際の業務に基づいてデータを切り分ける、つまり表を分ける、これも最も複雑である.
既存
0人がメッセージを発表し、猛撃->
ここで<<-ディスカッションに参加
ITeye推奨
  • —ソフトウェア人材免言語低保証渡米有給大学院!—