Oracle
EXPLAIN PLAN FOR 〜(※AUTOTRACE TRACEONLY含む)で出てくる実行計画 と SQL実行時の実行計画が異なるケースを作ってみるZe!(`・ω・)Ъ幾つかパターンは有るんですが、WHERE句の範囲検索を バインド変数で指定するケースでやってみます。簡単なんで。まず服は脱…
Oracle の ASH(Active Session History) から リテラルSQL を追跡してみます。ASH にはアクティブなセッションの履歴情報、もう少し詳しく言うと DB CPU または 待機状態(Disk IO/ロック待ち/Network待機/etc...) の セッション情報 が 1回/1秒 の間隔で自動…
まず服を脱ぎます。まず "トレース用" のJDBCドライバをダウンロードします。 ojdbc*_g.jar を Oracle のサイトからダウンロードしてきます。JDBCドライバはバージョンが幾つかありますが、差し当たり11gR2(11.2.0.4)の "トレース用"JDBCドライバを下記サイ…
通常、APPENDヒント付きの INSERT 〜 SELECT文 は 排他ロック を表全体で獲得します。例えば以下の SQL文 を別セッションから併行で実行すると、 後から実行した SQL は TM enqueue で待機します。 -- ★セッション1 INSERT /*+ APPEND */ INTO TBL_B SELECT…
Oracle Datapump の export(expdp) で出力される ダンプファイル は、 通常 ${ORACLE_HOME}/bin配下の oracleバイナリと同一の owner:group で出力されます。 [oracle@host1 ~]$ . .ayshibat [oracle@host1 ~]$ ls -la $ORACLE_HOME/bin/oracle -rwsr-s--x 1…
Oracle Database の enqueue(ロック) の 待機させている方(ホルダー) と 待機している方(ウェイター)を出力するには、V$LOCKビューを参照します。以下の SQL を実行します。 SET LINESIZE 300; COLUMN SESS FORMAT A20; SELECT DECODE(request,0,'Holder: ',…
※2018/8/20訂正:DBMS_LOBパッケージのGETLENGTHファンクションは、BLOB型はバイト数を戻しますが CLOBについては文字数を返します。バイト数ではありません。謹んでお詫び申し上げます。 下記の記事も参照して下さいやで彡(゚)(゚) CLOB型の(文字数ではなく)…
共有プールの特定カーソルを狙い打ちで age out(消去) するには、 DBMS_SHARED_POOLパッケージの PURGEプロシージャ を使用します。まず V$SQLAREA を 参照して、age out したい SQL の ADDRESS値 と HASH_VALUE値 を確認します。 SQL> SET LINESIZE 170; SQ…
※2015年12月追記 こちらもよろしく!(`・ω・)ゞ まだ統計固定で消耗してるの? - JPOUG Advent Calendar 2015 (Day9) - [id:gonsuke777:20151208:1449587953] JPOUG Advent Calendar 2014 の 5日目となります。「Bind Peek を もっと使おうぜ!」と銘打って、…
タイトルだけだと訳が解りませんな。下記表(SALES表)のレコード群を SQL> SELECT * FROM SALES ORDER BY SALES_DATE, JAN_CODE; SALES_DATE JAN_C SALES_CNT ------------------- ----- ---------- 2014/10/06 00:00:00 AAA 100 2014/10/07 00:00:00 AAA 200…
以前の記事である 数字のみのレコードを抽出するSQL(REGEXP_LIKE条件) http://d.hatena.ne.jp/gonsuke777/20120215/1329301835の改良バージョン。まぁ改良と言っても結果は変わらないんですがね。。。 やっぱり Oracle の REGEXP_LIKE条件を使用してみる。 W…
とりあえずメモ。hugepage使用の判定方法は yohei-aさんの記事 【Linux で huge page を使っているプロセスを調べる方法:id:yohei-a:20140816:1408168458】を参考。Java7 の場合 [oracle@hostname1 javatest]$ /home/oracle/work/ayshibat/jdk1.7.0_51/bin/j…
Oracle VM for x86(OVM x86)3.2.8 の DomU(Guest OS) で hugepage を使おうとしたら、messages に以下のメッセージが出て使えない。 $ cat /etc/sysctl.conf : vm.nr_hugepages = 512 ★sysctl.conf上では hugepage を設定済み $ cat /var/log/messages : Aug…
ちょっとした疑似レコードをSELECTだけで簡単に作れるので、非常に便利です。 階層問い合わせ(CONNECY BY〜) と LEVEL疑似列を使用します。 Oracle Database SQL言語リファレンス 11gリリース2 (11.2) B56299-06 LEVEL疑似列 http://docs.oracle.com/cd/E163…
DATABASE_PROPERTIESディクショナリを参照する。V$DATABASEじゃないんですね〜〜。 Oracle Databaseリファレンス 11gリリース2 (11.2) B56311-08 DATABASE_PROPERTIES http://docs.oracle.com/cd/E16338_01/server.112/b56311/statviews_2160.htm#sthref1733…
V$PWFILE_USERSビューを見る。 SQL> SELECT * FROM V$PWFILE_USERS; USERNAME SYSDB SYSOP SYSAS ------------------------------ ----- ----- ----- SYS TRUE TRUE TRUE ASMSNMP TRUE FALSE FALSE SQL>
またまた更新、、、以下のイベントで語って参りますた。 Oracle Technology Day 2014 in 名古屋 http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=176929&src=7863979&src=7863979&Act=65 Oracle Technology Day 2014 in 大阪 http://ww…
さっきのは前フリで、こっちが本来やりたかったこと。 EXTRACTファンクションを使いまする。例として、1日12時間31分55.129秒の INTERVAL DAY TO SECOND型を秒数に変換してみる。 SELECT EXTRACT(DAY FROM to_dsinterval('+01 12:31:55.129')) AS DAY , EXTR…
例として、現在時刻(SYSTIMESTAMP) の 1日12時間31分55.129秒後を算出してみる。 TO_DSINTERVALファンクションを使う。 ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY/MM/DD HH24:MI:SS.FF'; SELECT SYSTIMESTAMP AS CURRENT_TIME , SYSTIMESTAMP + to_ds…
ぐぐったら出てきた。ワイのもジャストプレイヤー・瀧CEOの資料もうpされてた。 他の方々の資料も盛りだくさん。皆さんよろしくやで〜〜。 Oracle DBA & Developer Day 2013 セッション資料http://www.oracle.com/technetwork/jp/ondemand/ddd-2013-2051348…
ひっそりと更新、、、以下のイベントで語ってきたやで〜〜。Oracle DBA & Developer Day 2013http://www.oracle.co.jp/events/dbadev2013/自分は以下のセッションを担当しますた。SQLチューニングについてっすね。 【A-1】オラクル・コンサルが語る! SQLチ…
何年か振りに sqlldr のコントロールファイルを書く用事があったので、メモ。http://docs.oracle.com/cd/E16338_01/server.112/b56303/ldr_params.htm#i1005019 Oracle Databaseユーティリティ 11gリリース2 (11.2) B56303-04 終了コードによる結果の検査と…
問題は表題の通りで、下記のようにps出力のコマンド部分が途中で切れる。 root:~# ps -ef | grep -i java agentuse 7626 10046 0 11月 12日 ? 0:00 /u02/app/oracle/Middleware/agent/core/12.1.0.1.0/jdk/bin/sparcv9/java -Xmx128M agentuse 24384 10046 0…
BLOB型のデータをCLOB型に変換するには DBMS_LOBパッケージのCONVERTTOCLOBプロシージャを使用する。 Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス 11g リリース2(11.2) B56262-03 79 DBMS_LOB CONVERTTOCLOBプロシージャ h…
久々の更新じゃーい!共有プール上に格納された SQL の実行計画を出力するには、 DBMS_STATSパッケージの DISPLAY_CURSORファンクションを使用する。 SQL> SET LINESIZE 170; SQL> SET PAGESIZE 1000; SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('…
※追記:パート2(http://d.hatena.ne.jp/gonsuke777/20140909/1410228639)も見てね。 Oracle の REGEXP_LIKE条件を使用してみる。 WITH A AS ( SELECT 'A' AS COL1 FROM DUAL UNION SELECT '1' FROM DUAL UNION SELECT '2' FROM DUAL UNION SELECT '1A' FROM …
以前のエントリ(http://d.hatena.ne.jp/gonsuke777/20110829/1314610674)の改良版。 DBMS_JOBS の代わりに DBMS_SCHEDULER を使用する。repeat_intervalパラメータに何を書くかがポイント。 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'STATSPACK_SNAPS…
SQL は↓(※訳有って9iR2環境で実行) SET PAGES 0; SET LINESIZE 32767; SET LONG 2000000; SET LONGC 2000000; COLUMN DDL FORMAT A32767; SELECT DBMS_METADATA.GET_DDL('TABLESPACE','TEST1') AS DDL FROM DUAL; 結果は↓ DDL -----------------------------…
よくよく考えたら V$TEMP_SPACE_HEADER だけで良かったでござる(´・ω・`) ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; COLUMN BYTES_MAX FORMAT 999,999,999,999; COLUMN BYTES_FREE FORMAT 999,999,999,999; COLUMN BYTES_USED FORMAT 99…
DBA_TEMP_FILES 及び V$TEMP_SPACE_HEADER を参照する。 SET LINESIZE 170; ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; COLUMN MAX_BYTES FORMAT 999,999,999,999; COLUMN FREE_BYTES FORMAT 999,999,999,999; COLUMN USED_BYTES FORMAT…