oracle

クエリーの結果を捨てて実行時間のみを得る方法

SQL*Plusで SET AUTOTRACE TRACEONLY を設定することで、クエリの実行結果を表示せずに実行だけができる。 実際に実行結果はクライアントに転送されるので、それを含めて時間をみることができる。接続してラインサイズを調整。 oracle$ sqlplus username/pas…

DBMS_SCHEDULERを使用したOSコマンドの実行と終了ステータスの関係

Oracle DatabaseからOSコマンドを実行するには、DBMS_SCHEDULERパッケージを使用する。しかしこのDBMS_SCHEDULERパッケージを通してOSコマンドを実行した場合にシェルから実行した時と同じ終了ステータスを得る方法が(調べた限りでは)存在しない。 USER_SCHE…

mod_plsqlで任意の数のパラメータを受け取るページを作る方法

プロシージャ定義 通常のページと同じように、プロシージャを定義する。ただし、引数は ( name_array IN OWA.vc_arr, value_array IN OWA.vc_arr ) とする必要がある。 プロシージャ名や型には自由度があるが、引数名は name_array と value_array でなけれ…

OWA_COOKIEパッケージによるクッキー出力の怪

mod_plsqlを使用したWebアプリケーションでクッキーを出力する場合、OWA_COOKIEパッケージのSENDプロシージャを使用する。このSENDプロシージャ、以下の引数をとる。 OWA_COOKIE.SEND( name in varchar2, value in varchar2, expires in date DEFAULT NULL, …

セッションIDを生成する準備

mod_plsqlを利用したWebアプリケーションではセッション管理について支援が無い。Cookieとデータベースを使用してセッション管理機能を自作しなければならない。(セッション管理機能はいろいろセキュリティ上の問題を作り込むポイントらしいので、PL/SQLでWe…

mod_plsqlを使用したWebアプリケーションにおけるファイルアップロード

mod_plsqlにおけるアップロードの処理概要 mod_plsqlを使った環境におけるファイルアップロードでは、dads.confの「PlsqlDocumentTablename」ディレクティブに指定した表(形式が決められている)にアップロードされたファイルの内容がBLOBとして格納される。F…

SQLの実行結果をXML化した後にHTML化して出力する

SQLの実行結果をXMLで出力する方法を身につけたので、それをXSLTを使用してHTML化する。 検証環境 Oracle Enterprise Linux 6.2 (x86_64) Oracle Database 11gR2 データベースキャラクタセット AL32UTF8 XSLTのデータベース内への取込み Oracle Database上で…

SQLの実行結果をXML化して出力する

検証環境 Oracle Enterprise Linux 6.2 (x86_64) Oracle Database 11gR2 データベースキャラクタセット AL32UTF8 出力対象表サンプル CREATE TABLE PRODUCT ( id NUMBER, name VARCHAR2(100), price NUMBER ); INSERT INTO PRODUCT VALUES(1, 'Catalyst 2940…

ファイルをBLOBとしてテーブルに読み込む

画像ファイルをBLOBとしてデータベース内に格納する。 それをmod_plsqlを使用したWebアプリケーションでブラウザに表示する。 検証環境 Oracle Enterprise Linux 6.2 (x86_64) Oracle Database 11gR2 データベースキャラクタセット AL32UTF8 画像ファイルの…

スキーマのオブジェクト定義比較

スキーマ間の diff の必要性 同じアプリケーションを複数1つのOracleデータベース上で動作させる場合、『スキーマ(Oracleの場合ユーザと同じ)』を複数用意すればよい。ところが、『それら複数のスキーマの持っているテーブルやその他のオブジェクトは全て同…

Oracleのアカウント状態の整理

DBA_USERS ビューで確認できるACCOUNT_STATUSについて、以下の9状態があり得ると『リファレンス』には記載されている。 OPEN EXPIRED EXPIRED(GRACE) LOCKED(TIMED) LOCKED EXPIRED & LOCKED(TIMED) EXPIRED(GRACE) & LOCKED(TIMED) EXPIRED & LOCKED EXPIRE…

表のハッシュ値を取得する

ファイルの同一性を確認するのには md5sum コマンドや sha1sum コマンドを使用してハッシュ値の一致を確認するのが便利。 データベース内の表についても、ハッシュ値の比較で一致を確認したい。捜しても見つからなかったので作ってみた。 説明 PDF版 (Google…

初期化パラメータの一覧(11.2)

11g Release 2(11.2) のものをGoogle先生をつかって見つけられなかったのでHTMLマニュアルから抽出してみた。設計という名の下全部の初期化パラメータの説明を羅列するという苦行があったりするんだよね。一つ一つの値についてチェックしました、というエビ…

UGAとPGA

UGAはセッションのメモリ。PGAはサーバプロセスのメモリ。今更ながら理解できた。 http://www.freelists.org/post/oracle-l/UGA-and-PGA-basic-question,1ソートという作業をするのはあくまでサーバプロセスであって、結果以外の作業用メモリは解放してもよ…

パフォーマンス・エンジニアの基本

どきりとするので戒めのために記載しておく。 『シバタツ流!チューニングの極意 「パフォーマンス・チューニングの勘どころ」』より引用。 Google先生に頼っても、経験を当てはめてみても、言い伝えに基づいても良いと思う。けれどもそれが本当に効果を発揮…

オンラインREDOログ設計

オンラインREDOログ(以降は単にREDOログ)の設計について考えた事、Oracleがマニュアルで示している設計方針をメモ。 REDOログ設計で決めること REDOログ1ファイルのサイズ REDOロググループの数 REDOロググループ内のメンバー数 REDOログの物理配置 考える観…

STATSPACKを使った自動情報収集

SQL*Plus でレポートを出力させる処理を自動化 変数を定義してから呼び出してやるとプロンプトで入力を求められずに済む。下記を auto.sql とかにして直接実行すればスナップショット410と411の比較レポートが 410-411.txt として出力される。 define begin_…

STATSPACKのインストールと使用

STATSPACK関連ドキュメント 公式 ORACLE_HOME/rdbms/admin/spdoc.txt (一応11g向けにメンテナンスされている) Oracle 9i データベース・パフォーマンス・チューニング・ガイドおよびリファレンス (10gから公式の説明はなくなった) OTNなど OTN Japan - Oracl…

STORAGE句でのエクステント関連の設定

ディクショナリ管理とローカル管理で意味合いが異なるもの、そもそもローカル管理では使われない・無視されるものがありわかりにくい。マニュアル(SQLリファレンス)の記載も今一煮え切らない。ということで検証してみる。 STORAGE句で指定するエクステント関…

物理属性句で指定を検討する設定項目

自動セグメント管理を使用する現在のデフォルト(かつ推奨)構成であれば、PCTUSED指定は不要。 設定項目 検討要否 要否理由 PCTFREE 要 デフォルト10。UPDATEによるレコード長増加有無により調整 PCTUSED 否 自動セグメント管理では使われない INITRANS 要 デ…

STORAGE句で指定を検討する設定項目

ローカル管理表領域で自動セグメント管理を使用する現在のデフォルト(かつ推奨)構成であれば、STORAGE句で指定する要素は実は少ない。 エクステント関連の指定要否理由は『STORAGE句でのエクステント関連の設定 - とあるSIerの憂鬱』参照。 設定項目 検討要…

明示的にエクステントを追加する方法

割り当てたからといって特別INSERTが速くなる訳でもない。 事前に容量確保することで、他の容量爆発の影響を受けずに動作できるようにできるほうがメリットかな。 size による容量指定はエクステントサイズに切り上げられる。 索引に対してもテーブルと同じ…

11.2 インストーラで指定できるEnterprise Editionのオプション一覧

Oracle Partitioning (デフォルトON) Oracle OLAP (デフォルトON) Oracle Label Security Oracle Data Mining RDBMS Files (デフォルトON) Oracle Database Vault option Oracle Real Application Testing (デフォルトON)

ダイレクト・パス・インサートが速い

これほど速いとは。今回試した感じだと通常のインサートより20倍速い数字になった。もっと検証は必要だが。 REDOログのスイッチ回数でみても10分の1以下の量しかスイッチしていない。 INSERT /*+ APPEND */ INTO TAB SELECT * FROM TAB@DBLINK;

PL/SQL の FOR でカーソルを使わずにテーブルを読める

こんなことができたのね。 今までいちいちカーソル作ってたよ。 begin for t in (select * from dba_tables) loop dbms_output.put_line(t.table_name); end loop; end;

GROUP BYで同一グループ内の文字列カラムを連結する

Oracle の隠し関数 wmsys.wm_concat が非常に強力な件について - drk7jp を参照。 隠し関数なのでサポートを受けられなくてよい範囲でのみ使うこと。でもすごい便利なんだよな。 11gR2 から ListAgg 関数が標準でサポートされる。デリミタも指定できるのでさ…

既存テーブルのDDL表示

これは便利そう・・・DBMS_METADATA。詳細はパッケージのリファレンスを。 set pagesize 0 set long 90000 --単一テーブルについて表示するなら。 select DBMS_METADATA.GET_DDL('TABLE', 'テーブル名') from dual; --ユーザが所有する全てのテーブルについ…

OEMの使用するリスナーのポート番号変更

OEMのリポジトリを再構成する。 RACの場合は -cluster オプションをそれぞれの最後につける。 # リポジトリを削除 emca -deconfig dbcontrol db # リポジトリを再構成 (ポート番号をインタラクティブに入力する) emca -config dbcontrol db -repos recreate

AWRを無効化する方法

AWRのスナップショット取得周期を0にする。 EXECUTE DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 0);

Oracle構築手順

ソフトウェアインストール コアダンプする場合の手順はインストレーションガイド参照。 Enterprise の場合は余計なオプションは導入しない。 データベース作成 DBCAにてデータベースを作成 テンプレートは『カスタム』を使用する。 使用しないコンポーネント…