kenken0807_DBメモ

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

ORACLE SE

Oracle SEでの運用いろいろ@JPOUG in 15 minutes #1

JPOUG in 15 minutes #1 | Japan Oracle User Group (JPOUG)で自分がやってきたOracle SEでの運用方法について話をさせてもらいました。 Oracle Database Standard Editionでの運用いろいろ from kenken0807 www.slideshare.net 主な話としてはSEでASHっぽく…

OEM再作成のエラー対処方法

RMANで別ホストに移行した時にOEMの作成でいろいろ嵌ったのでメモ。 emca -config dbcontrol db -repos recreate実行時 パターン1 設定: ORA-01031: ???????-?????????? ・ ・ ・ 2014/10/09 9:58:40 oracle.sysman.emcp.util.GeneralUtil initSQLEngineLoa…

Oracle shrinkする上での注意点

Oracleを使用していると、断片化がつらい。 頻繁に更新しているインデックスの断片化が特につらい。 そして表領域を圧迫していく。。 そういう時にEnterpriseEditionであればindex rebuild onlineなんてできるけど、 StandardEditionだとできないのでshrink…

RMANで同一サーバ上にデータベースを複製する

あるOracleDBを同一サーバ上に複製させるメモ。 環境は12cSE2。 現在、稼動中のインスタンス名をtestdb、複製先DBをcopydbとする。 準備 初期化パラメータをコピーして、リネーム cp -p $ORACLE_HOME/dbs/inittestdb.ora $ORACLE_HOME/dbs/initcopydb.ora パ…

基表にSELECT権限がないVIEWに対して実行計画を取得する

基表に対してSELECT権限がないVIEWに対してEXPLAIN PLAN FORを使用して実行計画を取得しようとすると SQL> explain plan for select * from test.test1_view; explain plan for select * from test.test1_view * 行1でエラーが発生しました。: ORA-01039: ビ…

12cから増えたオンライン操作をOracle SE2で試した

Oracle 12cの新機能のオンライン操作をOracle Standard Edition2でできるか確認したのでメモ。 ↓を基にいろいろ確認した。 docs.oracle.com バージョンはOracle 12.1.0.2 SE2 オンラインでのデータファイル移動 結果: × これはもちろんできません。 alter da…

Oracle database 12cマルチスレッドを試してみた

12cからの新機能のプロセスのマルチスレッド化を試してみました。 今回はバックグラウンドプロセスではなく専用サーバのスレッド化についてです。 環境はOracle database 12.1.0.2 SE2 マルチスレッドの有効化 初期化パラメータのTHREADED_EXECUTIONとUSE_DE…

Oracle Database Connect 2016(JPOUG) でDRCPについてLTしました

JPOUGで2回目のLTしました。 さすがに1回目より緊張しないかなーと思たけど、 500人以上の会場の規模にさすがにビビった。。。 イベント内容 Oracle Database Connect 2016 | Japan Oracle User Group (JPOUG) スライド Oracle常駐接続プーリング(DRCP)を…

ORACLEでテーブルごとのDML回数を取得する

テーブルごとの1時間あたりのDML(INSERT,UPDATE,DELETE)の平均を取得するために考えた方法。 確認手段としてDBA_TAB_MODIFICATIONSを使用する。 ALL_TAB_MODIFICATIONS 以下のように確認できる。 SELECT table_name,inserts,updates,deletes,to_char(time…

OracleSERAC+ASMのRMANバックアップから非ASMのシングル環境へリストア

OracleSERAC+ASMのRMANバックアップから非ASM(ファイルシステム)のシングル環境へリストアしたのでメモ。 環境 Oracle11.2.0.4 DB_NAME:orcl 前提 RMANバックアップは毎日0時にフルバックアップを取得(backupset plus archivelog) delete noprompt obsol…

ORACLE RMANで複製データベースの作成

RMANでアクティブなデータベースから同じSIDを持った複製データベースを作成したのでメモ。 複製先サーバ側の設定 複製先サーバでOracleインスタンスが起動できる状態にしておく 同じバージョンORACLEソフトウェアのインストールをしておく 環境変数も設定す…

データリカバリアドバイザを使用したRMANリカバリ方法(ユーザ表領域)

データリカバリアドバイザを使用してリカバリを行うと楽に復旧可能だったのでメモ。 Oracle RACでは対応してないみたい、シングルインスタンスのみ対応。 環境はOracle database 11.2.0.4 SEone。 以下条件で実施している。 1. 高速リカバリ領域の有効化(バ…

Centos7にORACLE database11.2.0.4 SEoneをさくっとサイレントインストールしてみる

GUIを使用せずに簡単にORACLE DATABASEを作成する。 SIDはorclで作成。 環境 今回はdockerを使用する。 dockerのデフォルトshmsizeが64MBで小さすぎてORACLEインスタンス起動できなかったので --shm-sizeを指定できるversion1.10を使用。 # docker --version…

OracleとMySQLのalter table column動作の違い(データがある場合)

OracleとMySQLを使用しているとカラム変更の動作がいろいろと違ってくるので、 どっちがどっちかわからなくなることか多いのでまとめ。 OracleDatabaseSE(11.2.0.4)とMySQL5.6.29(INNODB)で調査。 1. 実行可能なものは(可) 2. 実行が即時で終了するもの…

Oracle-semi-onlineDDL作成した

結構前にJPOUGでLTしたOracleDatabaseセミオンラインDDLを作成しました。 ベンチマークツールのswingbenchで試したりしたのですが、たぶん動くはず。。。 OracleDatabase11gR2に対応。 仕組みは以下を参照 kenken0807.hatenablog.com github.com できること…

Oracle 別スキーマ間でFAST REFRESH ON COMMITモードのマテリアライズドビューを作成する

スキーマMVIEW_MOTOのテーブルTESTに対して スキーマMVIEW_SAKIにFAST REFRESH ON COMMITモードのマテリアライズドビューを作成する MVIEW_MOTOにテーブルとマテリアライズドビューログの作成 CREATE TABLE test (id NUMBER,id2 NUMBER,del_flg NUMBER,CONST…

Oracle オンラインREDOログとアーカイブログの解析ツール

前回記述したブログを元に解析ツールを作成した。 kenken0807.hatenablog.com Oracle-ArchiveLog-Analyzer github.com MySQLのmysqlbinlogのような感じでLogMinerを使用してトランザクションごとにコミット順にテキストフォーマットで表示する。 インストー…

Oracle LogMinerを使用してトランザクションごとコミット順に並び替えて表示する

アーカイブログやオンラインREDOログからLogMinerを使用して、実行されたSQLを調査する際に 不要な内部SQLがあったりして確認が手間だったりする。 不要な内部SQLを取得せずにトランザクションごとにまとめて、コミットした順番で表示させる。 前提 サプリメ…

sqlloaderで既存のシーケンスのNEXTVALを使用する

sqlloaderで既存のシーケンスのNEXTVALを使用には コントロールファイルの対象カラムにexpression句と対象のシーケンスを指定してあげる。 以下例ではtest_seqidカラムにSEQ_SEQTEST.NEXTVALの値を格納する。 コントロールファイルを作成 $ vim test.ctl LOA…

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…