ねら~ITエンジニア雑記

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

2016-01-01から1年間の記事一覧

SQLチューニングと対戦格闘ゲームの類似性について語る。- JPOUG Advent Calendar 2016 Day 15 -

JPOUG Advent Calendar 2016 の Day 15 の記事となります。 昨日は Yousuke Yadaさん の 以下の記事でした。 R12.2新機能『Offline Encryption Conversion』 ※バックポート実行 http://blog.livedoor.jp/y_db_y/archives/49072687.html ワイはSQLチューニン…

PL/SQLのコレクション と 12c新機能のWITH句ファンクション で IN句1000個の壁(ORA-1795エラー)を回避/克服してみる。

Oracle Database では IN句に1000個以上の値を指定すると、ORA-1795エラーが発生してしまいます。 SQL> SELECT COUNT(*) FROM TBL_X T1 2 WHERE C1 IN ( 3 1 4 , 2 5 , 3 : (中略) : 4001 ,3999 4002 ,4000 4003 ); ,1001 * ERROR at line 1003: ORA-01795: …

Oracle Database でリテラルの文字列配列をTABLEファンクションでレコードとして返す。

文字列配列のTYPE定義⇒TABLEファンクションでイケるやで彡(゚)(゚) CREATE OR REPLACE TYPE tp_v_array IS TABLE OF VARCHAR2(4000); / SELECT * FROM TABLE(tp_v_array('a', 'b', 'c', 'xxx', 'ZZZ')); 結果は以下の通り。 SQL> CREATE OR REPLACE TYPE tp_v_…

Oracle DBA & Developer Day 2016(DDD 2016) の セッション資料 が公開されました。

タイトルの通り、去る2016年10月27日に開催された Oracle DBA & Developer Day 2016(DDD 2016) の資料が公開されたやで。 彡(^)(^) Oracle DBA & Developer Day 2016 の セッション資料 http://www.oracle.com/technetwork/jp/ondemand/ddd-2016-3373953-ja.…

Oracle Database の PIVOT文で取得レコードの縦横を変換する。

PIVOT文で取得レコードの縦持ち/横持ちを変換するやで彡(゚)(゚) このSQLで取得できる…… COLUMN TARGET_NAME FORMAT A8; COLUMN TARGET_TYPE FORMAT A15; SELECT TARGET_NAME , TARGET_TYPE , AVAILABILITY_STATUS AS AVAILABILITY_STATUS , ROUND(SUM(END_TI…

iostat の await, svctm の 見かた、考え方 ※10/30スライド修正

iostat の await, svctm の 見かた、考え方を書いたやで彡(゚)(゚) ※10/30スライド修正 Slideshareの元リンクは下記やで彡(゚)(゚) iostat の await svctm の 見かた、考え方 http://www.slideshare.net/shibataayumu/iostat-await-svctm 下記のブログをめっちゃ…

歴代使用PC(SSD換装含む)のIO性能比較

PC

PC機種やHDD/SSDの型番は荒れる要素なので割愛彡(゚)(゚)ベンチの条件が揃えられていない(ベンチソフトや暗号化ソフトのバージョンなど)ので 参考値なんやけど、最近の SSD は圧倒的な性能やね……彡(-)(-) 旧々PC HDD(2010年~2013年使用) Sequential Read : 32…

Oracle Database 12c 新機能、適応計画(Adaptive Plan)のサブプランが発動した時/しなかった時の実行計画を DBMS_XPLAN.DISPLAY_CURSOR の FORMAT => 'ADAPTIVE' で比較してみる。

こっちがサブプラン発動時(HASH JOINに変更された時)の実行計画 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('aqkqdv23rmnj7', NULL, 'ADAPTIVE ALLSTATS LAST')); PLAN_TABLE_OUTPUT ----------------------------------------------------------------…

Oracle Database 12c で OPTIMIZER_DYNAMIC_SAMPLING=11 をセットすると、Dynamic Sampling の 結果 が RESULT CACHE に格納されて、異なるSQL で 共有される。

表題の通り、Dynamic Sampling を 11 にセットすると、Dynamic Sampling の 結果 が Result Cache に格納されて、異なるSQL(sql_id が 異なる SQL) で Dynamic Dampling の 結果が共有されるんやで。彡(゚)(゚) 従来の動作 SQLの実行計画作成時(Hard Parse時)…

Oracle Database の SELECT文・SAMPLE句が、BLOCK句有り/無し で 読込量 が 全く異なる。

表題の通り、Oracle Database の SELECT文 の SAMPLE句が、 BLOCK句有り/無し で 読込量 が 全く違うんやで。知らんかった。。。彡(゚)(゚) SAMPLE句無し の 場合 SET AUTOTRACE TRACEONLY; SELECT /*+ FULL(A) CACHE(A) */ COUNT(*) FROM TEST_TABLE_A A; :…

DBMS_LOB.LoadClobFromFileプロシージャを使ってテキストファイルを Oracle Database の CLOB型列 に ロードする。

表題の通り、DBMS_LOB.LOADCLOBFROMFILEプロシージャ で テキストファイル を CLOB型列 に ロードするやで彡(゚)(゚)まずCLOB型の列を持つテーブルとディレクトリ・オブジェクトを作ります。 CONNECT AYSHIBAT/xxxxxxxx CREATE TABLE TEST_CLOB ( C1 NUMBER , …

プラットフォーム毎(Linux, Solaris, HP-UX, AIX等)のエンディアンの違いを V$TRANSPORTABLE_PLATFORMビュー で確認する。

Oracle Database の V$TRANSPORTABLE_PLATFORMビュー を参照すると、 プラットフォーム毎(Linux, Solaris, HP-UX, AIX等)のエンディアンの 違いを確認できるんやで彡(゚)(゚) SET LINESIZE 300; SET PAGESIZE 100; COLUMN PLATFORM_NAME FORMAT A50; SELECT * …

Oracle Database の 共有プール(Shared Pool) の 存続期間による分割(サブヒープ、従属ヒープ)数 は、11gR2⇔12cR1 及び 手動SGA⇔自動SGA で 異なる。 ※2016/6/27追記

表題の通り、共有プール(Shared Pool) の 存続期間による分割(サブヒープ、従属ヒープ)数 は、 11gR2⇔12cR1 及び 手動SGA⇔自動SGA で 異なるんやで。彡(゚)(゚)存続期間による分割(サブヒープ、従属ヒープ)数 って何ぞや?てな方は、 共有プールの構造を解説し…

SQLの構文が間違っているとV$SYSSTAT統計の「parse count (failures)」がカウントされる。

下記のシバタツさん資料より。シバタツ流!チューニングの極意 「パフォーマンス・チューニングの勘どころ」 http://www.oracle.com/technetwork/jp/ondemand/db-new/b-5-shibatatsu-1484769-ja.pdf

グローバル統計/パーティション統計の収集 で GRANULARITY => 'GLOBAL AND PARTITION' と 'APPROX_GLOBAL AND PARTITION' の負荷の違いを計測してみる。

やってみる。まずはデータ作成。 -- データ作成 DROP TABLE TBL_A; CREATE TABLE TBL_A ( C1 NUMBER , C2 DATE , C3 NUMBER , C4 VARCHAR2(100) ) PARTITION BY RANGE (C2) INTERVAL(NUMTODSINTERVAL(1, 'DAY')) SUBPARTITION BY HASH (C1) SUBPARTITIONS 16…

DBMS_STATS.SEED_COL_USAGEプロシージャ と DBMS_STATS.CREATE_EXTENDED_STATSファンクション で 拡張統計のエントリを(半)自動作成してみる。

表題の検証をやってみるやで彡(゚)(゚) まずデータ作成します。実行スクリプトは下記の通りです。データ作成スクリプト CONNECT AYSHIBAT/xxxxxxxx DROP TABLE TBL_A; CREATE TABLE TBL_A AS SELECT LEVEL AS C1 , TO_DATE('2016/04/27', 'YYYY/MM/DD')+(LEVEL…

NOLOGGING で ダイレクト・ロードしても 索引有無 や 索引付与の順序 で REDO生成量が異なると云う話

タイトルでおおよそ語ってしまったんですが、NOLOGGING属性 の 表 に ダイレクト・ロード で データ を ローディングしても、 索引有無 や 索引付与の順序 で REDO生成量は異なるんやで彡(゚)(゚)下記のサンプル表&INSERT〜SELECT〜文で、Appendヒントや索引…

JPOUG Tech Talk Night #6 イベントレポート(by 21cafe様)

先日の JPOUG Tech Talk Night #6 が記事になったやで!彡(゚)(゚) Oracle運用のノウハウが満載!JPOUG Tech Talk Night #6イベントレポート https://geechs-magazine.com/tag/event/20160331 ワイ(柴田AYU) の プレゼンや、中嶋さん、太田さん、三原さん の …

SQL再帰WITH句の手習いズンドコキヨシ(※元ネタ有り)

懲りずにズンドコキヨシ。 ワイ将、明智重蔵氏 の 下記エントリに衝撃を受ける。彡(゚)(゚) Oracleの再帰With句でズンドコキヨシ http://qiita.com/AketiJyuuzou/items/c2bc63872125e7277e96 と云う訳(?)で、再帰WITH句の手習いがてら、リファクタリングっぽく…

WITH句 の FUNCTION で ズンドコキヨシ(※ワンライナー可)

ズンドコキヨシまとめ http://qiita.com/shunsugai@github/items/971a15461de29563bf90 こないだは30個位だったズンドコキヨシのタグが、100個超えとる……負けてはいられん!今度は Oracle Database 12cR1 新機能 の WITH句 の FUNCTION で ズンドコしてみた…

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…