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

Post on 24-May-2015

2.843 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

自己紹介

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

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

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

DBAとは

• Database Administratorの略

• データベース管理者

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

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

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

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

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

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

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

今日の目標

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

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

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

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

アジェンダ

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

環境

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

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

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

1.ORACLEの仕組み

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。

クライアントプロセス

記憶領域

Oracleの仕組み インスタンス

リスナー

サーバープロセス

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

System Global Area (SGA)

Program Global Area (PGA)

制御ファイル Redoログ

データ ファイル

アーカイブ ログ

パラメータ ファイル

インスタンス

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

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

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

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

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

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

• 主な領域

領域名 内容

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

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

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

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

略称 名称 内容

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

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

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

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

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

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

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

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

•  その他ファイル

記憶領域

種類 内容 特記事項

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

多重化可

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

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

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

循環利用

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

種類 内容 特記事項

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

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

領域名 内容

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

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

リスナー

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

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

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

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

けられる

• 実体はWindowsサービス

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

インストール

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

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

Demo

リスナーの作成

• Net Configuration Assistant (NetCA)

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

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

使用する

Demo

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

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

• Database Configuration Assistant(DBCA)

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

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

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

Demo

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

• 正直、DBCAはイケてない

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

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

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

使うのがオススメ

スクリプトを見てみよう

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

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

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

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

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

4.データベースの設計

ファイルシステム

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

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

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

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

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

ファイルシステム

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

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

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

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

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

初期化パラメータ

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

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

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

• SPFILE •  Oracle 9iから登場

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

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

• 基本SPFILEを扱う

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の最大値

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

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

SGA PGA

MEMORY_TARGET

SGA_TARGET PGA_AGGREGATE_TARGET

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

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

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

クライアント プロセス

サーバー プロセス

クライアント プロセス

クライアント プロセス

クライアント プロセス

ディスパッチャ

サーバー プロセス

サーバー プロセス

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

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

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

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

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

ブロックサイズ

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

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

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

• BI/DWH系なら大きめ

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

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

表領域A

DBF01 DBF02 DBF03

表領域B

DBF04 DBF05

テーブル A

テーブル B

インデックスA

インデックスB

インデックスC

インデックスD

テーブル C

テーブル D

5.データベースの運用

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

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

• STARTUP NOMOUNT • STARTUP MOUNT • STARTUP (OPEN)

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

記憶領域

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

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

System Global Area (SGA)

パラメータ ファイル

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

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

記憶領域

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

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

System Global Area (SGA)

制御ファイル

パラメータ ファイル

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

クライアントプロセス

記憶領域

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

リスナー

サーバープロセス

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

System Global Area (SGA)

Program Global Area (PGA)

制御ファイル Redoログ

データ ファイル

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

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

データベースの終了

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

する しない (強制切断)

しない (強制切断)

しない (強制終了)

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

する する しない (ROLLBACK)

しない (強制終了)

チェックポイントの 実行

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

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

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

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

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

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

実際に見てみよう

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

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

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

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

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

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

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

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

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

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

ない!

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

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

サポートについて

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

必須!

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

• KROWNは宝の山!

6.まとめ

まとめ

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

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

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

top related