kagamihogeの日記

kagamihogeの日記です。

Oracle DBA & Developer Days 2011セッション俺的まとめ

Oracle DBA & Developer Days 2011:セッション動画を一挙公開! で公開されているセッションの自分用まとめです。それぞれのセッションの動画ないしPDF資料を見て、おおよそのまとめプラス個人的な感想やメモを書いています。なお、興味がある分野もしくは余り良く知らないけど知りたいセッションについては講演の動画を見ていますが、そうでないものはPDFの資料をざっとみて「ふーん」で終わらせています。また、テキトーなことを書いている可能性もあるので、何かおかしくね?と思われた場合は、リンク元のセッション資料を確認して頂ければと思います。まぁー所詮は個人ブログのメモなんでね。

全資料はまだ見終わってないんですが、ソレナリの量見終わったのでここで一旦公開する。モチベーション次第ですが見終わったヤツから追記していきたい。

Database 基礎

複雑なSQLチューニングもラクにする!SQL監視機能とは

OracleのEnterprise Manager(以下、EM)のGUIで、おかしなクエリがあるのかどうか発見できるのがラクになりましたよ的な。従来はv$なんたらやStatspacやらを駆使してやってたのを、EMが最初からグラフィカルな表示で見せてくれるんで、見た目的にもやさしくなりましたよと。

実践!バックアップ・リカバリ 〜ユーザー手動 VS RMAN コマンドライン対決〜

Oracleのバックアップの基礎知識と、Oracleのバックアップツールというかユーティリティソフトというかそういう位置づけのRMANの解説。普段あんまこういう運用のためのツール使う機会少ないんで、割と新鮮な感じ。

ここからはじめよう Oracle PL/SQL入門

PL/SQLを何も知らない人向けのセッション。PL/SQLが何モンなのか、実際のコード、開発に当たって知っといた方が機能など。俺はPL/SQLそんなに使ったことないんですが、SQLの連ちゃんの処理なら、それなりに便利な言語かなと。ただ、分岐やら例外処理やらのロジックが入りだすと、中核部分はDBに対する追加更新だけだとしても、Javaなり何なり汎用の言語で書きたいよねぇ、というのが正直なところ。

Database 現場テクニック

実践!Oracle Enterprise Managerを使用した、簡単データベース管理

EM便利なんでみんな使おうねという話。GUIならコマンド覚えてなくてもまぁなんとなくの操作覚えてればなんとかなっちゃうよねみたいな。

実践!Oracle Enterprise Managerを使用した、簡単データベース・チューニング

EMからOracleのボトルネックになってる箇所をさぐりあてるにはこういう操作になりますよというデモンストレーションの意味合いが強いセッション。あんまりEM使ったことないんでデモ動画見てへぇーさすが有償のDBは違うっすねぇといった感じでした。

クラウド基盤構築のための Oracle Enterprise Manager

Oracle EM 12cはプライベートクラウド環境構築を主眼にしてますよ、という主旨のセッション。Oracleさんはクラウド方面ではこういう商品ラインナップで攻めてくんですねぇといったところ(無関心) 俺のような木っ端プログラマにはプライベートクラウドはまだまだまぁうんそうだねとしか……

次世代統合システム管理、データベース管理は次期Oracle Enterprise Managerでこう変わる!

これも、Oracle EM 12cではプライベートクラウド強化しますよ、その具体的な機能概要はこんなところですよ、というセッション。例によってまぁうんそうだねといった感じですが、ただまぁその副産物というか結果としてDBの監視やおかしなところを見つけるための管理機能が強化される点については歓迎ポイントです。

本当は難しくない! Oracle Database の負荷テスト

Oracleが提供してる負荷テストツールのラインナップと、こういうケースではこういうツール使ってテストの効率上げてくださいね、という紹介が主な内容。なかなかオモシロそうなツールが色々揃ってるんで機会があれば使ってみたいなといったところ。

Oracle Database 11g Release 2へのアップグレード手順と秘訣を直伝

重要だけど必要としない人には、まぁ……という類のもの。アップグレードするときは事前の検討と準備をちゃんとしましょうね的な内容。

PL/SQL上級テクニック 前編・後編

UTI_FILEでファイル入出力、ディレクトリ・オブジェクトと絡めてアクセス制限強められます、コンパイルの最適化、メモリ常駐で解析スキップで起動速度高速化、ネイティブコンパイルやら表関数やらの高速化テクニック。表関数のとこの、入力テーブルを読み取り専用にして、1レコードずつ処理でリソース節約して、更にパイプラインでパラレル化することで早くする、てのが中々面白かった。

Oracle SQL Developerの使い方および最新機能ご紹介

この無償のソフトには何時もお世話になってます OracleのSQL Developerが便利 - kagamihogeのblog

無償IDE Oracle JDeveloperではじめるリッチクライアント開発

このテの画面ポチポチドラッグアンドドロップでUI作れて生産性向上みたいなのは胡散臭さ爆裂でホントかよとしか思わないのだけど。ツールが提供してる範囲内であればそんなに誇張表現でもなかったりするんだけどねぇ。でもまぁ結局主にはEclipse使うのであまり関係ないですよね。

SQL文でできる!Oracle Databaseの全文検索機能「Oracle Text」の活用法

ためしてみた - Oracle TextでSQLでPDFを全文検索 - kagamihogeのblog

実践!高可用性システム構築 〜RAC基本編〜

RACてのはこういうアーキテクチャでスケールアウトによるスケーラビリティ向上と複数ノードによる可用性の向上を実現してますよ、という話。RACは、基本的にはシングルインスタンスのノードがタクサン増えて、ストレードは共有するんでデータは同じもんが見えるし更新できるよと。RACはちょくちょくお世話になってたんですが、基本的な仕組みはチンプンカンプンのまま使ってたりしたんで大変勉強になりました。

実践!高可用性システム構築 〜RAC詳細編 〜

複数ノード間でのキャッシュ一貫性はCache Fusionによって実現。接続したノードでキャッシュヒットすればそのデータ返すのはRACでもシングルインスタンスでも同様。キャッシュミスした場合、他ノードに問い合わせるのが大きな違い。その他ノードのリモートキャッシュにあれば返すし、無ければディスクから読んだ上でリモートキャッシュから返す。可用性の方は、色んな監視の仕組みによって実現してる。インスタンスを監視してるやつとか、ハートビートで他ノードの生存監視したりとか。

解説!Oracle RACへの接続ロードバランスと接続フェイルオーバー

まず基本的な知識として、OracleRAC構成とシングル構成とで、クライアントのアプリ側からはなぜ同じ方法で接続できるのかの解説がある。その上で、RACのロードバランスとフェイルオーバーをどういう仕組みで実現しているかを解説している。中間にリスナがプロキシ的に立ち回ることで上手い事やってるわけですな。Oracleのリスナーの役割はイマイチわかってなかったりしたんですが、RACとの絡みで解説されることで理解が深まりました。

実はシンプル!RACチューニングの考え方

RACはCache Fusionが頻発すると激重で言うほど早くないし、というのは都市伝説ですよというのが主旨。ボトルネックになるのはやはりアプリやDB設計の問題でありそこはちゃんとやってねという話で、チューニング基本的な考え方は、シングルインスタンスでもRACでも変わらない。なぜなら、RACはバッファとなるキャッシュを増やすもんであって、ストレージI/Oを劇的に改善するようなもんではなく、外部記憶装置へのアクセスをなるべく減らしたほうが速くなるのはシングルインスタンスだろうとRACだろうと変わりないよね、というお話。

実践!Oracle Data Guard の導入から有効活用までのポイント解説

Data Guardとは、元は計画外停止をフェイルオーバする機能からスタートして、その後Oracleのメジャーバージョンアップとともになるべく止まらずにOracleの機能を継続させる仕組みを提供するための代物になっている。REDOログをプライマリからスタンバイに転送してREDO適用してる。それと、導入・運用するにあたっての考慮したい点の解説。転送を同期か非同期にするかが一つの大きなポイントのようですね。最後にサラッと書かれてたけど、スナップショットスタンバイつって、スタンバイ機がアクティブから本番データをコピーされてきてテストのトランザクションはフラッシュバックで戻しちゃうことでスタンバイ機を本番データに近い状態でテストに使えますよ、てのはちと魅力的。

DB管理者に知って欲しい!構成例から知る Oracle 高可用性ベストプラクティス

DBが絡む箇所と障害ってのはこういうのがあるんでそれらに対してOracleはこういう製品を揃えてますよ、なのでDBAはかけられるお金とカバーしたい対障害レベルをにらみながら、適切なものを選んでね、といったところか。あとは製品の概要説明で、ASMがディスクのデータ保護プラスミラーリングやらストライピングで効率的な配置やら、Data Guardが↑のようなことプラスリソース有効活用てことでActive Data Guard(EE有償オプション)はプライマリから同期されたセカンダリで集計処理とかを走らせる、Golden GateがData Guardとはまたちょっと違う仕組みでデータコピーします、Flashbackがオペミスとかで消しちゃった的な極短期のデータ復旧しますよ、とかそんな感じ。

データベースを高速につなぐ最新技術 Oracle GoldenGate の仕組みと性能を徹底解説!

GoldenGateの仕組み概要。DB間のデータ連携を伴う要件に使えて用途は色々、レプリケーション、統合/移行、リモートコピー、DWHなど。データ連携イメージは、REDOログファイルからTrailファイルというGoldenGate固有の中間ファイルに変換&吐き出して逐次ターゲットに送信し、TrailをSQL文に戻して更新。TrailファイルのサイズはREDOログの半分から1/3になる。チェックポイントで各プロセスがどこまで処理したか記録してるのでそれを基に障害復旧できる。

データベース不正アクセス検知の特効薬!!『Oracle Database Firewall』

2010年上半期でも相変わらずSQLインジェクション攻撃が多い。SQLインジェクションの解説、デモ、修正に時間がかかりがちな背景。Oracle Database Firewallは不正アクセス制御&データベース監査が目的。アプリとDBの間でSQLの解析をしてブロッキング、収集したSQLのモニタリング。

実践!コストベース・オプティマイザとの賢い付き合い方

CBOの役割は、データ量など環境の変化に応じて最適な実行計画を生成すること。CBOの実行計画生成に使用する入力データは、オプティマイザ統計・SQLテキスト・オブジェクト構造・パラメータ。動的なオプティマイザ統計の変更の影響が大きい。自動オプティマイザ統計情報収集が定期的に自動更新。注意点1 自動収集時間帯とバッチ処理とをかぶらないように。2 適切なタイミングと定期的な収集が一致するとは限らない。実行計画の固定方法1 ヒント句使用。2 ストアドアウトライン。11gからはSQL Plan Managementが利用可能。EMのSQLチューニングアドバイザリアルタイムSQL監視などGUIのツールがトラブル発生の対処に有用。

.NET + Oracle Database 次世代アプリケーション開発手法を徹底解説

.NETは俺の中では然程関心を向けるテクノロジじゃないこともあって資料をさらりと見た程度。大雑把にまとめれば、DBとの通信・接続はなるべく減らすのが性能向上のカギですよ、ODP.NETにはそのために有益な機能がありますよ、的なことが書いてある。このことはDBに限らずミドルウェアなり何なり外部リソースとの通信が発生するところは全般的にそうだけども。

Java

Javaパフォーマンス・トラブル解決の実際

このセッションは実際のトラブル事例3つを基に、どのように原因特定から解決に至ったかのプロセス・原因となぜそういう状況が発生したかの解説・対処方法、を述べている。このトラブル解決にかける執念はすげーなーと感心するばかりだが、この3つだけでもそれぞれ異なる症例や条件なため、トラブルシューティングの類型化が難しいというのは筆者も同じ感想のようで。結局のところ、こういうのに対処するには、思い込みや推測を捨てて起きている事実を丹念に積み重ねていくしかないんですかねぇ。

WebLogic Server/アプリケーション・グリッド

オラクルコンサルが実施する WebLogic Server のパフォーマンスチューニング

アプリケーションサーバが性能上のボトルネックとなるパターンはいくつか挙げて、WebLogicのパラメータ設定変えることで改善しますよな話。セッション内容の性質上、グラフを多用してるんですが、計測をして数値をもとに判断しましょうね、というのは地味に重要だなと。

サポートエンジニアが語る!WebLogic Scripting Toolを活用したWLSの管理・監視方法

WebLogic使ったことないんでアレですが……JythonベースのスクリプトでMBeanにアクセスして運用監視やらGUIのコンソールの操作をスクリプトで自動化やらに使えますよと。

Oracle Exalogic Elastic Cloud 詳説 〜 Exalogic の全貌 〜

ハード、ミドルウェア、DB、APサーバ、運用監視などなどフルスタック(という表現が適切かどうかわからんが…)をゼンブOracleが絡んでる製品で固めて一括で面倒みます、それにExalogicて名前付けました、で、その中身はこんな感じです、という宣伝といったところか。オープン化(死語)したはいいけど色んなレベルの技術抑えないといけなくて面倒なんで誰か頼む的な需要向けなんですかねぇ? 予算とOracleにブン投げする度胸があれば検討してみてもいいと思うけど……

Oracle Coherence インメモリ・データグリッドの仕組みと活用

ひとことで言えばサーバ横断の分散KVS。アプリ側からはjar突っ込むだけらしい、REST APIも用意されと使い勝手は悪くなさそう? 複数JVMにデータ分散配置とかすげーな〜んでアプリからは透過的にデータアクセスできますよと。可用性は物理的に別マシンにコピーを持って、復旧もそこからしますよと。で、その仕組みの上でパラレル処理したり分散キャッシュ持ったりするのに使えるらしい。データアフィニティとかRDB(というかSQL?)との機能差を埋めるための仕組みがあるのがOracle製品らしい感じですかねぇ。適用事例が幾つかあるんですが、フロントのアプリと永続化層(DB)との中間にCoherenceをカマして性能上げたり対障害性上げたりって用途に使われてるようですね。とりあえずさわってみた→Oracle Coherenceためしてみた - kagamihogeのblog

Oracle Coherence を使用したデータグリッド開発

Oracle Coherenceを使用したい開発者への入門的な内容。開発デモ見る限りCoherenceサーバ起動して接続してMap的なインタフェースでアクセスできますよ、てのは大抵のJavaのキャッシュライブラリではお馴染み。シリアライズ・デシリアライズに相当するPortableObjectインタフェースは自前で実装しないといけないのかな? オブジェクトのメモリ上での関連は自分で作らないとね、という思想なのかね。基本はコピペで良いみたいだが。運用では、JConsoleでCoherenceをMBeanとして監視できる。

オラクルコンサルが語る!超高速!Oracle Coherenceの高可用性を支える多様な障害検知アーキテクチャ

高可用性をうたってる分散KVSはあんまないけどOracle Coherenceはそこもサポートしますよ、という話。このセッションは特に障害検知を取り上げる。プロセス障害、マシン・ネットワーク障害、JVMハングそれぞれの原因に対し別々の検知機構を持っている。TCP Ring-TCPコネクションの確立の有無で障害有無を判断する。IP Monitor-ランダムに選んだOSに対しping(内部的にはJDKのInetAddress#isReachableに依存)を打ち合う。パケットデリバリタイムアウト-プロセスもマシンも生きてるけどJVMハングみたいなのは、Coherenceクラスタ間通信で使ってるプロトコルのパケットのACKが返ってこないなら障害とみなす。

ID管理/セキュリティ

不正アクセスからデータを守れ!!〜OracleDBの特権ユーザ管理、機密情報の安全な管理、暗号化

何が驚いたといってレイヤに応じて攻撃手段を複合的に代えて段階的に攻撃を仕掛ける手口ですよ。てなわけでレイヤやリソースごとに異なる防御手段が必要ですよ、ということでOracle DBまわりの製品紹介をしてる。