プログラマのためのoracle dba入門

52
プログラマのための ORACLE DBA 入門 2011/04/16 57CLR/H勉強会 素敵なおひげ

Upload: -

Post on 24-May-2015

2.841 views

Category:

Technology


0 download

DESCRIPTION

第57回 CRL/Hで発表したスライドです。

TRANSCRIPT

Page 1: プログラマのためのOracle DBA入門

プログラマのための ORACLE DBA 入門

2011/04/16 第57回 CLR/H勉強会 素敵なおひげ

Page 2: プログラマのためのOracle DBA入門

自己紹介

• H/N : シバタ(素敵なおひげ) •  Twitter : @stknohg • Blog : http://d.hatena.ne.jp/stknohg/

• 札幌で働くSIerです。 インフラ構築から、設計、製造、保守までいろいろ中途半端にやっています。 2010年よりCLR/Hスタッフとして活動中。

• 保有資格 •  ORACLE MASTER Gold Oracle Database 10g •  データベーススペシャリスト •  他…

Page 3: プログラマのためのOracle DBA入門

DBAとは

• Database Administratorの略

• データベース管理者

• データベースの管理って何するの?

Page 4: プログラマのためのOracle DBA入門

DBAのタスク(Oracle Database管理者ガイドより引用)

•  Oracle Databaseサーバーとアプリケーション・ツールをインストールおよびアップグレードします。

•  データベース・システムにシステム記憶域を割り当て、将来の記憶域要件を計画します。 •  アプリケーション開発者がアプリケーションを設計した後、プライマリ・データベースの記憶域構造(表領域)を作成します。

•  アプリケーション開発者がアプリケーションを設計した後、プライマリ・オブジェクト(表、ビュー、索引)を作成します。

•  アプリケーション開発者から得た情報に基づき、必要に応じてデータベース構造を修正します。

•  ユーザーを登録し、システム・セキュリティをメンテナンスします。 •  Oracleのライセンス契約に従っていることを確認します。 •  データベースに対するユーザー・アクセスを制御し、監視します。 •  データベースのパフォーマンスを監視し、最適化します。 •  データベース情報のバックアップおよびリカバリの計画を立てます。 •  テープ上のアーカイブ済データをメンテナンスします。 •  データベースをバックアップおよびリストアします。 •  技術サポートについてOracleサポート・サービスに連絡します。

Page 5: プログラマのためのOracle DBA入門

今日の目標

1.  Oracleをインストールできる様になる

2.  データベースを作れる様になる

3.  Oracleの構造を”ちょっと”理解する

4.  Oracleの運用を“ちょっと”理解する

Page 6: プログラマのためのOracle DBA入門

アジェンダ

1.  Oracleの仕組み 2.  インストールしてみる 3.  データベースを作ってみる 4.  データベースの設計 5.  データベースの運用 6.  まとめ

Page 7: プログラマのためのOracle DBA入門

環境

• 単一のサーバ、クライアント無し

• OS • Windows 2008 Server R2 SP1(64bit) • Standard Edition

• データベース • Oracle Database 11g R2(11.2.0.1.0) • Standard Edition

Page 8: プログラマのためのOracle DBA入門

1.ORACLEの仕組み

Page 9: プログラマのためのOracle DBA入門

Oracleの歴史 リリース バージョン 特記事項

1978年 Oracle version 1 当時の社名はRSI社。アセンブリで実装。未リリース。

1979年 Oracle version 2 最初の商用リリース。

1983年 Oracle version 3 社名がOracleに変更。Cで再実装。

1984年 Oracle version 4 読み取り一貫性のサポート。

1985年 Oracle version 5 C/S対応。

1988年 Oracle version 6 PL/SQL、行レベルロックのサポート。

1992年 Oracle 7 ストアドプロシージャ、トリガーのサポート。

1997年 Oracle 8 オブジェクト指向、大容量データに対応。Javaへのコミット。

1998年 Oracle 8i iは「internet」の略。

2001年 Oracle 9i RAC(Real Application Cluster)。

2002年 Oracle 9i Release 2 開発環境の機能強化など。

2003年 Oracle 10g gは「grid」の略。RACの拡張。ASM。フラッシュバック機能。

2005年 Oracle 10g Release 2 各種機能強化など。

2007年 Oracle 11g Real Application Testing。

2009年 Oracle 11g Release 2 Oracle Grid Infrastructure。

Page 10: プログラマのためのOracle DBA入門

クライアントプロセス

記憶領域

Oracleの仕組み インスタンス

リスナー

サーバープロセス

バック グラウンドプロセス

System Global Area (SGA)

Program Global Area (PGA)

制御ファイル Redoログ

データ ファイル

アーカイブ ログ

パラメータ ファイル

Page 11: プログラマのためのOracle DBA入門

インスタンス

• データベースを管理する一連のメモリ構造

• インスタンスは以下の要素から構成される • System Global Area(SGA)

• バックグラウンドプロセス

• インスタンス≒データベース

• インスタンスの実体はWindowsサービス(Oracle.exe)

Page 12: プログラマのためのOracle DBA入門

System Global Area (SGA) • インスタンスに対する制御情報やキャッシュ等の共有メモリ 領域

• 主な領域

領域名 内容

Shared Pool 解析済みSQLやデータディクショナリの内容をキャッシュ

Database Buffer Cache データブロックのキャッシュ

Java Pool Javaコードおよびデータ用 Large Pool 大容量メモリ割り当て用

Redo Log Buffer Redoログ書き込み用のバッファ

Page 13: プログラマのためのOracle DBA入門

略称 名称 内容

PMON プロセスモニター 他のプロセスを監視 プロセスリカバリの実施

SMON システムモニター インスタンスリカバリの実施 未使用セグメントのクリーンアップ

DBWn データベースライター バッファの内容をディスクに書き込む

LGWR ログライター REDOログファイルの書き込み CKPT チェックポイントプロセス チェックポイントでのDBWn書き込み指示 MMON 管理性モニタープロセス 自動ワークロードリポジトリ(AWR)に関連

するタスクの実施 ARCn アーカイバ アーカイブログの書き込み JCQ0 ジョブキュープロセス スケジュールジョブの実行管理

バックグラウンドプロセス

• 主なバックグラウンドプロセス

Page 14: プログラマのためのOracle DBA入門

•  データベースを構成するファイルは以下の3種類

•  その他ファイル

記憶領域

種類 内容 特記事項

制御ファイル データベースの物理構成や ログ順序番号等を保存するファイル

多重化可

Redoログファイル データベースへの変更を記録 循環利用 多重化可

データファイル データを保存する

(Undoセグメント) トランザクション中の変更を記録するファイル

循環利用

(一時セグメント) SQL実行時のソート処理などに使用

種類 内容 特記事項

アーカイブログ 古いRedoログファイルのコピー パラメータファイル インスタンスの設定情報を保持

Page 15: プログラマのためのOracle DBA入門

Program Global Area (PGA) • サーバープロセスが使用するメモリ領域 • 主な領域

領域名 内容

SQL Work Area SQLのソート用メモリ領域等 Session Memory セッション情報のメモリ領域

Private SQL Area 解析済みSQL情報、バインド変数等のメモリ領域

Page 16: プログラマのためのOracle DBA入門

リスナー

• クライアントからの接続を最初に受け付けるプロセス •  クライアントとサーバープロセスの仲介役

• インスタンスとは独立して存在

• 明示的な指定が無い場合、インスタンスはデフォルト

のポート(TCP1521)で待ち受けてるリスナーと紐づ

けられる

• 実体はWindowsサービス

Page 17: プログラマのためのOracle DBA入門

2.インストールしてみる

Page 18: プログラマのためのOracle DBA入門

インストール

• Oracleのインストールはとても簡単! • インストーラーの指示に従うだけ!

• ガッツ石松でもインストールできる!

Page 19: プログラマのためのOracle DBA入門

Demo

Page 20: プログラマのためのOracle DBA入門

リスナーの作成

• Net Configuration Assistant (NetCA)

• ウィザード形式でリスナーを構成

• リスナーの作成以外のネットワーク構成にも

使用する

Page 21: プログラマのためのOracle DBA入門

Demo

Page 22: プログラマのためのOracle DBA入門

3.データベースを作ってみる

Page 23: プログラマのためのOracle DBA入門

データベースの作成(GUI)

• Database Configuration Assistant(DBCA)

• ウィザード形式でデータベースを作成

• テンプレートとして保存できる

• スクリプトの出力もできる

Page 24: プログラマのためのOracle DBA入門

Demo

Page 25: プログラマのためのOracle DBA入門

データベースの作成(スクリプト)

• 正直、DBCAはイケてない

• DBCAで作成されるスクリプトは

「バッチファイル+SQLファイル」

• DBCAでスクリプトだけ作って、自分で直して

使うのがオススメ

Page 26: プログラマのためのOracle DBA入門

スクリプトを見てみよう

Page 27: プログラマのためのOracle DBA入門

oradim.exe • インスタンスの作成、修正、削除を行う

• 作成 •  oradim.exe -new –sid {SID名} …

• 修正 •  Oradim.exe –edit –sid {SID名} …

• 削除 •  Oradim.exe –delete –sid {SID名} …

• インスタンスの実体はWindowsサービス (Oracle.exe)

Page 28: プログラマのためのOracle DBA入門

4.データベースの設計

Page 29: プログラマのためのOracle DBA入門

ファイルシステム

• Oracleで使用できるファイルシステム

1.  OSのファイルシステム • NTFS等のいわゆる普通のファイルシステム

2.  Automatic Storage Management(ASM) • Oracle専用のファイルシステム

• 専用のボリュームが必要

• 管理用のインスタンス(ASMインスタンス)が必要

Page 30: プログラマのためのOracle DBA入門

ファイルシステム

• どのファイルシステムを選ぶべきか? • 大規模システムやRACを構築する場合はASM

• SE RACを構築する場合はASM必須

• それ以外は通常のファイルシステム • 正直、ASMはめんどい

• Oracleは運用コストが減るといってるけど…

• 個人的にはいい経験が無いです。 私の経験不足ってのありますが…

Page 31: プログラマのためのOracle DBA入門

初期化パラメータ

• データベース全体に関わる設定ファイル • PFILE

• テキスト形式の設定ファイル

• データベース起動中にファイルの変更はできない

• SPFILE •  Oracle 9iから登場

• バイナリ形式の設定ファイル

• データベース起動中にファイルの変更が可能

• 基本SPFILEを扱う

Page 32: プログラマのためのOracle DBA入門

SGA/PGAに関わるパラメータ •  詳細はマニュアル(Oracle Database リファレンス)を参照

SGA/PGA パラメータ 内容

SGA SGA_MAX_SIZE SGAの最大サイズ SGA_TARGET 自動管理するSGAのサイズ DB_CACHE_SIZE データブロックキャッシュのサイズ

SHARED_POOL_SIZE 共有プールのサイズ

LARGE_POOL_SIZE ラージプールのサイズ

JAVA_POOL_SIZE JAVAプールのサイズ STREAM_POOL_SIZE Stream Poolのサイズ LOG_BUFFER REDOログバッファのサイズ

PGA PGA_AGGREGATE_TARGET PGAの集計サイズ PGA/SGA MEMORY_TARGET データベース全体のメモリサイズ

MEMORY_MAX_TARGET MEMORY_TARGETの最大値

Page 33: プログラマのためのOracle DBA入門

SGA/PGAに関わるパラメータ • メモリ自動管理

• パフォーマンスがシビアに求められる場合以外は 自動管理に任せた方が良い

SGA PGA

MEMORY_TARGET

SGA_TARGET PGA_AGGREGATE_TARGET

Page 34: プログラマのためのOracle DBA入門

専用サーバ接続/共有サーバ接続 • 専用サーバー接続

•  1クライアントプロセスに対し、1サーバープロセスが通信

• 共有サーバー接続 •  ディスパッチャーがクライアントプロセスの振り分けを行う •  クライアントプロセスとサーバープロセスはM:Nの関係になる

クライアント プロセス

サーバー プロセス

クライアント プロセス

クライアント プロセス

クライアント プロセス

ディスパッチャ

サーバー プロセス

サーバー プロセス

Page 35: プログラマのためのOracle DBA入門

専用サーバ接続/共有サーバ接続 • どちらを選ぶべきか?

• 接続数が少ない、サーバの性能に余裕がある場合は 専用サーバ接続

• 接続数が多い、サーバの性能に余裕が無い場合は 共有サーバ接続

• 個人的には「とりあえず専用サーバ」 • 最近のサーバは性能が良い

• 後からでも構成の変更は可能

Page 36: プログラマのためのOracle DBA入門

ブロックサイズ

• Oracleがデータを読み書きする最小単位 (ブロック)のサイズ

• データベース作成後は変更できない • どのサイズにすべきか?

• OLTP系ならブロックサイズは小さめ

• BI/DWH系なら大きめ

• よくわからなければデフォルトに(8192byte)

Page 37: プログラマのためのOracle DBA入門

物理ファイル/表領域/オブジェクト

表領域A

DBF01 DBF02 DBF03

表領域B

DBF04 DBF05

テーブル A

テーブル B

インデックスA

インデックスB

インデックスC

インデックスD

テーブル C

テーブル D

Page 38: プログラマのためのOracle DBA入門

5.データベースの運用

Page 39: プログラマのためのOracle DBA入門

データベースの起動と終了

• データベースの起動と停止には管理者権限が必要 • 起動は STARTUP コマンド

• STARTUP NOMOUNT • STARTUP MOUNT • STARTUP (OPEN)

• 停止は SHUTDOWN コマンド • SHUTDOWN NORMAL • SHUTDOWN TRANSACTIONAL • SHUTDOWN IMMEDIATE • SHUTDOWN ABORT

Page 40: プログラマのためのOracle DBA入門

記憶領域

データベースの起動(NOMOUNT) インスタンス

バック グラウンドプロセス

System Global Area (SGA)

パラメータ ファイル

•  パラメータファイルが読み込まれ、 SGAが確保された状態

•  制御ファイルの構成を変更可能

Page 41: プログラマのためのOracle DBA入門

記憶領域

データベースの起動(MOUNT) インスタンス

バック グラウンドプロセス

System Global Area (SGA)

制御ファイル

パラメータ ファイル

•  制御ファイルが読み込まれた状態 •  REDOログファイル、データファイル の構成を変更可能

Page 42: プログラマのためのOracle DBA入門

クライアントプロセス

記憶領域

データベースの起動(OPEN) インスタンス

リスナー

サーバープロセス

バック グラウンドプロセス

System Global Area (SGA)

Program Global Area (PGA)

制御ファイル Redoログ

データ ファイル

パラメータ ファイル •  データファイル、REDOログファイルがオープ

ンされ、データベースが完全に起動した状態

Page 43: プログラマのためのOracle DBA入門

データベースの終了

NORMAL TRANSACTIONAL IMMEDIATE ABORT 接続セッションの 終了待ち

する しない (強制切断)

しない (強制切断)

しない (強制終了)

トランザクションの 終了待ち

する する しない (ROLLBACK)

しない (強制終了)

チェックポイントの 実行

する する する しない (強制終了)

データファイルの クローズ

する する する しない (強制終了)

Page 44: プログラマのためのOracle DBA入門

Enterprise Manager • Oracle標準のデータベース総合管理ツール (Oracle 10gからWEBベースに)

• データベースの管理から自動チューニング など一通りの機能を備えている

• 始めはEnterprise Managerで勉強を兼ねて運用してみると良い

Page 45: プログラマのためのOracle DBA入門

実際に見てみよう

Page 46: プログラマのためのOracle DBA入門

Enterprise Managerの罠 • 全ての機能を使うには Enterprise Edition+オプションパックが必要

• Standard Edition以下では基本機能のみ

• Enterprise Manager絡みの障害も… •  経験上ですが、Enterprise Managerが停止できなくなってデータベースのシャットダウンがハングするといった事象がありました

Page 47: プログラマのためのOracle DBA入門

パフォーマンスチューニング

• 大事な事を2点だけ(細かい事は説明しません!)

1.  チューニングは”より速く”する事ではない。

”ボトルネックを解消”する事である。

2.  ベースライン超重要。

Page 48: プログラマのためのOracle DBA入門

バックアップ/リカバリ • 大事な事を3点だけ(細かい事は説明しません!)

1.  リカバリの出来ないバックアップは意味が

ない!

2.  必ず復旧試験をする!

3.  許容可能なダウンタイムを設定する。

Page 49: プログラマのためのOracle DBA入門

サポートについて

• Oracleをまともに運用したければサポートは

必須!

• サポートに入らないと出来ない事 • パッチのダウンロード • KROWNの専用情報にアクセス

• KROWNは宝の山!

Page 50: プログラマのためのOracle DBA入門

6.まとめ

Page 51: プログラマのためのOracle DBA入門

まとめ

• Oracleをインストールしてデータベースを作るまでは結構かんたん!

• データベースを作った後は実際に手を動かして覚えていこう!

Page 52: プログラマのためのOracle DBA入門

ご清聴 ありがとうございました