standingzzz's Oracle memo

OracleSQLチューニングの豊富な経歴を生かして、主に11gと12cのオプティマイザ動作の違いなどについて、実用的な検証結果をメモしています。

Oracle12c NULLデータの割合によるインデックス性能確認

概要 データにNULLが多く含まれる場合のインデックス性能について確認します。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) 検証 パターンA NULLデータが全体の1%の場合 ^ テー…

ORACLE 新元号予想[集計関数LISTAGG][再帰SQL]

概要 元号一覧をテーブルに登録して、LISTAGG、再帰SQLを用いて 過去の漢字の出現回数を集計、ついでに新元号を予想します。 検証 データ用意 ^ wikiから元号の一覧を取得して、SQLLOADERでテーブルに登録しておきます。 SQL> select * from tab_gengo; NAME…

Oracle12c PROCEDURE/FUNCTION COMPILE時のORA-04068回避方法

概要 SESSION-AでFUNCTIONをRECOMPILEすると、その以前から接続していたSESSION-Bで、 ORA-04068が発生するというので、調査した際のメモです。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.16…

Oracle リストを横に並べて見やすくする[集計関数LISTAGG]

概要 リストが縦にズラーっと出てきて画面内に収まらない。 そんな時にはLISTAGG関数を使うとキレイになります。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) 検証 データ用意 某…

Oracle12c ヒント句による実行計画の制御[ORDERED, LEADING, USE_NL, INDEX, OPT_PARAM]

概要 SQLが望ましくない実行計画となっている場合に、 ヒント句により結合順などを制御する例をあげます。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) 検証 結合テスト用オブジェ…

Oracle12c 接続中のPDBをSQLPLUSからSQLで確認する

概要 11gまでは接続先を確認する場合、v$instance見て、show userして、 という具合で良かったのですが、12cでPDBに繋いでいる場合の 確認方法がサッと出てこなかったので、メモです。 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit P…

Oracle12c SQL*Loader(12.2.0.1)を動かしてみる

概要 こちらでインストールしたSQL*Loaderを動かしてみます。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) 検証 テスト用テーブル作成 ^ 郵便番号データロード用テーブル SQL> ed …

Oracle12c INDEXがUNUSABLEになるとEXTENT,SEGMENTは削除される

概要 ALTER TABLEなどでINDEXがUNUSABLEとなった場合に、EXTENT、SEGMENTは削除されるという事象の検証(というかメモ)です。 OracleMasterの教科書に載っているような話らしいですね。資格は持っていないので知らないです。 Oracle Database 12c Enterpris…

Centos7にOracle12cのSQL*Loader(12.2.0.1)をインストール

概要 Oracle12cR2のSQL*Loaderをインストールして接続するまでのメモです。 手順 rpmのダウンロード 直リンクだといつしか変わっていたりするので、下記ページで 「oracle client download Linux x86-64」を検索して、 http://www.oracle.com/technetwork/to…

python3.6でOracle12c接続の確認(cx_Oracle)

概要 python3.6でOracle12cへ接続してSQLを実行する際のメモです。 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) Python 3.6.2 確認 接続情報 DBserver:oracle12c.test port:1521…

CentOS7にOracle12cのInstantClient(12.2.0.1)をインストール

概要 OracleClientをインストールして、SQLPLUSで接続するまでのメモです。 手順 rpmのダウンロード 直リンクだといつしか変わっていたりするので、下記ページで 「oracle client download Linux x86-64」を検索して、 http://www.oracle.com/technetwork/to…

Oracle12c OPTIMIZER_FEATURESによるNOT EXISTS句の実行計画の違いを確認する その2

概要 OPTIMIZER_FEATURESによるNOT EXISTS句の実行計画の違いを確認します。 その1ではSELECT句をcount(*)のみにしたことで、 12.2.0.1のELIMINATE_JOINにより、tab_bのJOINが省略される実行計画となりましたので、 tab_bのカラムをSELECT句に入れたSQLで…

Oracle12c OPTIMIZER_FEATURESによるNOT EXISTS句の実行計画の違いを確認する その1

概要 OPTIMIZER_FEATURESによるNOT EXISTS句の実行計画の違いを確認します。 検証のベースとなるSQL select count(*) from tab_a a left join tab_b b on b.id = a.id and b.cdate > sysdate - 1/24 where not exists ( select 1 from tab_b b2 where b2.id …

Oracle12c Centos7 VARCHAR2のカラム長の拡張を検証 Part3.

概要 Part2.の続きです。 拡張データ型カラムの追加、変更、インデックスの作成を検証します。 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production CentOS Linux release 7.3.1611 (Core) 検証 拡張データ型カラムの追加、変更 …

Oracle12c Centos7 VARCHAR2のカラム長の拡張を検証 Part2.

概要 Part1.の続きです。 マニュアルの記載に沿ってMAX_STRING_SIZEを変更してみます。 ^ PDBのVARCHAR2、NVARCHAR2およびRAW列の最大サイズを増加する 1. PDBを停止します。 2. PDBを移行モードで再オープンします。 3. PDBのMAX_STRING_SIZEの設定をEXTEND…

Oracle12c Centos7 VARCHAR2のカラム長の拡張を検証 Part1.

概要 「PDBのVARCHAR2の最大サイズを増加する」を検証していきます。 テーブル、インデックスを事前に作成して、カラムのmodify、add、そのカラムに対するインデックスの作成を実施します。 VARCHAR2(4000)やCLOBにインデックス貼りたいという要望は、結構あ…