OracleとMySQLを使用しているとカラム変更の動作がいろいろと違ってくるので、 どっちがどっちかわからなくなることか多いのでまとめ。 OracleDatabaseSE(11.2.0.4)とMySQL5.6.29(INNODB)で調査。 1. 実行可能なものは(可) 2. 実行が即時で終了するもの…
結構前にJPOUGでLTしたOracleDatabaseセミオンラインDDLを作成しました。 ベンチマークツールのswingbenchで試したりしたのですが、たぶん動くはず。。。 OracleDatabase11gR2に対応。 仕組みは以下を参照 kenken0807.hatenablog.com github.com できること…
スキーマMVIEW_MOTOのテーブルTESTに対して スキーマMVIEW_SAKIにFAST REFRESH ON COMMITモードのマテリアライズドビューを作成する MVIEW_MOTOにテーブルとマテリアライズドビューログの作成 CREATE TABLE test (id NUMBER,id2 NUMBER,del_flg NUMBER,CONST…
前回記述したブログを元に解析ツールを作成した。 kenken0807.hatenablog.com Oracle-ArchiveLog-Analyzer github.com MySQLのmysqlbinlogのような感じでLogMinerを使用してトランザクションごとにコミット順にテキストフォーマットで表示する。 インストー…
アーカイブログやオンラインREDOログからLogMinerを使用して、実行されたSQLを調査する際に 不要な内部SQLがあったりして確認が手間だったりする。 不要な内部SQLを取得せずにトランザクションごとにまとめて、コミットした順番で表示させる。 前提 サプリメ…
sqlloaderで既存のシーケンスのNEXTVALを使用には コントロールファイルの対象カラムにexpression句と対象のシーケンスを指定してあげる。 以下例ではtest_seqidカラムにSEQ_SEQTEST.NEXTVALの値を格納する。 コントロールファイルを作成 $ vim test.ctl LOA…
ソースコード隠して簡単なスクリプトを書くことになり、 どうしようかと思ってググってたらSHCというシェルスクリプト用のコンパイラを見つけたので さっそく試してみた。 シェルスクリプトをCのコードに変換して、バイナリ化してくれるみたい。 環境 CentOS…
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監査(例:KANSA)、KANSAユーザにはselect権限のみ ↓ ログインした段階でログイン情報をテキストに出力 ↓ ログオフした段階でいままで実行したORAUSERユーザのオブジェクトへのクエリをテキストに出力 ↓ そ…
JPOUG Advent Calendar 2015の3日目のエントリーです。 昨日はShinnosuke Akitaさんの「Oracle DatabaseのASMディスクグループの空き容量を調べる」でした。 普段ORACLEとMySQLを使用してるとよくSQL*PlusでもSHOW構文を使ってしまって、こうなっちゃうので…
あるスキーマのLOBカラムを持つテーブルを洗い出していたときに、 たまたまCMP3$104964というテーブルが引っかかった。 このようなテーブル作った覚えはなかったが、再度検索するとすでなくなっていた。。 ORACLE内部でcreate tableしてすぐにdrop tableして…
だいぶ遅くなってしまったが、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; すでに最小サプリメンタルロ…
kenken0807.hatenablog.com 前回の記事でASHっぽく分析するようにMySQLにv$sessionを投入していたが、 今回はそれをMuninにてグラフ化することでOracle Enterprise Managerの平均アクティブ・セッションのグラフっぽくする。 ↓Oracle Enterprise Managerの平…
Oracle Database Standard EditionではASHはもちろんできない。 なので、それっぽい監視の仕組みを導入している。 仕組みとしては、 1、30秒毎にV$SESSIONの情報を取得しMySQLに突っ込む 2、MySQLのデータをMuninでグラフ化 1、30秒毎にV$SESSIONの情…
コメント を見ているとオンライン・アプリケーション・アップグレードのヒントってのでいくつかあったけど なにかよくわからなかったから試してみた。 1.CHANGE_DUPKEY_ERROR_INDEXヒント INSERT操作およびUPDATE操作時に指定した索引に対して一意キー違反が…
巨大なテーブルでカラムの定義変更中はDML処理が enq: TM - contentionやlibrary cache lockなどで待機してしまう。 待機させないためにカラム定義変更を即時で完了させることのできる方法をまとめたメモ。 とあるテーブル SQL>desc ab Name Null? Type ----…
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を使用しているOracleのshared_poolが異常な勢いで増えてしまったため、 ORA-04031: 共有メモリーの○○バイトを割当てできません が発生してしまった。 SQL文でバインド変数を使用してないところも多いので共有SQL領域が増えているのかなと思…
とあるテーブルがselectされているか教えてほしいと言われたので、 標準監査の設定をしていなかったが明示的にaudit_trailをNONEにしていなければ 11gR2からaudit_trailがデフォルトではDBとなっている。 確認 >show parameter audit_trail NAME TYPE VALUE …
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…
とあるユーザに対して、読み取り専用でユーザーを作成したのでメモ。 書き込み兼読み取りユーザー・・TEST 読み取りユーザー・・TEST_READONLY TESTユーザーの読み取り専用ユーザーTEST_READONLYを作成する。 すでにTESTユーザーには複数のテーブルが存在し…
Oracle11gR2でDBCAを使用してデータベースを作成していると、↓のような自動メンテナンスタスクのチェックボックスを選択する項目がある。 この自動メンテナンスタスクはもちろんONにしたほうが良いが(defalt ON)何をやっているのか調べてみた。 自動メンテナ…
ディザスターリカバリ用に基本スタンバイの検証を行う。 プライマリデータベース(P)とスタンバイデータベース(S)の冗長構成を作成することができ、プライマリデータベースにて作成されたアーカイブログを逐次スタンバイデータベースへ転送し適用するとい…
Oracle Listenerを追加する際にいつもわからなくなるのでメモ。 環境はOracle 11.2.0.4。 1.動的リスナー追加 2.動的リスナーを大量に追加 3.静的リスナー追加 1.動的リスナー追加 LISTENER2とLISTENER3を追加する listener.ora編集 vim listener.ora LISTEN…
Oracle(RDB)でのチェックボックス検索はけっこう鬼門だったりする。 チェックボックスで持っている項目をカラムとして列持ちしてあげると 項目がなくなったり追加の際にカラム自体の追加、削除をすることになり、表ロックがかかりメンテナンスが難しい。 ま…
まず、フラッシュバックデータアーカイブとは その存続期間中、表に対するすべてのトランザクションによる変更を追跡および格納できます。 レコード・ステージ・ポリシーと監査レポートのコンプライアンスに役立ちます。 Oracle® Databaseアドバンスト・アプ…
4.DRCPの監視と調整方法 まず、DRCPおいて監視すべき項目を洗い出す。 ・ listenerへの確立回数と拒否回数 ・ 現在のプールサーバ数と使用されているプールサーバ数 ・ DRCPへのリクエスト回数とウェイト回数 これらの項目をグラフ化すれば、DRCPはオンライ…