ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

Database

PL/SQL で ズンドコキヨシ

ズンドコキヨシまとめ http://qiita.com/shunsugai@github/items/971a15461de29563bf90 と云う訳(?)で PL/SQL で ズンドコキヨシ を作って見た。(力技で)すまんな。彡(-)(-) ワンライナーでやっている猛者も何人か居るけど、 ワイにはこれ位が限界や……彡(-)(…

2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について語ってきたやで。

_人人人人人人人人人_ > 現行踏襲の呪縛!!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ 表題の通り、2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について、めっちゃ語ってきたやで 彡(゚)(゚) Slideshare の元リンクはこちら。 …

Oracle Database の ハッシュ・パーティション(HASH PARTITION) の 数 は 2の累乗 が良いそうだが、本当にそうか検証してみる。

Oracle Database の ハッシュ・パーティション(HASH PARTITION) の 数は、下記マニュアル曰く Oracle Database VLDBおよびパーティショニング・ガイド 12cリリース1 (12.1) B71291-09 ハッシュ・パーティション化を使用する場合 http://docs.oracle.com/cd/E…

Oracle Database の STS(SQL Tuning Set) を活用して、SQL の 性能統計 や 実行計画 を キャプチャする。

表題の通り、STS(SQL Tuning Set) を使って、 SQL の 性能統計 や 実行計画 を キャプチャするやで彡(゚)(゚)まず DBMS_SQLTUNE.CREATE_SQLSETファンクション を実行して、STS を作成しまする。 VAR v_sts_name VARCHAR2(30); EXEC :v_sts_name := DBMS_SQLTUN…

2/23(火) の JPOUG Tech Talk Night #6 で Oracle Database の オプティマイザ統計運用 について語ります。

表題の通り、2/23(火) に 開催される JPOUG Tech Talk Night #6 で、 Oracle Database の オプティマイザ統計運用 について語るやで 彡(゚)(゚) JPOUG Tech Talk Night #6 固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 - 柴田 歩 - http:/…

sqlplus の SET AUTOTRACE TRACEONLY は トレースオンリーじゃなくてトランザクションが実行されてしまう。

表題の通り、sqlplus の SET AUTOTRACE TRACEONLY はトレースオンリーじゃなくて トランザクションが実行されていまいます。SELECT文では問題になりませんが、INSERT/UPDATE/DELETE は 実際にデータが更新されていまうので、気を付けて下さいませ(´・ω・)ゞ SQ…

Bulk Insert有無による性能差を、PL/SQL の FORALL文〜で計測してみる。

表題の通り、Bulk Insert有り/無しの性能差を PL/SQL の FORALL文 で計測してみるやで 彡(゚)(゚)まずは 索引付き で TABLE を作成します。 CREATE TABLE TBL_A ( C1 NUMBER , C2 DATE , C3 VARCHAR2(10) ); ALTER TABLE TBL_A ADD CONSTRAINT TBL_A_PK PRIMA…

複数セッションから DBMS_LOCK.ALLOCATE_UNIQUE を実行して、「enq: UL - contention」の P1, P2, P3 の違いを調べてみる。

「enq: UL - contention」は DBMS_LOCKパッケージ で 明示的 に 排他ロックを取得した場合に出る 待機イベント なんやで。彡(゚)(゚)複数セッション で DBMS_LOCK.ALLOCATE_UNIQUE を実行して、 「enq: UL - contention」の P1, P2, P3 の違いを調べてみるやで…

まだ統計固定で消耗してるの? - JPOUG Advent Calendar 2015 (Day9) -

JPOUG Advent Calendar 2015 の 9日目となります。 昨日の記事は charade_oo4oさん の Oracle on Hyper-V 2015 でした。昨日の charade_oo4oさん や 渡辺 剛さんの記事、s4r_agentさんの記事など、 世の中は確実に Cloud な感じやね。彡(゚)(゚)さて今年のワイ…

ASM使用時 に DISK_ASYNCH_IOパラメータ を変えて、LGWR/DBWRプロセスのシステムコールを見てみる。

まず REDOログ/データファイル の格納場所を確認、どちらもASM上に配置されています。 SET PAGESIZE 100 SET LINESIZE 170 COLUMN MEMBER FORMAT A80 SELECT GROUP#, MEMBER FROM V$LOGFILE; GROUP# MEMBER ---------- -----------------------------------…

Oracle Clusterwareに登録したDBリソース名でoratabが更新されるけど、DBリソース名はDB_UNIQUE_NAMEと同じにしといた方が良い。

言いたい事は件名で語り尽くしてしまったけど、kwsk解説。 oratab に記載されるエントリは Oracle Clusterware の oraagentプロセス に よって自動更新されます。下記マニュアルに記載の仕様やで。 Oracle Real Application Clustersインストレーション・ガ…

Oracle の SYSTIMESTAMP は小数点以下の何桁を取得できるか?

小数点以下「6桁」まで取得できるみたい。μ秒(10^-6)って事か(゚ε゚ ) SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY/MM/DD HH24:MI:SS.FF9') AS NOW_TS FROM DUAL NOW_TS -------------------------------------------------------------------------------- 2015/09/0…

EXPLAIN PLAN FOR 〜(※AUTOTRACE TRACEONLY含む)で出てくる実行計画 と SQL実行時の実行計画が異なるケースを作ってみる。

EXPLAIN PLAN FOR 〜(※AUTOTRACE TRACEONLY含む)で出てくる実行計画 と SQL実行時の実行計画が異なるケースを作ってみるZe!(`・ω・)Ъ幾つかパターンは有るんですが、WHERE句の範囲検索を バインド変数で指定するケースでやってみます。簡単なんで。まず服は脱…

Oracle の ASH(Active Session History) から リテラルSQL を追跡してみる。

Oracle の ASH(Active Session History) から リテラルSQL を追跡してみます。ASH にはアクティブなセッションの履歴情報、もう少し詳しく言うと DB CPU または 待機状態(Disk IO/ロック待ち/Network待機/etc...) の セッション情報 が 1回/1秒 の間隔で自動…

Oracle の JDBC Thin Driver で Net Trace を取得する。

まず服を脱ぎます。まず "トレース用" のJDBCドライバをダウンロードします。 ojdbc*_g.jar を Oracle のサイトからダウンロードしてきます。JDBCドライバはバージョンが幾つかありますが、差し当たり11gR2(11.2.0.4)の "トレース用"JDBCドライバを下記サイ…

APPENDヒント付きの INSERT 〜 SELECT 〜 文のロック範囲が、INSERT文側のPARTITION句有無で異なる。

通常、APPENDヒント付きの INSERT 〜 SELECT文 は 排他ロック を表全体で獲得します。例えば以下の SQL文 を別セッションから併行で実行すると、 後から実行した SQL は TM enqueue で待機します。 -- ★セッション1 INSERT /*+ APPEND */ INTO TBL_B SELECT…

Oracle Datapump の export(expdp) で出力される dmpファイル の OSグループ を制御する。

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…

enqueue(ロック) の 待機させている方(ホルダー) と 待機している方(ウェイター) を出力する SQL

Oracle Database の enqueue(ロック) の 待機させている方(ホルダー) と 待機している方(ウェイター)を出力するには、V$LOCKビューを参照します。以下の SQL を実行します。 SET LINESIZE 300; COLUMN SESS FORMAT A20; SELECT DECODE(request,0,'Holder: ',…

LOB型(BLOB / CLOB / BFILE)のデータの長さ(バイト数 or 文字数)を確認する(DBMS_LOB.GETLENGTHファンクション)

※2018/8/20訂正:DBMS_LOBパッケージのGETLENGTHファンクションは、BLOB型はバイト数を戻しますが CLOBについては文字数を返します。バイト数ではありません。謹んでお詫び申し上げます。 下記の記事も参照して下さいやで彡(゚)(゚) CLOB型の(文字数ではなく)…

共有プール上の特定カーソルを狙い打ちで age out(消去)する。(DBMS_SHARED_POOL.PURGEプロシージャ)

共有プールの特定カーソルを狙い打ちで age out(消去) するには、 DBMS_SHARED_POOLパッケージの PURGEプロシージャ を使用します。まず V$SQLAREA を 参照して、age out したい SQL の ADDRESS値 と HASH_VALUE値 を確認します。 SQL> SET LINESIZE 170; SQ…

Bind Peek を もっと使おうぜ! - JPOUG Advent Calendar 2014 (Day 5) -

※2015年12月追記 こちらもよろしく!(`・ω・)ゞ まだ統計固定で消耗してるの? - JPOUG Advent Calendar 2015 (Day9) - [id:gonsuke777:20151208:1449587953] JPOUG Advent Calendar 2014 の 5日目となります。「Bind Peek を もっと使おうぜ!」と銘打って、…

キー項目がブレイクしたタイミングでサマリ集計するSQL (ROW_NUMBER分析ファンクション)

タイトルだけだと訳が解りませんな。下記表(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条件) パート2

以前の記事である 数字のみのレコードを抽出するSQL(REGEXP_LIKE条件) http://d.hatena.ne.jp/gonsuke777/20120215/1329301835の改良バージョン。まぁ改良と言っても結果は変わらないんですがね。。。 やっぱり Oracle の REGEXP_LIKE条件を使用してみる。 W…

連番を生成する SELECT文(階層問い合わせ+LEVEL疑似列)

ちょっとした疑似レコードをSELECTだけで簡単に作れるので、非常に便利です。 階層問い合わせ(CONNECY BY〜) と LEVEL疑似列を使用します。 Oracle Database SQL言語リファレンス 11gリリース2 (11.2) B56299-06 LEVEL疑似列 http://docs.oracle.com/cd/E163…

Oracle Database の「データベース」のデフォルト表領域を確認する方法

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…

ASMインスタンスで有効なユーザを確認

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(名古屋/大阪)で語ってきた。

またまた更新、、、以下のイベントで語って参りますた。 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…

INTERVAL DAY TO SECOND型を秒数に変換してみる。

さっきのは前フリで、こっちが本来やりたかったこと。 EXTRACTファンクションを使いまする。例として、1日12時間31分55.129秒の INTERVAL DAY TO SECOND型を秒数に変換してみる。 SELECT EXTRACT(DAY FROM to_dsinterval('+01 12:31:55.129')) AS DAY , EXTR…

INTERVAL DAY TO SECOND型を使って日付を演算してみる。

例として、現在時刻(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…

Oracle DBA & Developer Day 2013 セッション資料が公開されてた。

ぐぐったら出てきた。ワイのもジャストプレイヤー・瀧CEOの資料もうpされてた。 他の方々の資料も盛りだくさん。皆さんよろしくやで〜〜。 Oracle DBA & Developer Day 2013 セッション資料http://www.oracle.com/technetwork/jp/ondemand/ddd-2013-2051348…