liguofeng29’s blog

個人勉強用ブログだっす。

Oracle

Oracle - 特定時間帯のSQL抽出

set term on set wrap on set trimspool on set pagesize 1000 set linesize 2000 set numwidth 10 set long 9999 spool sql.txt select SAMPLE_TIME,MACHINE,PROGRAM,USER_ID,SQL_TEXT from DBA_HIST_ACTIVE_SESS_HISTORY a,DBA_HIST_SQLTEXT b where SAMPL…

Oracle - 大きなテーブル削除

[Problem] 多数のエクステントを持つテーブルをDropすると、Dropを実行したユーザ・プロセス が大量のCPUが消費して、処理がなかなか終了しません。 これは、基本的にDropコマンドの処理中でエクステントに対する操作で大量のCPUが 必要となるためです。 [Ac…

Oracle - 行移行、行連鎖調査

1. CHAINED_ROWS テーブルの定義(初回のみ実施) sqlplus sys/パスワード as sysdba @$ORACLE_HOME/rdbms/admin/utlchain.sql truncate table chained_rows; 2. 行連鎖、行移行に関する統計情報の取得 ANALYZE TABLE スキーマ名.テーブル名 LIST CHAINED RO…

Oracle - DDL抽出(DBMS_METADATA.GET_DDL)

[詳細] DBMS_METADATA.GET_DDLファンクションを使用して定義情報を抽出します。 手順は以下のようになります。SQL*Plusを使用しています。 1.出力のフォーマットを整形します。 DBMS_METADATA.GET_DDL は CLOB 型で出力されますので、longシステム 変数に…

Oracle - デットロック(dead lock)

[Problem] デッドロック発生後のが検出された後、トランザクションはどうなりますか? [Cause] デッドロックが検出され ORA-60 が発生した場合、当該のSQL文の処理は無 効になります。しかし、そのSQL文以前に実行された処理(同一トランザク ション内…

Oracle - undo表領域サイズ取得

UNDO 表領域の使用率は、以下の通り計算します。 UNDO 表領域の使用率 = ([A] ACTIVE + UNEXPIRED のエクステントの合計サイズ) / *1 [A] ACTIVE + UNEXPIRED のエクステントの合計サイズ ステータスが ACTVIE のエクステントは、何らかのトランザクションで…

Oracle - 断片化確認スクリプト

[質問] 各表領域がどのOBJECTにより使用されているか、 またどのブロックがフラグメンテーションをおこしているかを確認したい。 [回答] 以下のSQLをSQLPLUSより実行する事で、どのユーザセグメントが、どの表領域(データファイル)上に存在し、どれだけのBLO…

Oracle - RMANのバックファイル関連

■RMAN-バックアップファイル削除 ⇒ RMAN> DELETE OBSOLETE; ~ 中略 ~ このオブジェクトを削除しますか(YESまたはNOを入力してください)。y ※確認プロンプトなしで実行したい場合は以下のコマンドを実行 RMAN> DELETE NOPROMPT OBSOLETE; ■RMAN-バックア…

Oracle - PFILEからSPFILE作成

CREATE SPFILE='/export/oracle/admin/MUSIC/pfile/spfileMUSIC.ora' FROM PFILE='/export/oracle/admin/MUSIC/scripts/init.ora';

Oracle - バックアップ対象ファイル検索

①データファイル SQL> select name from v$datafile; ②REDOログファイル SQL> select member from v$logfile; ③制御ファイル SQL> select name from v$controlfile; ④パラメータファイル SQL> select name,value from v$parameter where name='spfile'; ※空…

Oracle - ArchiveLog削除

■RMANのDELETEコマンド使用①スレッド番号、ログ順序番号を指定する場合 例)スレッド番号1、ログ順序番号 200番まで(200番も含む)アーカイブログファイル を削除するoracleユーザで実行 %rman target / RMAN> delete archivelog until sequence 200 thread …

Oracle - UNDO切り替え(縮小目的)

■作業の流れ 1. UNDOアドバイザを使用して、推薦UNDO表領域サイズを求める 2. 既存UNDO表領域作成DDLから、UNDOTBS2を推薦サイズで作成する 3. UNDO表領域を切り替える 4. 既存UNDO表領域を使用するトランザクションが終了するまで待機 5. 既存UNDO表領域を…

Oracle - ロック調査

-- ロックをかけているセッションID、ユーザー名、プログラム名、ロックしている時間を取得SELECT a.SID sid, a.SERIAL# serialno, a.USERNAME username, a.MACHINE machine, b.TYPE type, a.PROGRAM program, TO_CHAR(b.CTIME/60,'999990.9') lock_time, c…

Oracle - DB調査(ロック、ハングなど)

-- DB調査に必要なデータ -- RACの場合、全ノードにて 以下の SQL 文の検索結果情報(1分おきに3回)alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';alter session set timed_statistics = true;alter session set max_dump_file_size = UN…

Oracle - ITLとは

ITL とは、トランザクションによって、データブロックがどのような状態にあるかを定義するデータ構造です。書き換えられる行の数には関係なく1トランザクションごとに1つが取得されるものとなります。ITL の最大値は表の作成時に maxtrans にて指定します。I…

Oracle - メモリチューニング

-- キャッシュヒット率 SET SERVEROUTPUT ON; DECLARE d_gets NUMBER; c_gets NUMBER; p_reads NUMBER; result NUMBER; BEGIN SELECT VALUE INTO d_gets FROM V$SYSSTAT WHERE NAME = 'db block gets'; SELECT VALUE INTO c_gets FROM V$SYSSTAT WHERE NAME …

Oracle - MVIEW

-- MVIEW更新確認 set lin100 set pages 99 col OWNER format a10 col MVIEW_NAME format a30 col REFRESH_MODE format a10 col LAST_REFRESH_TYPE format a10 col LAST_REFRESH_DATE format a20 ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'…

Oracle - job

-- JOB確認 set lin200 set pages 99 col INTERVAl format a20 col NEXT_DATE format a30 col WHAT format a60 ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'; select JOB,LAST_DATE,THIS_DATE,NEXT_DATE,INTERVAl,WHAT,FAILURES,BROKEN FROM …

Oracle - Tableサイズ確認

-- TABLEサイズ確認 SELECT SEGMENT_NAME, SUM(BLOCKS) BLOCKS, CEIL(SUM(BYTES)/1024/1024) SIZE_MB FROM user_SEGMENTS where SEGMENT_NAME='TABLE_NAME' GROUP BY SEGMENT_NAME,SEGMENT_TYPE ORDER BY SEGMENT_NAME,SEGMENT_TYPE;

Oracle - TABLESPACE

-- 表領域確認 set pages999 set lin200 select d.tablespace_name, TOTAL_SIZE "現サイズ[MB]", round(TOTAL_SIZE-FREE_SIZE) "使用量[MB]", round*1*100) "使用率(%)", FREE_SIZE "空き容量[MB]" from (SELECT tablespace_name, round(SUM(bytes)/(1024*10…

Oracle - profile確認&変更

-- profile確認 col USERNAME format a20 col RESOURCE_NAME format a30 col LIMIT format a20 SELECT s.USERNAME,t.RESOURCE_NAME,t.LIMIT FROM DBA_USERS s,DBA_PROFILES t WHERE s.PROFILE = t.PROFILE AND s.USERNAME='USERNAME'; -- profile変更 ALTER …