Oracle Database のお話 

3月 30日 @ 19:00 ~ 20:00 主催:すぎむら

資料

https://speakerdeck.com/sugitk/oracle-database-falseohua 
speakerdeck公開版となっています。

Oracleのバージョンなどの前提条件

  • 12c R1 or R2が資料の話です。
  • プラチナの試験だと、LTがされた日付では12c R1がバージョンになります。

講演

Databaseとは

  • サーバとクライアントがあってSQLでやりとりする
  • データを表として保持する
  • 壊さないようにする仕組みが整っている
    • トランザクションの保護 読み取り一貫性
      いろんな人がアクセスしても、一貫して読めるという仕組み。
    • バックアップ・リストア・リカバリ
    • 冗長化 (サーバ、ストレージ、ネットワーク)
  • 高速化する仕組み 索引・キャッシュ・実行計画
    実行計画とは、前のSQLをやったら時間かかっちゃった!次は別のやり方で効率的にやってみよう!という記憶を保持して計画してくれるというもの。

Oracle Databaseの構成要素

  • データベース
  • 索引
  • 順序
  • 関数
  • 手続き
  • 統計情報
  • ユーザ
  • 権限
  • 表領域
  • インスタンス
  • リスナー
  • 初期化パラメータファイル
  • データファイル
  • REDOログファイル
  • アーカイブREDOログファイル
  • パスワードファイル
  • リスナー設定ファイル
  • クラスタ管理情報リポジトリ
  • ストレージマネージャ

超多い・・・
これらをどう効果的に使うか?壊さないようにできるか?

Oracle Databaseの運用

  • バックアップ、リストア/リカバリ
  • パフォーマンスチューニング
  • リソース監視 (CPU、メモリ、ディスク、ネットワーク)
  • 権限管理(ユーザ、パスワード、権限)
  • アクセス制御(DB、スキーマ、表)
  • ログ
    • アラートログ
    • トレースログ
    • リスナーログ
  • 設定変更
    • 初期化パラメータ
    • 表領域
    • REDOログ
    • バックアップ領域
    • 統計情報の固定

冗長化したときの考慮事項

  • サーバ
    クライアントから接続するときのホスト名、IPアドレス
    セッション
  • ネットワーク
    仮想IPアドレスとMACアドレス
    クラスタで冗長化したときに仮想IPアドレスをスイッチが認識できていないと、うまく冗長化できない。
  • ストレージ
    複数のサーバからの読み書き
    複数のサーバでも一つの場所に集めて全部一箇所を参照する構造

RAC (Real Application Clusters)

⇒資料がslideshareで公開されたので、そちらで見てね!!
資料ページは7ページよ!

Grid Infrastructure = Clusterware

RACでのサービスとリソースマネージャ

  • RAC上にサービスを2つ定義した例。
  • Grid Infrastructure で設定することで、リスナーやインスタンスに設定される。
  • リソースマネージャと併用するとよい。
    リソースマネージャーで「1つのサーバのCPU使用率の上限」を設定できるので、
    orac1で80%までは使っていいよ、超えるような処理ならorac2で処理を分散させな!
    ということができる。頭いい!

Data Guard

プライマリとスタンバイで構成されるデータ保護の方式

  • フィジカルスタンバイ … REDOを転送
    REDOログを転送⇒転送先ではREDOログから反映プロセスでDBへ反映。
    転送するREDOログはアーカイブログ。
    変更した内容を反映していくイメージ。
  • ロジカルスタンバイ … SQLを転送
    SQL文を送り、送った先でSQL文を処理するイメージ。
    現在のデータファイルそのものをコピーしないで、論理的にこうなったをコピーするやり方。
  • スナップショットスタンバイ … 更新可能なスタンバイ
    特定のタイミングのデータブロックを取得し、
    更新をかけてから取得したデータブロックを上書きするイメージ。

Data Guard Broker

  • 監視
  • 問題の検出
  • スイッチオーバー
  • フェイルオーバー

これらのものは、RAC と併用も可能。

コンテナDB

1つのサーバに、253個のDBを立てらるようになっている。

バックアップ

手作業でも、基本的なcronでも、やっぱりRMANは大事。

リストア・リカバリ

  • 昔は、「バックアップから戻す試験」をやってなかったのが多かった。
  • そして本番で戻せないのが多発!
  • PITR(Point In Time Recovery) バックアップが取得されている範囲内で任意の時点に復旧できる。これ大事。

まとめ

  • データベースには無くしてはいけないデータを保存しています。
  • 求める性能、障害への備えを予算と合わせて検討し、実装方式を決めましょう。
  • マニュアルをよく読みましょう。
    https://docs.oracle.com/cd/E82638_01/index.html 

発表者による補足

  • 試験だと、11gで作られたデータを、12cに移行するときに気を付ける点とかが出てくる
    ⇒バージョンの差異を吸収しろよ(ニッコリ ていう問題がメーカー側から出すとかやべぇ

参加者の声

  • Oracle、バージョン12c、いろいろ進化してるんだなぁ。
  • (P10のコンテナDBを見て) インスタンス上に1つのDB(11g時代の遺産
    こうやって見るとSQLServerと似てますね…
  • 今バックアップソフトをメインに扱ってますが、中ではRMAN叩いてます
  • そもそもOracleのsysユーザ乱用するなは、Rootユーザ使うなに通ずる感じ

Q & A

(Discord 上に質問が流れたらピックアップお願いします)

  • Q.スナップショットスタンバイは一回取ってきておいて更新してから、もう1回書き直す感じ・・・?

    • A.その感じでOKです!
  • Q.フィジカルスタンバイは「データブロック自体の変更内容を反映」、ロジカルスタンバイは「SQL文という論理文作業の反映を1つずつ追う」という感じでいいですか?

    • A.その説明でOKです!そして、時間のかかるロジカルスタンバイは最近使われないですね!
  • Q.DataGuardでは、フィジカルでもロジカルでも、「何かしらのネットワーク」は通る必要は当然ありますが、推奨の回線速度ってありますか?

    • A.早いほうが当然いいのはありますが、遅い回線でも実行できる機能が実はある!詳細は習得しきれていないので説明省きます。
  • Q.コンテナDBでクラスタが上手くイメージできなかったんですが・・・ インスタンスまでがRACの図の下のところになるようなイメージでしょうか?

    • A.そのイメージでいいかな~。
  • Q.P10のコンテナDBは、Dockerみたいな昔ながらの「コンテナ」のイメージ?

    • A.そのイメージで問題ないです。
  • Q.パスワードファイルってどういうファイルですか?

    • A. よくOracleでsqlplusで接続するんですが、その例文が以下。
sqlplus sys/xxxx as sysdba

以下のコマンドでいけると、OS認証がされている。

sqlplus / as sysdba

以下のコマンドでアクセスするときに、パスワードファイルが使われて接続できるようになっている。

sqlplus sys/xxxx@orcl as sysdba