kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

Oracle SQL経過時間の確認とnagios監視

1.現在のSQL経過時間を確認するSQL SELECT AUDSID, nvl(round((sysdate - SQL_EXEC_START) * 24 * 60 * 60,0),0) as ACTIVE_TIME ,sql_id ,username FROM v$session WHERE username in ('ORAUSER','ORAUSER2') AND --チェックするユーザを入れる status='ACT…

標準監査とトリガーを使用して監査したSQL文を1つのファイルに集約する

ざっくりこんなことがしたい 指定したユーザのみSQL監査(例:KANSA)、KANSAユーザにはselect権限のみ ↓ ログインした段階でログイン情報をテキストに出力 ↓ ログオフした段階でいままで実行したORAUSERユーザのオブジェクトへのクエリをテキストに出力 ↓ そ…

MySQLのSHOW構文をORACLE(SQL*Plus)でも実行したい

JPOUG Advent Calendar 2015の3日目のエントリーです。 昨日はShinnosuke Akitaさんの「Oracle DatabaseのASMディスクグループの空き容量を調べる」でした。 普段ORACLEとMySQLを使用してるとよくSQL*PlusでもSHOW構文を使ってしまって、こうなっちゃうので…

ORACLE CMP$テーブルとは・・

あるスキーマのLOBカラムを持つテーブルを洗い出していたときに、 たまたまCMP3$104964というテーブルが引っかかった。 このようなテーブル作った覚えはなかったが、再度検索するとすでなくなっていた。。 ORACLE内部でcreate tableしてすぐにdrop tableして…

JPOUG> SET EVENTS 20151017でLTしました

だいぶ遅くなってしまったが、JPOUG> SET EVENTS 20151017でLTをさせていただきました。 あまり登壇する機会はないので非常に緊張しました。 Oracle Database Standard EditionでセミオンラインDDL from kenken0807 www.slideshare.net 内容としては、 oracl…

オンラインでサプリメンタルロギングを有効にしたメモ

とある理由でOracleサプリメンタルロギングを有効にすることがあり、 本番サーバのトラフィックがある中で実行してみたのでメモ。 実行するSQLは以下、 alter database add supplemental log data (primary key,unique) columns; すでに最小サプリメンタルロ…

Oracle Standard EditionでActive Session History (ASH)っぽくグラフ化する

kenken0807.hatenablog.com 前回の記事でASHっぽく分析するようにMySQLにv$sessionを投入していたが、 今回はそれをMuninにてグラフ化することでOracle Enterprise Managerの平均アクティブ・セッションのグラフっぽくする。 ↓Oracle Enterprise Managerの平…

Oracle Standard EditionでActive Session History (ASH)っぽく監視、分析する

Oracle Database Standard EditionではASHはもちろんできない。 なので、それっぽい監視の仕組みを導入している。 仕組みとしては、 1、30秒毎にV$SESSIONの情報を取得しMySQLに突っ込む 2、MySQLのデータをMuninでグラフ化 1、30秒毎にV$SESSIONの情…

オンライン・アプリケーション・アップグレードヒント句とは

コメント を見ているとオンライン・アプリケーション・アップグレードのヒントってのでいくつかあったけど なにかよくわからなかったから試してみた。 1.CHANGE_DUPKEY_ERROR_INDEXヒント INSERT操作およびUPDATE操作時に指定した索引に対して一意キー違反が…

Oracle どんなに巨大なテーブルでもカラム定義変更を即時で完了させる方法

巨大なテーブルでカラムの定義変更中はDML処理が enq: TM - contentionやlibrary cache lockなどで待機してしまう。 待機させないためにカラム定義変更を即時で完了させることのできる方法をまとめたメモ。 とあるテーブル SQL>desc ab Name Null? Type ----…

インデックスのshrinkとrebuildの違いを検証

ANALYZE INDEX VALIDATE STRUCTUREでインデックス情報を取得し違いをさくっと検証した。 注意:ANALYZE INDEX VALIDATE STRUCTURE 実行中のDML処理は、ANALYZEによるロックが開放されるまで待機してしまう。 現在のインデックスの状態 SQL> analyze index TE…

バインド変数が使用できないバッチ処理の共有プール肥大化対処方法

とあるバッチ処理がバインド変数を使用できずに共有プールが肥大化していた。 そのためstatspackを1時間毎に取得していたが、1時間では取得処理が終わらない状況になってしまった。 select pool, name, bytes/1024/1024 MB from v$sgastat where pool = 's…

常駐接続プーリング(DRCP)で共有プールが肥大化する

前回導入したDRCPを使用しているOracleのshared_poolが異常な勢いで増えてしまったため、 ORA-04031: 共有メモリーの○○バイトを割当てできません が発生してしまった。 SQL文でバインド変数を使用してないところも多いので共有SQL領域が増えているのかなと思…

Oracle デフォルト設定でテーブルがselectされてるかさくっと調査する

とあるテーブルがselectされているか教えてほしいと言われたので、 標準監査の設定をしていなかったが明示的にaudit_trailをNONEにしていなければ 11gR2からaudit_trailがデフォルトではDBとなっている。 確認 >show parameter audit_trail NAME TYPE VALUE …

Oracle NULLも容量として加算されるテーブル構成

NULL許容のカラムの後にNOT NULL制約のついたカラムがあるとNULL値も容量を使ってしまう。 テーブル作成 create table nullfirst ( id number, [PRIMARY KEY] id2 number, [NULL許容] id3 number, [NULL許容] id4 number, [NULL許容] idnotnull number not n…

シーケンスを再作成せずに指定した番号に進める方法

シーケンスを作成した際に、初期値はstart withで指定してあげた値から始めることができる。 create sequence TEST_SEQ start with 10000; select SEQUENCE_NAME ,MIN_VALUE,CACHE_SIZE,LAST_NUMBER from user_sequences; SEQUENCE_NAME MIN_VALUE CACHE_SIZ…

Oracle 読み取り専用ユーザー(READ ONLY)の作成

とあるユーザに対して、読み取り専用でユーザーを作成したのでメモ。 書き込み兼読み取りユーザー・・TEST 読み取りユーザー・・TEST_READONLY TESTユーザーの読み取り専用ユーザーTEST_READONLYを作成する。 すでにTESTユーザーには複数のテーブルが存在し…

Oracleデータベース作成時の自動メンテナンスタスクとは

Oracle11gR2でDBCAを使用してデータベースを作成していると、↓のような自動メンテナンスタスクのチェックボックスを選択する項目がある。 この自動メンテナンスタスクはもちろんONにしたほうが良いが(defalt ON)何をやっているのか調べてみた。 自動メンテナ…

Oracle Standard Editionで可能なフィジカル・スタンバイ・データベース検証(基本スタンバイ)

ディザスターリカバリ用に基本スタンバイの検証を行う。 プライマリデータベース(P)とスタンバイデータベース(S)の冗長構成を作成することができ、プライマリデータベースにて作成されたアーカイブログを逐次スタンバイデータベースへ転送し適用するとい…

Oracleリスナーの追加方法メモ

Oracle Listenerを追加する際にいつもわからなくなるのでメモ。 環境はOracle 11.2.0.4。 1.動的リスナー追加 2.動的リスナーを大量に追加 3.静的リスナー追加 1.動的リスナー追加 LISTENER2とLISTENER3を追加する listener.ora編集 vim listener.ora LISTEN…

Oracle Textを使用したチェックボックスでの検索

Oracle(RDB)でのチェックボックス検索はけっこう鬼門だったりする。 チェックボックスで持っている項目をカラムとして列持ちしてあげると 項目がなくなったり追加の際にカラム自体の追加、削除をすることになり、表ロックがかかりメンテナンスが難しい。 ま…

Oracle Standard Editionでも使えたフラッシュバックデータアーカイブ

まず、フラッシュバックデータアーカイブとは その存続期間中、表に対するすべてのトランザクションによる変更を追跡および格納できます。 レコード・ステージ・ポリシーと監査レポートのコンプライアンスに役立ちます。 Oracle® Databaseアドバンスト・アプ…

Oracle常駐接続プーリング(DRCP)を導入して苦労したメモ(3)

4.DRCPの監視と調整方法 まず、DRCPおいて監視すべき項目を洗い出す。 ・ listenerへの確立回数と拒否回数 ・ 現在のプールサーバ数と使用されているプールサーバ数 ・ DRCPへのリクエスト回数とウェイト回数 これらの項目をグラフ化すれば、DRCPはオンライ…

Oracle常駐接続プーリング(DRCP)を導入して苦労したメモ(2)

2. 初期プールサーバ数ではまったこと 初期プールサーバ数デフォルトで検証 DBA_CPOOL_INFOビューで確認すると、 maxsizeがデフォルト40であり、これは変更しなくてはいけないものだというのはわかるが、 minsizeがデフォルト4で接続が足りないとincrsizeが…

Oracle常駐接続プーリング(DRCP)を導入して苦労したメモ(1)

うちのシステムでPHPを使用していて専用サーバ接続で結構な頻度で接続切断を繰り返しているので、サーバリプレースのタイミングでDRCPを導入することになり、いろいろと嵌ったのでメモ。 環境は11.2.0.4 SEone。 インストール方法と設定値確認方法 初期プー…

Oracleでカラムの順序が重複したインデックスの検索の違いを見る

カラム順序が重複したインデックスが存在していると、検索にどのような違いがでるのか、また不要であれば削除すればよいか確認する。 環境は11.2.0.4 SEone。 読み込みブロック数を確認する まず、以下テーブル(行10000件)を用意。 SQL> desc INDTEST; 名…

OracleからMySQLへODBC経由のデータベースリンクで接続したメモ

Oracle Standard Editionで可能なDatabase Gateway for ODBC (DG4ODBC)を使用してMySQLに接続したのでメモ。 Database Gateway for ODBC (DG4ODBC)を使用すれば ODBC接続でOracleから他のDB(MySQL)などにデータベースリンク経由で接続可能となる。 環境 DB…

Oracleでページング処理を高速化する方法

oracleでのページング処理を行う場合、指定した件数のみのフェッチ回数で処理終了するようにSQLを記述してあげることで高速に処理できます。 mysqlのlimit句のような動きが可能になります。 そのためには必要なことは ・ 適切なカラムに対してインデックスを…

Oracle SEでINSERT TRIGGERとVIEWで作るパーティション

oracleのパーティション機能はoracle EE+optionで使用可能です。 これをなんとかstandard editionで実現できないかと模索。。。 insertとselectのみであればtriggerとviewを使用し、 パーティション風の機能の実現可能だったのでメモ。 バージョンはoracle 1…

Oracle SEでインデックス圧縮について考える

oracleの運用をしていると問題になることの一つは容量不足。 特に頻繁にupdateされるインデックスの容量増加率は激しい。 EE+Oracle Advanced Compressionを使用すれば色々できるが。。。。 それは私にとっては夢の話なのでw oracle SEで可能な圧縮について…