2007年11月アーカイブ

インストール時の注意

初回起動のユーザでないと起動できない事があった。
原因は良くわからないが、もう一度新しく解凍しなおして、初回起動かけたら意図したユーザで起動した。

TomcatでPostgreSQLのJDBCドライバを使用可能にする
mpostgresql-XX.X-XXX.jdbc3.jarファイルを[Tomcatのフォルダ]\common\lib の下にコピーする。

データソースを使用する場合
データベースへの接続はTomcatが行う。なのでJDBCドライバが入ったJARファイルは[Tomcatのフォルダ]\common\libに置く。

DriverManagerを使用してプログラムの中で接続する場合
[Tomcatのフォルダ]\shared\libまたは[WEBアプリケーションのフォルダ]\WEB-INF\libに置く。

自分なりに考えた結果。

まずは細切れに。表はscottの都合上、名前に1がついてます。
()は回答の記号に順番つけてます。
表がずれてるのはtableタグ書くのがめんどくさいからです。

(B-1)これは予想どおり。


SQL> select * from emp1 natural join job1;

JOBNO EMPNO ENAME SAL DEPTNO JNAME
---------- ---------- ---------- ---------- ---------- ----------
100 1020 scott 800 30 clerk
100 1000 adams 1000 10 clerk
200 1010 miller 1200 10 manager

(C-1)すっかり忘れてたが、一致するものがnatural joinはデカルト積でしたな。
なので、これもよし。
SQL> select * from dept1 natural join job1;


DEPTNO DNAME JOBNO JNAME
---------- -------------- ---------- ----------
10 personal 100 clerk
10 personal 200 manager
10 personal 300 salesman
20 account 100 clerk
20 account 200 manager
20 account 300 salesman
30 design 100 clerk
30 design 200 manager
30 design 300 salesman

(B-2)問題選択肢。これも予想でけた。
SQL> select * from emp1 natural join job1 natural join dept1;


DEPTNO JOBNO EMPNO ENAME SAL JNAME DNAME
---------- ---------- ---------- ---------- ---------- ---------- --------------

10 100 1000 adams 1000 clerk personal
10 200 1010 miller 1200 manager personal
30 100 1020 scott 800 clerk design

(C-2)問題選択肢。おや!?
自分の中ではNatural joinのfrom句の中のものは全部残ると思ってたのに・・・。
デカルト積がfrom側なのでもっと残ると思ってた。
SQL> select * from dept1 natural join job1 natural join emp1;


DEPTNO JOBNO DNAME JNAME EMPNO ENAME SAL
---------- --------- -------------- ---------- ---------- ---------- ----------
10 100 personal clerk 1000 adams 1000
10 200 personal manager 1010 miller 1200
30 100 design clerk 1020 scott 800

ためしにfrom句の中のものがかけてるものをnatural joinさせてみる。
あらら・・・。from句でも、結合先がないものは結合されない。
SQL> select * from dept1 natural join emp1;


DEPTNO DNAME EMPNO ENAME JOBNO SAL
---------- -------------- ---------- ---------- --------- ----------
10 personal 1000 adams 100 1000
10 personal 1010 miller 200 1200
30 design 1020 scott 100 800

うまく想像できないので、手動で結合してみた。
oracle_b.gif


結論
from句の中のものは全部残るのは外部結合でしたよ、そういえば。
なので、あんなにレコードあっても自然(内部)結合は残るのは結合される部分だけなので、やっぱりCは正解なのだった。

自動ワークロードリポジトリ(AWR)
調査員。データベース状態とワークロードに関する情報を定期的(デフォルト60分)に収集、格納する。
SYSMANスキーマの管理の表でSYSAUX表領域とメモリの両方に格納される。
これらは特定時点のシステムの統計サマリーで、スナップショット形式で保存される。一定期間たったら、空き領域確保のためにパージされる。スナップショットの保存期間 7日間、収集間隔 60分。


Automatic Database Diagnostic Monitor(ADDM)
分析官。AWRに格納されたデータを調査、分析し、アドバイスする。全体のアドバイザで、Oracle Serverのボトルネックになっているコンポーネントや推奨項目を教えてくれる。
ADDMが使用するシステムの統計情報はMMON(メモリモニター)によって、SYSAUX表領域に書き込まれる。
書き込まれた収集情報はスナップショットと呼ばれる。

手動起動が必要な場合
スナップショット期間の途中で実行する必要がある場合。
複数のスナップショットにわたって実行する必要がある場合。?
OEMホーム>関連リンク>セントラル・アドバイザ>アドバイザ>ADDM>ADDMの実行

ADDMの動作変更方法
保存期間や収集間隔を変えられる。
OEMホーム>管理>統計管理>自動ワークロード・リポジトリ

アーカイブログファイル

REDOログファイルの内容をARCHが書き込むファイル。リカバリ時に使用される。

アーカイブログファイルの保存先をフラッシュリカバリ領域に指定する場合、USE_DB_RECOVERY_FILE_DESTにセットする。
アーカイブログファイル名はLOG_ARCHIVE_FORMATでセットする。ただし以下のフォーマット記号を使って指定する必要がある。


アーカイブログファイルのフォーマット記号


  • %t, %T・・・スレッド番号を含める。thread

  • %s, %S・・・ログ順序番号を含める。sequence

  • %r, %R・・・リセットログIDを含める。Reset


*大文字を使うと番号の左側が0で埋まる。

マルチブロックサイズ

OracleではI/Oの最小単位をブロックという。
Oracleサーバでは1つのDBに対して複数のブロックサイズを持つことができる。

標準ブロックサイズ
基準となる標準ブロックサイズはSYSTEM表領域が使ってるものになる。(たとえば、SYSTEM表領域が8Bなら標準ブロックも8B)。DB_BLOCK_SIZEで指定。
標準ブロックサイズのDBバッファキャッシュのサイズをしてするのはDB_CACHE_SIZE。

非標準ブロックサイズ
ブロックサイズが違うならば、DBバッファキャッシュのブロックサイズも変わってくる。そのサイズはDB_nK_CACHE_SIZEで設定。


SGAのスライス化・・・DBバッファキャッシュを複数の領域に分割して、キャッシュの使用効率の向上を目的に使用する。

Oracleのネットワークの構成

これらのツールを使って管理できる。

Oracle Net Configuration Assistant・・・GUIツール。「リスナー構成」、「ネーミングメソッド構成」、「ローカルネットサービス名構成」、「ディレクトリ構成」が実行可能。
Oracle Enterprise Manager・・・リスナーの起動・停止、構成。ローカルネーミングの構成。ディレクトリネーミングの構成。が可能。
OEMホーム>一般>リスナーのリンク>LISTENER_SID編集ボタン
Oracle Net Manager・・・GUIツール。Oracle Netのほとんどの構成が可能。


クライアント、サーバの構成
クライアント


  • サーバのリスナーに接続要求を送信する。

  • 接続先の名前解決に使用する方法をsqlnet.oraで指定する。

  • 名前解決にローカルネーミングメソッドを使う場合は tnsnames.oraを使用。

サーバ


  • クライアントからの接続要求を受信するリスナーを構成する

  • リスナーの構成にlistener.oraを使用する。

  • リスナーの管理作業にlsnctlを使用する。

Oracleの環境変数

  • ORACLE_BASE ・・・Optimal Flexible Architecture(OFA)のディレクトリ推奨構造に従うために、ベースとなるディレクトリを指定する。この配下にORACLE_HOMEを作成することで、アップグレードや複数のOracleバージョンの管理を容易にする。windowsのだとシステム環境変数Pathに追加(C:\oracle\product\10.2.0\db_1\bin)された。C:\oracle
  • ORACLE_HOME・・・Oracleをインストールしたところ。C:\Program Files\Oracle ではない。C:\oracle\product\10.2.0\db_1\
  • ORACLE_SID・・・Oracleデータベースに対応するOracleインスタンス名。最大8文字。デフォルト:ORCL。インストール時に追加されてないので、自分でOSの環境変数に追加してやる。
  • LD_LIBRARY_PATH・・・UNIX/LINUXで使用する環境変数。 共有オブジェクトライブラリの検出パス。ORACLE_HOME/libを含めるようにする。例:$ORACLE_HOME/lib
ORACLE MASTER Bronze DBA講座(2) はじめてのOracleインストールとデータベース作成

PGA

PGA(プログラムグローバル領域)
営業(サーバプロセス)や裏方(バックグラウンドプロセス)個人のメモ帳。他の営業は覗けない。サーバプロセスごとの共有されないメモリ。サーバプロセスごとの固有のデータを格納する。
SQLのソートというと一時表領域というイメージだが、実はPGAで先にソートされる。そこで足りない場合一時表領域を使う。
Oracleインスタンスに含まれない。


PGAが持つ情報はサーバの構成方法により変わる。
専用サーバの場合に格納する情報
プライベートSQL領域・・・セッションで使用するカーソルやバインド情報?を格納
セッションメモリー・・・セッションのログイン情報など格納
SQL作業領域・・・SQL文で使用するソート情報を格納する。

アドバイザ

アドバイザ
*アドバイザを使用するにはDBがオープンしてなくてはいけない。


  • Automatic Database Diagnostic Monitor(ADDM)・・・全体のアドバイザ。

  • SQLチューニングアドバイザ・・・SQL文を分析し、パフォーマンス向上のための推奨項目を提示。もっといい感じのSQL文を考えてくれる。たとえばCPUタイム、I/Oおよびメモリーを消費している上位のSQL文を分析したりできる。↓も参考のこと。

  • SQLアクセスアドバイザ・・・特定のワークロードについて索引とマテリアライズドビューを作成するための推奨項目を提示。要はアクセスをどうしたら早くできるか考えてくれる。↓も参考のこと。

  • メモリアドバイザ・・・システムメモリーのアドバイザ。共有プール、PGA、データベースバッファキャッシュを最適化する。なお、自動メモリ管理を無効にしないと使えない。

  • 平均リカバリ時間(MTTR)アドバイザ・・・インスタンス障害後の平均リカバリ時間(MTTR)をチューニングする。

  • セグメントアドバイザ・・・オブジェクト内の断片化を調査して、個々のスキーマオブジェクトか表領域に対して縮小可能なセグメントのアドバイスを行う。対象は表領域、表、索引、表パーティション、索引パーティション。

  • UNDOアドバイザ・・・最も長い問合せと初期化パラメータUNDO_RETENTIONに指定されているUNDO保存の低しきい値を考慮して、UNDO表領域のサイズのアドバイスをする。
    チューニングに使用するシステムアクティビティは最長実行問合せ、平均UNDO生成率、最大UNDO生成率。


ワークロード
アドバイザが使用する統計情報はWRスキーマに格納される。ADDMのSYSAUXとは別。
アドバイザが推奨事項を生成するための材料となるものです
OTN Japan - 意外と簡単!? Oracle Database 10g:Windows版 第5章


SQLチューニングアドバイザ
セントラルアドバイザ経由でいける。SQL文を良くするアドバイスをしてくれる。
分析対象をデータソースという。

対象データソース
上位SQL・・・現在アクティブな上位のSQL文を分析。
SQLチューニングセット・・・指定した一連のSQL文を分析。
スナップショット・・・2つのスナップショットを指定して、その間のアクティビティを分析。
保存スナップショット・・・保存スナップショットを分析。


SQLアクセスアドバイザ
セントラルアドバイザ経由でいける。SQLを効率よく実行するための、オブジェクトを作るアドバイスをしてくれる。
スキーマをチューニングして、問合せのパフォーマンスを向上させられる。実行計画を無駄なくするために索引やマテリアライズドビューを薦めてきたりする。

マテリアライズドビュー
テーブルのように実体を持ったビューのこと。単なるビューは元となるテーブルを結合してみたり演算してみたりするものだが、使うたびに計算し直すのでパフォーマンス的に不利。
マテリアライズド・ビューは、その計算結果を保持しておき、いちいち計算し直さない。
使う側からすれば、ただ単に「高速なビュー」という感じになる(更新頻度が少なく、参照頻度が高いデータの場合)。

ひしだま's 技術メモページ

メモリアドバイザ
セントラルアドバイザ経由でいける。
SGAコンポーネントの最も効率のいいメモリサイズを教えてくれる。(メモリアドバイザ内に設定項目あり)
これを使うには「自動共有メモリー管理」を無効にしておくこと。

アドバイス対象
SGA・・・共有プール、データベースバッファキャッシュ
PGA・・・プログラムグローバル領域

データベース監視

予防的監視


  • 一般的なDB状態とワークロードの監視・・・OEMホームページでチェックできる。

  • パフォーマンスの監視・・・パフォーマンスページチェックできる。

  • アラートの使用

使うツール・・・アラート通知機能、Automatic Database Diagnostic Monitor(ADDM)

Diagnostic [da`iэgnα'stik]-診断


アラート
特定のメトリック(Oracleによって定義された、特定のシステム属性に関する一連の統計情報)しきい値を超過した事を伝える通知のこと。スクリプトの実行をするためのアラートを設定することもできる。
各アラートにはクリティカルしきい値と警告しきい値を設定できる。しきい値には絶対数でなく、実際のパフォーマンスの値に基づいて指定できる。この時の基準をベースラインという。
デフォルトアラートのカスタム、オリジナルアラートの作成も可能。
アラート状況が解消されると、自動的にアラート情報は消去される。
OEMホーム>アラート


デフォルトのアラート


  • 表領域の使用率(警告しきい値:85%、クリティカルしきい値:97%)

  • リカバリ領域空き領域

  • スナップショットが古すぎます。

  • 再開可能セッションが保留されています。


メトリック
MMONによって計算されるシステム属性に関する統計情報。自己チューニング機能、推奨事項作成に使用される(これをつかってOracleがチューニングの目安にする)。また統計情報に、警告やクリティカルのしきい値を設定すれば、監視にも使える。
自動ワークロードリポジトリ(AWR)によって、計算され格納されている。
アラート発行時に、発行原因に対処するためのSQLスクリプトの完全修飾パスを「レスポンス処理」に入力できる。

メトリックの確認・作成・・・OEMホーム>関連リンク>すべてのメトリック
メトリックの変更・・・OEMホーム>関連リンク>メトリックの管理


通知の設定
通知に必要な情報は
OEMホーム>設定>通知方法 で
送信メール(SMTP)サーバー
送信者の識別(送信者名)
送信者の電子メール・アドレス

OEMホーム>プリファレンス>一般>電子メール・アドレス
受信者の電子メール・アドレス

OEMホーム>プリファレンス>通知>ルールまたは スケジュール
通知ルールを使用すると、Enterprise Managerから通知を受け取る対象となるターゲットと条件を選択できる。


ブラックアウト
アラートを通知させない期間をブラックアウト時間という。たとえばメンテナンスでDBを停止しているのに、アラートが着たりしないように設定するもの。
定期的にブラックアウトを発生させることも可能。
OEMホーム>プリファレンス>一般>ブラックアウト

フラッシュバック

OEMホーム>メンテナンス>バックアップ/リカバリ> リカバリの実行

フラッシュバック操作
バックアップからリカバリしなくていいのがミソ。表における行の移動を有効にしておく必要がある。
フラッシュバック操作をするデータは、UNDO表領域から取り出される。
OEMホーム> メンテナンス>バックアップ/リカバリ>リカバリの実行>オブジェクト・レベルのリカバリ>オブジェクト・タイププルダウンを「表」に>以下進める

行に移動有効
OEMホーム>管理>スキーマ>表>「表を検索」>「表を選んで」編集>オプション> 行管理の有効


使えるヒト
DBAロールがなくても権限があれば使える。
必要な権限・・・FLASHBACK TABLE、FLASHBACK ANY TABLEシステム権限。その表に対するSELECT、INSERT、 DELETE、ALTERオブジェクト権限

  • フラッシュバック問い合わせ・・・ターゲット時間を指定して、データベースに対する問い合わせを実行しその時点で表示されるはずの問い合わせ結果を表示。
  • 行履歴フラッシュバック・・・指定した2つの時間内の1つ以上の表に存在した、すべての行のバージョンを表示します。
  • トランザクション履歴フラッシュバック・・・単一のトランザクション(完結してるもの)によって行われた変更、または指定した期間内全てのトランザクションによって行われた変更を表示
  • フラッシュバックテーブル・・・表(表の内容)を以前の時点に戻すことができる。表に関連する索引や制約、トリガーなどのデータも復活する。フラッシュバックするためのデータはUNDO表領域から使える。他のスキーマのオブジェクトにフラッシュバックテーブルしたい時は、FLASHBACKオブジェクト権限が必要。
  • フラッシュバックドロップ・・・DROP TABLE文の実行を無効にできる。対象は削除された表とその依存オブジェクト。表を削除するとまずゴミ箱に入る。ゴミ箱の中の表はパージされる前ならゴミ箱から戻せる。セグメントに割り当てられたエクステントはパージされるまで割り当てを解除されない。フラッシュバックの過程で復活させる表の名前を変えられる。ので、同じ名前のを復活前に作っちゃたら、名前を変えればOK。SYSTEM表領域内の表を削除すると、即パージされるので、フラッシュバックドロップできないので注意。削除する権限があれば、フラッシュバックドロップできる。
  • フラッシュバックデータベース・・・データベースのPoint-in-Timeリカバリに変わる機能を提供する。


ゴミ箱の中のオブジェクトの内容の表示
ゴミ箱の中の表の内容の表示をすると↓を確認できる。


  • ゴミ箱の中の表にアクセスするためのSELECT文

  • 削除前の表の全データ

バックアップ

一貫性バックアップ


  • リストア操作の直後にデータベースをオープンできる。(リカバリ必要なし)

  • REDOログ内の全ての変更がデータファイルに適用されている必要がある。(だからリカバリ必要なし)

  • DBをクローズして、インスタンスを停止しなくてはいけない。インスタンスを停止しているので、全てのデータファイルは同じ状態?


非一貫性バックアップ
DBオープン中に行うことができる。
データファイルに適用されていない変更が、オンラインREDOログファイルまたはアーカイブREDOログファイルに含まれている場合あり。(オープンしてると新しい更新がどんどん来るため)
リストア後にメディアリカバリ(明示的なリカバリ)を実行する必要がある。(REDOログなどの差を無くすため)


バックアップファイルのタイプ
OEMで使用可能なバックアップファイルのタイプは、
OEMホームページ>メンテナンス>バックアップ/リカバリ>現行バックアップの管理 「現行バックアップの管理」の「コンテンツ」を見るとどの種類のファイルをバックアップしてるのかわかる。


  • イメージコピー・・・OSのコピーコマンドと同じ。データファイル制御ファイル、アーカイブREDおログファイルのコピー。データファイルのイメージコピーは、未使用のブロックも含め、データファイルのすべてのブロックで構成されます。イメージコピーには1つのファイルのみを含められる。1回のコピーでは多重化できない

  • バックアップセット・・・Recovery Managerで使用するファイル形式。1つ以上のデータファイル、制御ファイル、REDOログファイルを含められる。セットだから、まとめて取れる。


データベース全体のバックアップ
DB(制御ファイル、アーカイブREDO ログファイル、SPファイル、データファイル)の全内容をバックアップ。

大規模なDBの場合、時間がかかるので、頻繁にするのは向いてない。そのためアーカイブログファイルが使用できない(もしくはできなくなる)次のような時には、全体バックアップを取る。



  • 新規DBの作成直後

  • ARCHIVELOGモードとNOARCHIVELOGモード間の切り替え時


データファイルのバックアップ


  • 全体バックアップ・・・1つ以上のファイルの全ての使用ブロックがバックアップされる。データベース内の全てのデータファイル、制御ファイル、アーカイブREDOログファイル、SPFILEがバックアップ対象。オンラインREDOログファイルは対象ではない。

  • 増分バックアップ・・・変更されたブロックのみを含む差分バックアップ。

    • 差分増分バックアップ・・・前回からの変更部分だけをバックアップ。ファイルがいくつも分かれるので、リカバリにその文の時間がかかる。

    • 累積増分バックアップ・・・最初の全体バックアップからの変更点をバックアップ。だんだんバックアップ時間は長くなっていく。リカバリに使うファイル数は少なめなので、リカバリは早め。




増分更新バックアップ
データファイルのイメージコピーを作成した後、定期的にデータベースの増分バックアップをイメージコピーに適用する方法。データファイルの状態が定期的に新しいものになるので、リカバリ時間を短くできる。


バックアップの流れ


  • バックアップ先の構成・・・バックアップ先はどこか。バックアップファイルのタイプはどっちか。

  • ポリシーの設定・・・増分バックアップするか?バックアップとらなくてもいいファイルはあるのか?何日分バックアップするか?

  • バックアップ計画の作成・・・何をいつからどのくらいの間隔でバックアップするか決める。

  • バックアップの管理・・・バックアップが存在してるか?アクセスできるか?不要になったバックアップの削除。


OEMを使用してのバックアップ設定と方法
設定
OEMホームページ>メンテナンス>バックアップ/リカバリ設定>バックアップ設定 「ディスク・バックアップの場所」をNULLにするとフラッシュリカバリ領域にバックアップされる。


方法
OEMホームページ>メンテナンス>バックアップ/リカバリ>バックアップのスケジュール


ポリシーの設定
バックアップポリシー・・・バックアップ方法や場所などの制御情報。
リテンション(保存)ポリシー・・・バックアップとコピーの保存期間を決めるもの。冗長性(複数の世代)とリカバリ期間で定義できる。たとえばDBを過去3日の任意の時点にりかばりできればいいのなら、4日以上前のバックアップは要らなくなる。

OEMホームページ>メンテナンス>バックアップ/リカバリ設定>バックアップ設定>ポリシー
データファイルは「データベース全体のバックアップから除外される表領域」を指定できる。一時表や索引のみの表領域も除外して平気。


バックアップの管理
ディスクまたはテープ上にあるバックアップファイルそのものとバックアップレコード(バックアップ情報)の管理をさす。
バックアップレコードはRman(Recovery Manager)のリポジトリに格納され、OEMを使用して管理できる。リポジトリの場所は通常、制御ファイルになる。オプションでリカバリカタログデータベース内に格納することもできる。


OEMでできること


  • リポジトリに記憶されているバックアップ(バックアップセットとイメージコピーのリスト表示)

  • リポジトリのクロスチェック

    • リポジトリにリストされているバックアップが実際に物理的に存在しているか、またはアクセス可能かをチェック

    • クロスチェック時にアクセスできないバックアップが存在した場合、そのバックアップを期限切れとする。


    クロスチェックの結果表示

    • AVAILABLE(使用可能)・・・リポジトリに記録された位置にちゃんとあり、ファイルヘッダーの破損が無い。(テープ上のはファイルヘッダーの破損のチェックは無い。)

    • EXPIRED(期限切れ)・・・リポジトリに記録されてるが、その記録位置にファイルがない、確認できない

    •     
    • UNAVAILABLE(使用不可)・・・バックアップのステータスをUNAVAILABLE(使用不可)にすることができる。一時的に使用できなくなったことを示す。リカバリ操作でこのファイルは使われない。フラッシュリカバリ領域に格納されているバックアップはUNAVAILABLEできない。



  • 期限切れになったバックアップをリポジトリから削除。「期限切れになったものを削除」ボタンをクリックすると、期限切れのバックアップセットもイメージコピーのどちらも削除される。

  • 不要になったバックアップレコードをリポジトリから削除とディスクからファイル削除。

  • フラッシュリカバリ領域にあるものは手動で削除する必要が無い。必要になったら勝手に削除される。

  • 追加ファイルのカタログ化・・・OS上でコピーしてとったバックアップやリカバリ領域内にあるバックアップファイルをリカバリ操作で使用できるように、リポジトリ内でカタログ化することができる。


バックアップのスケジュール
対象


  • データベース全体

  • 表領域

  • データファイル

  • アーカイブログファイル

  • ディスク上の全てのリカバリファイル

推奨のバックアップ計画


  • 最初に全DBのバックアップ作成。

  • 2回目以降は、毎日増分バックアップが実行。

  • Point-In-Timeリカバリできる。

リカバリ

バックアップからのリストアを含まない、現行のデータファイルを用いるメディアリカバリもある。リカバリが必要ない表領域は専用一時表領域、読み取り専用表領域(読み取り専用後のバックアップがあること)、インデックス用表領域(インデックスの再作成でおけ)
データベースのオープン中にデータファイルに障害が発生した場合、表領域をオフラインにするなどで、OPEN状態でのリカバリも可能。


メディア障害発生時に最新のバックアップまでリカバリできればいいのなら、DBはNOARCHIVELOGモードで運用可。ただしバックアップから障害発生直前までのデータは無くなる。障害発生直前までのリカバリや任意のある時点へのリカバリをするためにはARCHIVELOGモードで運用すること。そのうえリストアの後にリカバリが必要。


インスタンスリカバリ
インスタンスが落ちた時に、DBの再起動時(OPEN)にOracleが勝手にしてくれるリカバリのこと。
FARST_START_MTTR_TARGET・・・インスタンスリカバリにかかる時間を制御するパラメータこの値を元にチェックポイントの回数を自動調整する。

メディアリカバリとその流れ
削除してしまったデータファイルのリカバリのこと。


  1. 破損・損失したファイルがバックアップからリストアされる。

  2. アーカイブREDOログまたはオンラインREDOログから変更が適用される。この変更にはコミットしてないものも含まれる。これをロールフォワード、またはキャッシュリカバリちう。この時点でUNDOブロックが生成される。

  3. コミットされた変更と、コミットされていない変更を含んだ状態のDBになる。

  4. 2で生成されたUNDOブロックを使用し、コミットされていない変更がロールバックされる。これをロールバック、またはトランザクションリカバリという。

  5. DBがリカバリされた状態になる。


*アーカイブREDOログとデータファイルをバックアップからリストアした場合、そのデータベースをオープンしようとするとOracle Serverがメディアリカバリを実行する。

完全リカバリ
最後にバックアップしたファイルをリストアし、バックアップ後の全てのアーカイブREDOログおよびオンラインREDOログを適用するする。それにより障害発生直前まで完全にリカバリ可能。

-全ての変更がログから適用される
-DB障害発生時の状態に戻る。


Point-in-Time(不完全)リカバリ
障害発生時よりも前の時点の戻ること。
たとえばオンラインREDOログファイルを全損失して、アーカイブREDOログのあるところまでしか戻れ場合、誤って表領域を削除してしまい、削除する直前まで戻りたいなどの場合。

-データファイルをバックアップしてからREDOログを最後に変更するまでの間の任意の時点を選択してリカバリする。
-指定した時間までの変更のみが適用される。
-すべてのデータファイルをリストアする必要がある。


自動リカバリをするための構成


  • オンラインバックアップができるようにARCHIVELOGモードで運用。

  • バックアップの領域管理を自動化するために、フラッシュリカバリ領域を使用する。フラッシュリカバリ領域のサイズは増分バックアップとアーカイブREDOログファイルが入るサイズが理想的。

  • アーカイブREDOログファイルの出力先をフラッシュリカバリ領域にする


ARCHIVELOGモードとフラッシュリカバリ領域の設定


  1. フラッシュリカバリ領域に割り当てるディレクトリをOS上に作成。Oracle Serverがこのディレクトリ内にファイルを作れるようにアクセス権を与える。

  2. OEMホームページ>メンテナンス>バックアップ/リカバリ設定>リカバリ設定 を表示

  3. ARCHIVELOGモードにチェックする。アーカイブのあて先を入力。番号10はUSE_DB_RECOVERY_FILE_DESTが指定されている。(ここはフラッシュリカバリ領域を使用しなくてはいけない。)

  4. 下のフラッシュ・リカバリリージョンでフラッシュバック領域の場所とサイズをセットする。

  5. インスタンスを再起動する(再起動しないとARCHIVELOGモードが有効にならない)


クラッシュリカバリ
RAC環境でクラスタ内ののインスタンスが全て異常終了したときに実行されるもの。


フラッシュリカバリ領域
Oracleサーバにより自己管理されているので、この領域を手動で変更できない。

障害の種類

文障害・・・無効なデータを表に入力しようとした。
→SQL文を修正して再実行。


ユーザプロセス障害・・・ユーザセッションが異常終了。
→PMONが異常終了したサーバプロセスを検出後、リソース開放。


ユーザエラー・・・誤って表を削除した
→フラッシュバック機能で回復


インスタンス障害(クラッシュ障害)・・・メモリー破壊
→インスタンスが異常終了した後、起動時に自動的に行われるリカバリのこと。インスタンス再起動時にREDOログファイルを使用し、トランザクションを適用してデータファイルを整合性の取れた状態にリカバリする。


メディア障害・・・ディスク障害、ファイル誤消去
→選択したバックアップ計画とリカバリ対象のファイルにより決定。
ディスク上のデータが壊れてしまった時にユーザが明示的に行うリカバリ。

データのロード

OEMを通してOS上のファイルや他のデータベースのデータ、をOracleデータベースにロードできる。
データをロードするためには、SQL*Loaderへの指示書としてフォーマットされた制御ファイル(.ctl)とデータファイル(.dat)を使う。一括で流し込めるので、データの量が多い時に便利。
*制御ファイルとデータファイルはデータベースのそれらとはぜんぜん別物。


OEMホームページ>メンテナンス>データ移動>ユーザー・ファイルからのデータのロード
制御ファイルの自動生成は自動作成もできる。用意するのはSQL*Loaderデータファイルだけ。

PL/SQLまたはJAVAで書かれた、ストアド~とかのこと。データベースに格納されている。
データベース常駐型プログラムユニットを所有者以外が実行するには、EXECUTEオブジェクト権限が必要。

  • パッケージ・・・単一ユニット内にPL/SQLコードの定義またはブロック、あるいはその両方を含む構造体。
  • パッケージ本体・・・パッケージが所有するプロシージャとファンクション用のPL/SQLコードを含んでる。
  • プロシージャ・・・コールをする側に値を返さない、PL/SQLコード。
  • ファンクション・・・コールする側に値を返す、PL/SQLコード。
  • データベーストリガー・・・データベースの表、ビューまたはイベントに関連付けられたストアドプログラム。たとえば表へのDMLアクセスに反応するプログラムなど。


OEMでのデータベース常駐型プログラムユニットの作成・削除
OEMホームページ>管理>スキーマ>プロシージャ

ユーザの管理

ユーザ属性


  • ユーザー名

  • 認証方式

  • パスワード

  • デフォルト表領域・・・オブジェクトを作成するときに表領域が明示的に指定されていないときに使われる。

  • 一時表領域・・・ソート操作時に、一時使用する表領域。割り当て制限はできない。

  • 表領域割り当て・・・ユーザが使っていい領域を、表領域単位で指定する。設定できるデフォルト表領域は1つ。

  • アカウントロック


DBをつくると必ず出来るスキーマ


  • SYS・・・データディクショナリを構成する表とビューを所有。OEMのログインはSYSDBA。

  • SYSTEM・・・管理情報を格納する追加の表とビュー、Oracleオプションとツールに使用される内部表とビュー。オブジェクトの追加作成はしちゃだめ。OEMのログインはNORMAL。SYSDBAじゃないんだな。しかしDBAロールは付与される。どういうこと?

おもなサンプルスキーマ


  • SYSMAN・・・OEMを使用してデータベース操作を実行するために使用。

  • DBSNMP・・・OEMコンポーネントのManagement AgentがDB管理・監視のために使用。


ユーザの作成・変更・削除


  • 既存ユーザを元に「類似作成」できる。
    コピーされる項目

    • ロール

    • システム権限

    • オブジェクト権限

    • 割り当て制限



  • ユーザ名の検索ではワイルドカードも使える。

  • ユーザを削除すると、ユーザ定義が削除されて、そのユーザはDBに接続できなくなる。またそのユーザが所有するスキーマオブジェクト(表や索引など)がすべてDBから削除される。

  • ユーザのオブジェクトは維持したい場合、アカウントをロックしたほうがいい。

  • 割り当て制限(QUOTA)は0だと、領域の割り当てが許可されないため、新規のセグメント(たとえば表)の作成や既存セグメントのエクステントの追加ができない。つまり、書き込みできない。


↓デフォルト表領域、一時表領域を変更することが出来る。
OEMホームページ>管理>セキュリティ>ユーザ


パスワード制限とアカウントロック


  • 指定回数失敗後、ロックされる日数・・・指定回数失敗後、アカロックを解除されるまでの期間

  • 再利用できなくなるまでの日数・・・同じパスワードが利用可能になるまでの日数。


パスワードには有効期間を設定できる。有効期間終了後はパスワードの変更をしないと、DBにログインできなくなる。有効期間終了後には猶予期間を設定することもできる。この猶予期間内に変更しないとアカはロックされる。
SYSTEMユーザをロックすることは可能。意味があるかは別だが・・・。
接続中のユーザにロック操作は可能。ただし、即時にロックされず、次回の接続要求からロックされる。キックはできない。

権限・ロールの管理
ロールに権限を組み合わせて、それをまた組み合わせて使う。データへのユーザアクセスと実行可能なSQL文のタイプを制御するために使用する。

  • システム権限・・・ユーザが特定のデータベース操作を実行できるようにする。CREATE SESSION権限(DBに接続するために必要)、CREATE TABLE権限などがある。委譲にはADOMIN OPTION
  • オブジェクト権限・・・特定のDBオブジェクトへのアクセスを制御する。表に対するSELECT権限、UPDATE権限、EXECUTEなどあり。表に関するものは7種類。委譲にはGRANT OPTION
*オブジェクトの所有者はオブジェクト権限を持ってなくても、オブジェクトにアクセスできる。

ロール
ロールは複数の権限をセットにして管理するためのもの。ロールにはロール自身も含められる。またユーザに付与して初めて、アクセス制限をかけられる。
ロールと権限は別なので、類似作成したロールもうひとつロールを掛け合わせる時には、ロールと(ロールについてる)権限を両方付加すること。
パスワードを使用した管理も可能。パスワードを知らないとロール権限を行使できない。
OEMホームページ>管理>セキュリティ>ロール

  • CONNECT・・・エンドユーザ向けのシステム権限のセット。CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE SEQUENCEなど。OEMで作られたユーザには、自動的にこれがつけられる。
  • RESOURCE・・・開発者向けのシステム権限のセット。CREATE TABLE、CREATE VIEW、CREATE SEQUENCE、CREATE PROCEDURE、CREATE TRIGGERなど。
  • DBA・・・DB管理者向けのセット。ADOMIN OPTION付のすべてのシステム権限が含まれている。
  • SYSDBA, SYSOPER・・・DBAよりえらい。DB作成やインスタンスの起動、停止などの特別なシステム権限。OS認証かパスワードファイル認証がかけられるので、DBがオープンして無くてもDBインスタンスにアクセス可能。


プロファイル
ユーザのパスワードやリソースに制限をかけたい場合に使う。以下のものを制限できる。

  • パスワードの有効期限
  • ログイン失敗回数による自動ロック
  • パスワードの変更履歴
  • CPU時間の制限
  • アイドル時間の制限
  • 接続時間の制限
  • 1ユーザあたりの同時セッション数

*同時実行トランザクション数は管理できない。パスワードなしもできない。

ROWID

行のアドレスのこと。データファイルの番号、データファイル内のブロックの番号、ブロック内の行の番号といった情報で構成されている。

データファイル

Oracleのデータ構造は小さい方からブロック、エクステント、セグメント、表領域に分類される。小さい方は大きい方をまたいで存在できない。これらは全部論理構造。(OSからは見えない)
行を個々の本とすると・・・。


Oracleブロック
本を入れる段ボール箱。
この中に1つ以上の行が入っている。OracleでのI/Oの最小単位。管理しやすくするためのデータの塊。


エクステント
個人ごとにまとめておかれた倉庫の棚。1つのエクステント内には1つオブジェクトデータが入る。
連続した複数のOracleブロックから構成される。エクステントがあるので、各エクステントの先頭の場所とそのブロック数でデータを管理できる。つまり管理情報が減る。
DROPされた表などセグメントのエクステントは不要になり表領域の空き領域に帰される。
エクステントを自身の表領域内で管理する場合はローカルにする。


セグメント
荷物の名札または荷物全体。
DBオブジェクトはセグメントとして表領域に格納されている。1つのセグメントは複数の表領域に分けていれられない。ただ表領域自体が2つのデータファイルで構成されることはある。その場合は同一表領域の異なるデータファイルに分かれてセグメントが格納される。
セグメントに空きがなくなると、あらたなエクステントをセグメントに追加する。

  • データセグメント・・・表のデータが格納されている領域をデータセグメント
  • インデックスセグメント・・・索引のデータが格納されている領域。
  • ソートセグメント、UNDOセグメント・・・Oracleが自動的に作るセグメント。


表領域
倉庫。
Oracleデータベースでは、表領域に名前をつけ、1つ以上の表領域を持てる。表領域1つに対して、物理的なファイルであるデータファイル(.dbf)1つ以上と対応付けられる。
Oracleが完了に使う表領域とユーザ用の表領域とがある。
表領域がいっぱいになると、エラーになる。その場合データファイルを追加してやればいい。自動拡張をオンにしておくと楽。
SYSTEM表領域にユーザー用のセグメントを作ってはいけないのは、間違ってSYSTEM表領域をパンクさせてはいけないから。DB作成時に必ず作られる。DBのオープン中は常にオンラインである必要がある。
1つのオブジェクトが異なる複数の表領域間にまたがることはない。
表と索引はI/Oの衝突を避けてパフォーマンスをアップさせるために、それぞれ別の表領域に格納される。

一時表領域
ユーザごとに必ず領域を割り当てる。ユーザオブジェクトは作れない。
読み取り専用にできない。

OEMで新規作成、変更、削除可能- DBホームページ>記憶域>表領域
DDLの生成 を実行するとその表領域を生成するCLEATE TABLESPACE文がでる。


UNDO表領域
複数作れるが、一度にアクティブにできるには1つだけ。また1つのDBの全ユーザで、1つのUNDO表領域を共有して使う。自動拡張可能。ディクショナリ管理は不可。割り当て制限をするとエラーなので、ユーザオブジェクトは作れない。

  • UNDO_RELATION・・・UNDOの最低保存期間。最大2,147,483,647秒(約24,855日)
  • 切り替え・・・未コミットのトランザクションがあっても即時に切り替えられる。ただし古い表領域はPENDING OFFLINEモードになる。未コミットのトランザクションはここで実行されて、全てコミットされるとこの古いUNDO表領域は自動的にOFFLINEモードになる。新しいトランザクションは切り替えられた方で、実行される。
  • 「可能な最適のUNDO保存」・・・UNDO保存可能な実質最大期間のこと。
  • 「分析期間」・・・推奨するUNDO保存期間や領域のサイズを計算するために、システムが分析する期間。
  • 「UNDO保存の低しきい値」・・・現在設定されているUNDO保存期間のこと。


事前定義済み表領域


  • SYSTEM・・・管理情報の入ったデータディクショナリ表が格納。DB作成時に必ず作られる。

  • SYSAUX・・・SYSTEMの補助領域。ADDMの作ったスナップショットもここに入る。DB作成時に必ず作られる。削除・変更不可。

  • UNDOTBS1・・・UNDOセグメントがある。

  • TEMP・・・セッションの継続時間のみ存在する一時データが入る。

  • EXAMPLE・・・サンプルスキーマが入る。

  • USERS・・・ユーザによって作成される全てのオブジェクトのデフォルト表領域。


新規の表領域作成の注意
エクステント管理


  • ローカル管理・・・普通はこっちでいい。エクステントをビットマップで管理。データディクショナリのオーバーヘッドを軽減する。

  • ディクショナリ管理・・・エクステントを古いタイプ。データディクショナリで管理。


タイプ


  • 永続・・・表や索引など全てのセグメントが格納可能。ふつうはこれ。

  • 一時・・・一時セグメントのみ格納。

  • UNDO・・・UNDOセグメントのみ格納。


ここの項目で「デフォルト永続表領域として設定」にチェックすると、ユーザ作成時に明示的にデフォルト表領域を指定しなかった場合に使われる表領域になる。

表領域の変更


  • データファイルの拡張

    • 新規表領域の追加

    • 表領域のデータファイルの追加

    • データファイルのサイズ変更(手動)

    • データファイルの動的拡張への対応(サイズ増加による自動拡張の設定)。ファイルの自動追加はない。



  • 領域しきい値の変更。

  • オフラインステータスの変更


読み取り専用の表領域は表の作成はできないが、削除はできる。表の削除操作はデータディクショナリのみを更新して、データファイルは更新しないため。

表領域のオフライン化
できないもの
SYSTEM、TEMP,UNDOの各表領域はアクセスできなくなるとDBが正常に動けなくなるので、オフラインにしちゃだめ。

オフラインに切り替える時、標準モードではチェックポイントを実行し、バッファを全てデータファイルに書き出すので、オンライン化のときメディアリカバリが必要ない。その他のモード(一時、即時、リカバリ)ではチェックポイントが保障されないので、メディアリカバリが必要。


表領域の削除
格納されていた全てのオブジェクトとそのデータが削除され、これらの情報がデータディクショナリから削除される。この表領域に対応付けられていたデータファイルもOSから削除される。


表領域の領域開放
表領域に対してDML操作(たとえばDELETE)をすると未使用領域ができる。セグメントアドバイザを使えばこれらの領域に縮小操作をして、使用可能領域を増やせる。
縮小操作でデータを前方に圧縮して、連続した空き領域を作る。縮小操作はDML操作に影響しない。


表領域のアラートしきい値


  • 警告しきい値・・・85%

  • クリティカルしきい値・・・97%


UNDOの管理
UNDOデータはデータに対する変更前の値のこと。ロールバックが必要になった時に、前の値戻すために必要。フラッシュバック機能はUNDOによって実現される。
UNDO表領域は循環方式で再利用される。

UNDO保存期間はOracle Serverが自動的にチューニングする。(インストール時に自動で有効になる。)初期化パラメータのUNDO_RETENTION(デフォルト900秒)を使ってUNDO保存期間を指定できる。このUNDO表領域の容量が不十分だと、指定された時間分の情報が保持できない場合があるので注意。自動拡張をONにしておけば、平気。
UNDOアドバイザを使えば、必要なサイズを推定できる。サイズの固定(自動拡張Off)にもできる。


フラッシュバック機能を使う場合は、UNDOデータが上書きされないようにUNDO保存の低しきい値を変更する必要がある。(6時間前までのリカバリが必要な時は、UNDO保存フィールドに6時間と入力)
OEMホームページ>管理>データベース構成>UNDO管理


ディクショナリ管理
表領域の領域管理を内部テーブル(ディクショナリ)にて行う方法。古い方法なので9i以降はあえて選ぶ必要はない。
エクステントの管理ももちろんデータディクショナリ(SYSTEM表領域 在中)で管理する。

  • (オブジェクト作成時にエクステントのサイズを指定しなかったときのデフォルト、エクステントのサイズ) 初期サイズ・・・セグメントに割り当てられる最初のエクステントのサイズを指定する。
  • 次のサイズ・・・2番目以降のエクステントのサイズを指定する。
  • (エクステントのサイズ) 最小サイズ・・・エクステントのサイズがこの値か、この値の倍数にセットされる。
  • 増分サイズ・・・「次のサイズ」エクステント以降のエクステントサイズが拡張される割合を指定する。
  • (エクステントの数) 最小値・・・セグメント作成時に割り当てられるエクステントの数を指定する。
  • 最大値・・・セグメントが保持できるエクステントの数の最大値。

REDOログファイル

各インスタンスには、必ずREDOログファイルが対応付けられている。2マンセル。

Oracleデータベースには2つ以上のREDOログファイルのグループが必要
各グループは同じ内容を持つ1つ以上のREDOログメンバーから構成される。
同一グループ内に2つ以上のメンバーがいることをREDOログファイルの多重化という。それにより、フォルトトレランスが向上する。
LGWRは1度に複数のグループに対する書き込みはしない。同一グループの複数のメンバーに同じ書き込みをする。なので、同一グループのメンバーは異なるディスクに配置する。
グループ内のファイルがいっぱいになると、LGWRは次のグループに書き込みを開始する。この新しいREDOログファイルへ書き込みを切り替えることをログスイッチという。ただし、スイッチするファイルはチェックポイント済み、アーカイブ済みでないと上書きできない。
REDOロググループは循環方式で使用される。

*フォルトトレランス
 システムに障害が発生したときに、正常な動作を保ち続ける能力。「耐障害性」「故障許容力」などと訳される。「どれだけ障害が発生しにくいか」ではなく「故障が起こった際にどれだけ耐えられるか」という意味が強い。


REDOログファイルの情報の取得


  • OEMホームページ>管理>記憶域>REDOログ・グループ

  • SQL*Plusで動的パフォーマンス・ビュー(テーブル)を使用することもできる。 例:select * from V$logfile;


V$logfileのステータス

  • NULL・・・ファイルが使用中

  • INVALID・・・ファイルがアクセス不可

  • STALE・・・ファイルの内容が不完全

  • DELETED・・・ファイルが使用されていない。


*グループのメンバを追加したばかりだと、LGWRによって書き込まれてないために、INVALIDになったりする。またデータベースの起動直後はSTALEになってることもある。これは気にしないでよし。


REDOログファイルの切り替え
次のロググループに切り替わることをログスイッチという。ログスイッチが発生すると、REDOロググループの状態に
関わらずカレントが次のグループに移る。
ログファイルの切り替え先をカレントファイルより前(循環の順番で)に指定しても、切り替えられるのは次のログファイルになる。(切り替えられるが、指定したものではない)


REDOログファイルの消去
カレントでなければ消せる。ただし最低2つのグループは必要なので、2個しかグループのない時は削除できない。

制御ファイル

物理DBの現在の状態を記録するバイナリのファイル。MOUNT時に読み込む。
制御ファイルの位置は初期化パラメータファイルのCONTROL_FILESに指定。多重化の場合は全ての制御ファイル名をこの初期化パラメータに記述する。
多重化しても、1つでも障害が発生すると正常な稼動はできない。その場合COTROL_FILES初期化パラメータから障害の発生したファイルを削除して、インスタンスの再起動をすればいい。
DBにファイル(データファイル、REDOログファイル)を追加すると自動的に制御ファイルの情報が更新される。


制御ファイルの情報の取得にはSQL*Plusで動的パフォーマンス・ビュー(テーブル)を使用する。
例:select * from v$controlfile;


含まれる情報


  • データベース名と識別子

  • DB作成時のタイムスタンプ

  • 表領域名

  • データファイルの名前と場所

  • REDOログファイルの名前と場所

  • カレントREDOログファイルログ順序番号

  • チェックポイント情報

  • REDOログファイルのアーカイブ情報

  • バックアップ情報


ユーザのパスワード情報はここでなく、データディクショナリに格納される。

制御ファイル内のエントリ情報を確認・・・OEMホーム>管理>記憶域>制御ファイル>レコード・セクション


トレースファイル
サーバプロセスとバックグラウンドプロセスがさまざまな情報を書き込むログファイル。エラー解決やアプリケーション、インスタンスのチューニングの参考にもなる。

USER_DUMP_DESTで指定した場所にできる。CREATE CONTROLFILEを含んでる。(CREATE CONTROLFILEを使った制御ファイルの再作成はNOMOUNTで実行する)
OEMホーム>管理>記憶域>制御ファイル>一般>トレースにバックアップ ボタン


STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL2" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01B.LOG'
) SIZE 50M,
GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO02.LOG' SIZE 50M,
GROUP 3 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSTEM01.DBF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\UNDOTBS01.DBF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSAUX01.DBF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\USERS01.DBF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\EXAMPLE01.DBF',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\MYTBS3'
CHARACTER SET JA16SJIS
;

Oracleデータベース

DBの稼動中絶えずI/Oの発生する3種類の物理構造(ファイル)で構成されている。Oracle Serverの秘密のメモ帳ってところ。
OEMホームページ>管理>記憶域>制御ファイル

データベースファイル


  • データファイル・・・表や索引などデータが入ってる

  • 制御ファイル・・・DBのファイル位置など物理構造を指定するエントリが入ってる。

  • REDOログファイル・・・データに対して行われた全ての変更の記録。それらの変更はデータファイルより先に記録される。


*アーカイブログファイルはREDOログファイルのコピーにあたり、Oracleデータベースの構成要素ではない。

アラートログ

時系列にメッセージとエラーを書き出したログファイル。
OEMホームページ>関連リンク>アラート・ログの内容
BACKGROUND_DUMP_DESTで指定した場所にファイルが作成される。

  • 発生した全ての内部エラー
  • ブロック破損エラー
  • デッドロックエラー
  • 表領域に対するCREATE、ALTER、DROP文
  • インスタンスのSTARTUP、SHUTDOWN
  • ARCHIVELOG文などの管理操作
  • 共有サーバプロセスとディスパッチャプロセスの機能に関するメッセージとエラー
  • インスタンス起動時に読み込んだデフォルト値以外の初期化パラメータの値。

SQL文のトレース情報はSQLトレースファイルに記録されるので、ここではない。

インスタンスリカバリ

異常終了やabortなとで終了した時にデータを復旧させるもの。Oracleが勝手にやってくれる。
ただし、キャッシュ上のファイルだけでなくデータファイルがなくなったりしてると、これでは直らない。本格的な復旧作業が必要になる。
データファイルに書き込まれていないデータをREDOログファイルから反映させてくれる。

DBの起動

  1. SHUTDOWN・・・完全停止状態。退社状態。
  2. NOMOUNT・・・インスタンスの起動。社員が出社した状態。初期化パラーメータファイルから設定値を読み込む。その値でSGAを割り当てバックグラウンドプロセスを起動する。
  3. MOUNT・・・データベースのマウント。「今日はどんな感じかしら?」と管理台帳を読んだ状態。制御ファイルを読み込んで、各種ファイルやデータファイルの位置を知る。リカバリ操作と一部の管理機能が使える。場所を知るだけなのでファイルがなくても、この時点でエラーにならない。
  4. OPEN・・・データベースのオープン。業務開始。データファイルとREDOログファイルが読み込み・チェックされて、ようやくユーザがDBにアクセス出来るようになる。データディクショナリもここから読めるようになる
サーバプロセスはユーザのリクエストが来てから、起動する。 停止をする場合はshutdown。書き込まれていない変更済みデータをデータファイルに書き込んで、開始の逆を行う。

Oracle インスタンス

バックグラウンドプロセス+SGA。倉庫会社と社員たちのイメージ。インスタンス=DBではない
データベースはストレージに格納されているデータファイルやREDOログファイル、制御ファイル、その他のエラーログやパラメータのファイルなどが当たる。
RACではない場合はインスタンスとデータベースは1対1で対応する。


SGA
共有メモリ。全てのサーバプロセス(営業)とバックグラウンドプロセス(裏方)で共有される。
ユーザプロセスはサーバプロセスに対して要求(SQL文)を送信する。またDBアプリケーションを実行するとも言える。
サーバプロセスはユーザからの要求を受け取って、SQL文を解析して実行する。また必要に応じてユーザプロセスに結果を返す。


初期化パラメータファイル設定方法
インスタンス起動時に読みこまれるOS上のファイル。


  1. SPFILE(サーバパラメータファイル)・・・こっちが先に読み込まれる。DBサーバが読み書きするバイナリファイル。手動編集不可。ORACLEが実行されているサーバに常駐する。
    データベース起動中に変更したパラメータ情報を保持できる。再起動時にも変更は有効。

  2. テキスト初期化パラメータファイル・・・DBサーバは読み取りのみ。手動編集可。パラメータはOEMで設定。編集した内容の反映は、再起動が必要。動的に変更できるものと、できないものがある
    OEMホーム>管理>データベース構成>すべての初期化パラメータ
    initORACLE_SID.ora

    • DB_CASH_SIZE・・・標準ブロックサイズのデータにしようするキャッシュサイズを指定。デフォルト48MB。9iより使える。使いやすいので、通常こちらを使用する。

    • DB_BLOCK_BUFFERS・・・昔、バッファキャッシュサイズを設定していたパラメータ。

    • SHEARED_POOL_SIZE・・・共有プールサイズ

    • LOG_BUFFER・・・ログバッファサイズ

    • LARGE_POOL_SIZE・・・ラージプールサイズ

    • LOG_ARCHIVE_START・・・アーカイバの自動起動

    • CONTROL_FILES・・・制御ファイル名

    • SGA_TARGET・・・インスタンスが使用できるSGAの総容量を指定。0以外の数字にすると自動共有メモリーがオンになる。メモリ(バッファキャッシュ、共有プール、ラージプール、Javaプール)をいい感じに調節してくれる。REDOログバッファは自動共有メモリ管理の対象ではない
      SGA_MAX_SIZE(最大SGAサイズ)を超えて設定できない。
      SQL*PlusのSHOW_SGAやV$SGA動的パフォーマンスビュー、OEMのOEMホーム>管理>データベース構成>データベース構成 で確認できる。




サーバプロセス
クライアントからの要求を受け付けるフロントマン。データをバッファキャッシュやディスクから読み込むが、書き込みはしない。リスナーやバックグラウンドプロセスに起こされるまでは寝てる。


  • 専用サーバ-1つのユーザプロセスに1つのサーバプロセスで対応する場合。

  • 共有サーバ-複数のユーザプロセスに1つのサーバプロセスで対応する場合。


SGAにいる方々


  • 共有プール・・・実行計画を使いまわして、解析作業を減らすためにためてる。ユーザー間で共有できるSQL、PL/SQL文をキャッシュする。バインド変数や決まった書式でSQLを書くことによって、解析を減らし、効率よく使いまわせる。OracleがSQLを解析する場合などに使用するデータディクショナリ情報もここにある。LRU(最低使用頻度)アルゴリズムで管理。

  • データベースバッファキャッシュ・・・作業場。すばやくサーバプロセスに対応するため、データファイルから取り出したブロックをキャッシュする。キャッシュされてるものはデータファイルから読み込まず、ここで済ます。DBWRがここからディスクに書き込む。
    LRU(最低使用頻度)アルゴリズムで管理される。DMLによるデータの変更はこの領域で行われる。

  • REDOログバッファ・・・サーバプロセスが「誰が何をしたという変更のログ」をいれるところ。リカバリの時に使う。LGWRがREDOログファイルに書き出す。データベースの起動中にサイズ変更できない(エラーになる)。

  • ラージプール・・・共有サーバ上のセッション情報やI/Oスレーブ、Recoverry Manager(RMAN)の使用する情報をバッファ。割り当ては任意なので、その場合以上の情報は共有プールへ。共有サーバでクライアントからの接続を受ける場合は作った方がいい。

  • JAVAプール・・・JVM内の全てのセッション内のJAVAコードやデータが格納。割り当ては任意


バックグラウンドプロセス
メモリー管理やI/O担当(裏方)

  • システムモニター(SMON)・・・領域の掃除屋さん。フラグメントの解消や。UNDOのサイズ調整、異常終了したトランザクションのロールバックなどを行う。障害発生の後のインスタンス起動時に、インスタンスリカバリを行う。
  • プロセスモニター(POMN)・・・メモリやプロセスの掃除屋兼、リスナーへの連絡係。ユーザプロセスが異常終了した時のメモリやプロセスを片付ける。つかんで話さないロックやメモリも開放する。またリスナーにインスタンスの情報、現在のプロセス数、インスタンスの不可をリスナーに登録する。
  • データベースライター(DBWn)・・・作業場に散らかったデータを倉庫に戻す係。更新済みのデータをキャッシュからディスクに書き出す。ただしCOMMITのタイミングで書き出さず、後でゆっくり書き出す。DBWRの数はDB_WRITER_POCESSESでできる。 書き込むタイミング
    • チェックポイント発生時
    • 変更されたバッファの数がしきい値に達した時
    • タイムアウト発生時(3秒)
  • ログライター(LGWR)・・・作業記録をつける係。定期的またはCOMMITのタイミングでREDOログをREDOログファイル(ディスク)に書きだす。まとめ書きする。こいつが落ちるとOracleサーバは正常に動かない。 書き込むタイミング
    • コミット時
    • DBWRが変更されたバッファをデータファイルに書き込む時
    • REDOログバッファが3分の1になった時
    • タイムアウト発生時(3秒)
  • チェックポイント(CKPT)・・・DBWRに作業場をきれいにするように連絡する係兼、荷物(全てのデータファイルと制御ファイル)に管理荷札をつける係。チェックポイントはイベント。 CKPTはバッファキャッシュの変更済みデータをデータファイルに反映させる作業をする。その時データファイルのヘッダに管理情報を書き込む。CKPTが実行されるとコミットされた全ての変更がデータファイルに書き込まれたことが保障される。するとインスタンスリカバリが短くてすむ。 CKPTする際にデータファイルに書き込めないことに気が付く時がある。その場合整合性維持のため、Oracleはインスタンスをダウンさせたり、データファイルをオフラインにする。データファイルのヘッダと制御ファイルにチェックポイントSCNを同期化する。?
  • アーカイバ(ARCn)・・・LGWRが作った作業記録を本にまとめる係。ログスイッチ(LGWRの書き出す先であるREDOログファイルを切り替える作業)が行われると、アーカイブREDOログファイル(ディスク)に書き出す。ARCHIVLOGモードにしないと起動しない。こいつが起動してないと、障害発生時に障害直前まで戻れない。9iからアーカイバが異常終了しても、インスタンスはダウンしなくなり、アーカイバが再起動するようになっている。アーカイブ可能とマークされたREDOログファイルを自動的にコピーする。
  • RECO(リカバラー)・・・分散トランザクション(複数のデータベースにまたがるトランザクション)の解決をするプロセス。分散トランザクションしてなくても、勝手に立ち上がってる。
*nが付いてるものは複数起動化。 サーバプロセスに起こされる前、仕事が終わってサーバプロセスに引き継いだ後は寝てる。スリープ状態のプロセスの数はさほど問題ではない。

Oracl Database Server

OracleインスタンスとOracleデータベースで構成されている。


Oracleインスタンス
SGA(メモリ領域)とプロセスで構成。


Oracleデータベース
データファイル。制御ファイル、REDOログファイルで構成。

Oracle Net Manager

ネーミングメソッドの構成、リスナーの作成、トレース情報の取得、ログの取得、Oracle Net 構成ファイルの作成、編集ができる。
コマンドはnetmgr

ネット構成ファイル


  • sqlnet.ora・・・プロファイル。クライアント、サーバ両方におかれるテキストファイル。クライアントが名前解決を行う時の順序や、使用するロギング機能とトレース機能が記述されている。

  • tnsnames.ora・・・サービスネーミング。クライアントにあるテキストファイル。ローカルネーミングメソッドの名前解決に必要な情報が書いてある。

  • listener.ora・・・サーバにあるテキストファイル。リスナー(クライアントからの接続要求を受ける)の構成情報がある。

  • init.ora・・・サーバにあるテキストファイル。インスタンスとDBの構成に関するパラメータが書いてある。置き場は{ORACLE_BASE}\admin\{DB_NAME}\pfile\init.ora

  • cman.ora・・・Connection Managerを実行するコンピュータ上に構成するテキストファイル。Connection Managerを構成するパラメータを記述。

ファイルの配置場所変更は、TNS_ADMIN環境変数で配置場所を指定する。
*初期化パラメータファイル(spfile.ora, initSID.ora)はいぢれない。


接続タイプ
データベースのデフォルト
専用サーバ
共有サーバ

接続テスト画面は管理者アカウントでなくても平気。


設定項目
ネットサービス名・・・connect ユーザ名/パスワード@ネットサービス名。ネットサービス名は接続識別子(SID)と対応付けられている。
サービス名・・・SERVICE_NAMES。接続先DBに対応付けられたサービス名を指定する。(DB_NAME+. +DB_DOMAIN)で指定された値なので、Oracle_SIDでもいい場合がある。
接続タイプ・・・接続タイプが違っててもこの設定項目が優先されて接続できる。サーバ側の設定とは違うほうでもOK.
プロトコル・・・サーバと通信するためのプロトコル。
ホスト名・・・接続要求する相手の名前。
ポート番号・・・リスナーがリスニングしているポート番号


OEMで同じことする場合
[一般>リスナー>ネットサービス管理>管理ドロップダウンリストで「ローカルネーミング」]

Oracle Net

クライアントとサーバの接続を確立・保守、両者のメッセージを交換する機能を持つ。芸能人のマネージャーみたいなもの(このヒトを通して話をつける)。
使用するプロトコルはTCP/IP。
クライアントとサーバの両方に常駐する。


Oracle Net serviceを構成・管理するツール
Oracle Enterprise Manager・・・構成、管理する統合環境
Oracle Net Configuration Assistant・・・リスニングプロトコルアドレスとサービス情報を構成(作る)。LISTENER(デフォルトのリスナー)、listener.oraを作成する。
Oracle Net Manager・・・GUIでローカルクライアント上またはサーバ上でOracle Net serviceを構成。またOracle Net構成ファイル(Listener.ora, tnsnames.ora, sqlnet.ora)の作成、編集。


listener.oraファイル
リスナーの構成情報を格納するテキストファイル。
$ORACLE_HOME/NETWORK/ADMIN にある。
ADDRESS_LISTを記述すれば、複数プロトコルのリスニングも可能。


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC = ・・・接続先。SIDごとに記述して、複数のリスニングが可能。
(SID_NAME = PLSExtProc) ・・・実はSIDでない
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)

LISTENER = ・・・リスナー名
(DESCRIPTION_LIST = ・・・以下リスニングアドレスの記述
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ・・・外部プロシージャコールをリスニングするところ。デフォルトで作られる。
(ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521)) ・・・プロトコルはこっちをみる。ホストはリスナーを構成するコンピュータ。通常はデータベースを構成したコンピュータ
)
)


ネーミングメソッド
クライアントがOracleSBに接続するための手段。
接続識別子は電話の短縮名のようなもの。接続識別子(短縮名)でtnsnames.oraから情報を引き出せる。この情報をつかってリスナーとの間にソケットを作り、データベースと通信したいという連絡をする。


接続文字列→(ネーミングメソッドが解決)→接続識別子→(クライアント)
接続記述子・・・DBサービスに接続するためのOracle サーバの場所とDBサービスの名前を示すもの。

  • 簡易接続ネーミング・・・TCP/IPのみを使用する単純なネットワーク名で使用。構成は不要。
  • ローカルネーミング・・・ネットサービス名はクライアント上のtnsnames.oraに格納される。簡単に構成できるが、頻繁にネットワーク構成が変わる環境だと面倒。
  • ディレクトリネーミング・・・LDAP対応の集中ディレクトリサーバで管理する。名前解決を1個所で行うので、ネットワーク構成の変更にも柔軟。LDAPはディレクトリサービスを提供するプロトコル。
  • 外部ネーミング・・・oracle以外のネーミングサービスを利用して名前解決する。


ローカルネーミングでの名前解決の例
hoge:ユーザ名
oracle:パスワード
orcl.foo.com:接続識別子(通常、ネットサービス名) の場合
hoge/oracle@orcl.foo.com:接続文字列


接続時のコマンド
connect ユーザ名/パスワード@ネットサービス名
ネットサービス名は接続識別子(SID)と対応付けられていることが多い。ドメイン名がついてるとインスタンス名を同じでなくなる。


tnsnames.ora

ORCL =  ・・・接続識別子(ネットサービス名)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =ホスト名(PORT = 1521))  ・・・リスナー情報
)
(CONNECT_DATA = ・・・以下が接続記述子
(SERVER = DEDICATED) ・・・以下が専用サーバで接続
デフォルト接続の場合ここを書かない。

(SERVICE_NAME = ORCL) ・・・初期化パラメータSERVICE_NAMES(DB_NAME+. +DB_DOMAIN)で指定された値なので、Oracle_SIDでもいい場合がある。
)
)

サービス名・・・SERVICE_NAMES。接続先DBに対応付けられたサービス名を指定する。

Oracle Netがいらない場合
WEBアプリケーションサーバを介した三階層構成では接続要求はWEBブラウザを通して、WEBサーバに送信するので、この時クライアント側にはOracle Netは必要ない。

リスナー

電話交換さん(プロセス)。listener.oraは電話表(構成ファイル)にあたる。
クライアントの要求をサーバに伝えるヒト。リスナーがサーバプロセスを生成して、引継ぎ・実際の仕事お願いする。これ以降はサーバプロセスとクライアントの直接のやり取りになり、リスナーはお役ごめんになる。
Oracleをインストールすると、Oracle Net Configuration Assistantがlistenerという名前のデフォルトリスナーを自動的に作って(構成して)くれる。

リスナーのアドレスリストデフォルト値
ポート番号・・・1521
名前・・・listener
プロトコル・・・TCP/IP
接続するDB情報・・・デフォルト値なし(listener.oraファイルに自分で書くか(多分)、自動インスタンス登録を使用する。)

lsnrctl , OEM内 Oracle Net Listenerの管理ページ[一般>リスナー>Net Services管理]から起動、停止の操作が可能。


このヒトが起動してないと、OEMのデータベースHP、iSQL*Plusは使えない
iSQL*Plus用のリスナーが使用するポート番号は$ORACLE_HOME/install/portlist.ini で確認できる。


リスナー制御ユーティリティ(lsnrctl)
lsnrctl コマンド [リスナー名(省略するとデフォルトリスナー)]
リスナー起動・・・lsnrctl start
リスナー停止・・・lsnrctl stop
ステータス確認・・・lsnrctl status
一般パラメータの設定(サポートしている接続先データベース情報)をリスト表示・・・lsnrctl service
リスナーを停止せず再読み込み・・・reload
暗号化パスワードを作成する・・・change_password
listener.oraのバックアップ作成と変更をファイルに反映・・・save_config

*リスナーではOEMのポート番号の確認はできないので注意。emctl status dbconsoleで。
*接続先の名前解決はクライアント分担なので、リスナーではどうにもできない。

listener.oraでパスワード設定
リスナー操作(たとえばリスナーの停止など)にパスワードを設定できる。パスワード情報は暗号化されてlistener.oraに記録される。
パスワードの設定・認証
lsnctlで
change_passwordコマンド
set passwordコマンド。

Oracle Enterprise Manager

Oracle Enterprise Managerにはたくさんの機能領域がある。


  • 管理ターゲット

  • 管理サービス

  • Grid Control・・・中間層サーバにOracle Management Server(OMS)プロセスとOEMリポジトリ(管理用データベース)を用意し、複数のOracleデータベースやOracle Application Serverを管理する

  • Database Control・・・1つのデータベースに1つ用意されるdbconsoleプロセスにて管理される

  • Aplication Server Control


ORACLE MASTER Bronze DBA講座(1) Oracleデータベース構造の基本

Oracle Enterprise Manager Database Control
oracleインスタンスおよびデータベースの監視、管理、メンテナンスを実行する機能。ブラウザから使う。

主な機能


  • インスタンスに関する、パフォーマンス・ステータス情報の表示

  • データベース記憶域構造(表領域など)の作成

  • スキーマオブジェクトの作成。(SQL*Plusでも可能)

  • ユーザセキュリティの管理

  • データベースのバックアップとリカバリ

  • データのインポート・エクスポート

  • ネットワーク構成の管理。こちら参照


OEMでできないこと
OEMはDBの作成後に実行可能になるので、DBの作成はできない。→DBCA
管理用SQLコマンドの編集。一部見るのはできるが、編集はできない。→SQL*PlusかiSQL*Plus

Database Controlの起動
dbconsoleが起動している必要がある。コマンドラインでコマンドで確認・実行できる。
状態確認・・・emctl status dbconsole
起動・・・emctl start dbconsole
停止・・・emctl stop dbconsole

ポート番号は5500
はじめからログインが許されているユーザは以下の3つ。
SYS・・・SYSDBA。データディクショナリを構成する実表とビュー。
SYSTEM・・・管理情報を格納する追加の表とビューと、Oracleオプションとツールによって使用される内部表とビュー。
SYSMAN・・・OEMを使用してデータベースの操作を実行する用。

*OEMが起動するとユーザプロセスが生成される。

OEMデータベースホームページ(トップページ)


  • インスタンス名、ホスト名[一般]

  • 現行インスタンスの可用性(バックアップやリカバリに関する情報

  • データベースのバージョン [一般]

  • $OACLE_HOMEの場所 [一般 > すべてのプロパティの表示]

  • メディアリカバリオプション [?]

  • セッションおよびSQL関連のパフォーマンス情報

  • 主な領域使用量(データベースサイズなど)[領域サマリー]

  • 主なアラート


インスタンスのスループットはパフォーマンスページで確認できる。


OEMの管理者作成


  1. SYSでログイン

  2. [設定>管理者]


ユーザの変更は[プリファレンス ]で行う。OEMで管理者なユーザを作ると、自動的にMGMT_USERロール(OEMを使用した管理に必要なオブジェクト権限)が付与される。


優先接続情報
バックアップやリカバリなどのジョブやタスクをスケジューリングする場合、コンピュータおよびデータベースへのログイン情報をOEMから自動的に送れるように設定するもの。暗号化されてる。
OSユーザを設定する 詳しくはここ
[プリファレンス>優先接続情報>ターゲットの資格証明] SYSDBAユーザ名とパスワード、ホストOSユーザ名とパスワードを設定


管理用のリポジトリ(Management Repository)
OEMの管理情報を格納する領域で、1つのDBのみを管理する場合にも必要。


MetaLink
パッチの検索・ロードをするサイト。有料です。
[設定>パッチ適用設定]

削除のこと
表領域の削除
その表領域内のオブジェクトは削除され、オブジェクト定義もデータディクショナリから削除される。ただスキーマは削除されない。

ユーザの削除
ユーザ定義が削除されてDBに接続できなくなる。またそのユーザが所有する表や索引などのスキーマオブジェクトが全てDBから削除される。当然、依存している表などにも影響あり。単にユーザを接続させたくないだけなら、アカウントロックの方がいい。


初期化パラメータ ページ
タブ


  • 現行・・・現行インスタンスが使用しているパラメータ値を表示。変更は実行中のインスタンスで即座に変更される。

  • SPFile・・・現在のSPFILEに登録されている値。変更には以下の2つを選べる。

    • SPFILE内のパラメータ値のみ変更。(再起動後に有効)

    • 実行中のインスタンスとSPFILE内のパラメータ値を変更。(即座に変更)




*現行、SPFILEともに動的にチェックの入っている項目は、インスタンスの再起動なしでパラメータ変更できる。

SQLを表示ボタン
パラメータを変更するために自動的に実行されるSQL文を確認できる。そのSQL文の中で、変更させる範囲をSCOPEオプションで指定する。
SCOPE=MEMORY・・・実行中のインスタンスのパラメータのみ変更。(一時的)
SCOPE=SPFILE・・・SPFILE内のパラメータ値のみ変更。(再起動後に有効)
SCOPE=BOTH・・・実行中のインスタンスとSPFILE内のパラメータ値を変更。(即座に変更)


検索
OEM内の検索ボックスではワイルドカードも使える検索もできる。%はワイルドカード、_は任意の1文字

普通の検索・・・前方部分一致。(例、EMPLOYEEの場合-EMP、EMP%、_MP、%YEESなどがOK)
”(ダブルコーテーション)を使った検索・・・完全一致検索(例、EMPLOYEEの場合-”EMP%”などがOK)


表の作成
表の類似作成でコピーされるのは


  • 列名

  • データ型

  • 制約


*データはコピーされない。


パフォーマンスページ
確認できるもの


  • 1秒あたりのトランザクション数

  • 1秒あたりのページング率

  • 1トランザクションあたりのREDOサイズなど


*負荷が高い上位SQLは→SQLチューニングアドバイザ。最長実行問合せ時間→UNDO管理ページ。


アラートの通知方法


  • Eメール

  • SNMPトラップ

  • PL/SQLプロシージャ

  • OSコマンド

Databse Upgrade Assistant

旧バージョンからのアップグレード用ツール。
表領域やREDOログファイルなどの構成オプションに関して適切な構成を推奨する。
アップグレードの際(多分)、詳細なトレースファイル、ログファイルも作る。


アップグレード前のチェック


  • 無効なユーザやロールの有無のチェック

  • 無効なデータ型のチェック

  • サポート外のキャラクタセットのチェック

  • UNDOセグメント、表領域、空きディスク領域などの十分なリソースがあるかのチェック。

  • 必要なファイルを任意でバックアップ。

  • メモリのチェックはしない

アップグレード後の新規ユーザのアカウントを自動的ロックする。ので、注意。
サイレントモード・・・ユーザインターフェースを使わないでアップグレードする。大量にアップグレードしなくてはいけない時に便利かも。
dbua -silent -dbName データベース名

現在の疑問

Database controlとは?OEMとどう違う?
グリッドコントロールって?

Database Configuretion Assistannt

データベースの作成、削除
データベースへのオプションの追加。
テンプレートの管理。

起動はプロンプトでdbca


テンプレート
カスタムデータベース・・・細かいところまで決められる。ブロックサイズを指定するにはこれでないと出来ない。
データウェアハウス・・・大量のデータを処理するSQLをユーザが実行する環境向き。一発ドカン系向き。
トランザクション・・・データへの高速アクセスを必要とする大量トランザクションを、大量のユーザが実行する環境向き。こまいのが大量にやってくる系向き。
汎用・・・普通用。

カスタム以外は事前構成済みデータベースが含まれる。


データベース識別情報
グローバルデータベース名・・・そのデータベース固有の名称つける。URLと同じで一意的に識別できる名前でなくてはいけない。システム環境内で、複数のデータベースが動いおり、それらと連携・管理する環境でなければSIDと一緒で構わない。ドメイン名は複数のデータベースをOEMなどで管理する場合やデータベースリンクを貼る場合などに必要。
DB_NAME + . + DB_DOMAIN(database_name.database_domain) がデフォルト
*一度 GLOBAL_NAME に DOMAIN を設定すると DB_DOMAIN 無しに戻せない。


システム識別子(SID)・・・ホストサーバー内のみで有効で、ホストの共有メモリにアクセスするための識別子。ホスト外になると SID ではアクセスできない。当然、ホスト内で一意でなくてはいけない。
通常は個別に設定しないため SID と同じ 名前になっているが、 SID と INSTANCE_NAME は役割が全く異なるもの。グローバルデータベース名をいれると一緒に入力されるのでややこしい。


SHIFT the Oracle データベースを特定する名前


記憶域オプション


  • ファイルシステム・・・普通(多分)

  • 自動ストレージ管理(ASM: Automatic Strage Management)・・・RAC(Real Application Clusters)環境内で使うみたい。いい感じ最適化してくれて、I/Oがよろしくなる。

  • RAWデバイス・・・ASMを使用しない場合や、プラットフォームがクラスタ・ファイル・システムをサポートしていない場合、データ・ファイルの格納にクラスタ・ファイル・システムを使用しない場合は、追加のRAWデバイスを作成する。


初期化パラメーター


  • メモリ・・・oracleが使うメモリ設定。「メモリ分散を表示」をクリックすると、SGA、PGAの割り当てサイズを確認できる。

  • サイズ指定・・・標準ブロックサイズ-領域割り当てとI/Oで使用される最小単位。データベース作成後に変更できない。プロセス-バックグラウンドプロセス用5、ユーザープロセス用に1は最低必要。

  • キャラクタ・セット・・・特記なし

  • 接続モード・・・

    • 専用サーバモー-サーバプロセスとクライアントプロセスが1対1。バッチ処理のように長く処理を要求するのに向いてる。

    • 共有サーバモード-サーバプロセスとクライアントプロセスが1対多。オンラインサービス向き。


    *専用と共有は共存可能。ただし、専用サーバにしてあるのに、共有サーバでつなごうとしても、共有サーバを構成したい場合は、データベース作成後手動で初期化パラメータを編集しなくてはいけない。追加記事あり。


データベース記憶域
制御ファイル、データファイル、REDOロググループの構成を確認するところ。
データベースの事前定義済みテンプレートを選択してると、REDOロググループのみ追加・削除できる。制御ファイル、データファイル、ロールバックセグメントは追加・削除できない。


作成オプション


  • データベースの作成・・・そのまんま。このまますぐ作る。

  • データベーステンプレートとして保存・・・テンプレートを作りたいときはここでチェック!作ったテンプレートはDBCAで使って、新しいDBを作れる。今まで設定したDBを後で作りたいときにもこっち。

  • データベース保存スクリプトの生成・・・データベース作成のためのスクリプト(バッチファイル)を生成。SQL*PLUSを使用して実行して、新しいDBを作れる。テキストファイルなので自由に編集できる。今まで設定したDBを後で作りたいときにもこっち。


*これらはチェックボックスなので複数指定可。


作成完了のパネル表示
SYS, SYSTEM, DBSNMP以外のアカウントはロックされているので、ここであらかじめロック解除、パスワード設定もできる。あとでOEMでも設定可能。


テンプレート
テンプレートはxmlファイル。新規でも必要。$ORACLE_HOME/assistants/dbca/templates に格納。
内容は、データベースオプション、初期化パラメータ、データベースの記憶属性。
テンプレートの作成中はソースデータベースはシャットダウンしてないといけない。

シードンプレート
シード(既存)テンプレート・・・シードデータベースの構造(スキーマ含む)と物理データファイルの両方。
非シードテンプレート・・・新規用。データベースオプション、表領域、データファイル、初期化パラメータファイルなどの構造情報は入ってる。しかし、ユーザ定義のスキーマデータやデータファイル・REDOログファイルどの物理ファイルははいってない、逆に言うとそれらをカスタムできる。

1から作るよりデータベース作成が早い。
既存データベースのクローンが作れる。


データベースオプションの構成
Oracle TextやOracle OLAPなどのオプションのデータベースコンポーネントに関する構成。
デフォルトのデータベース稼動モード(専用サーバ/共有サーバモード)の切り替え


*データベース名の変更
データベースの再作成か、制御ファイルの再結成が必要になる。

インストール用の領域。インストール終了後もこのディレクトリ内のファイルは削除しちゃだめ!
UNIX/LINUXのみインストール時に指定必要。windowsについては↓参照。
コンピュータにインストールされるすべてのOracle製品を追跡するためにインストーラによって使用される。
インベントリ・ディレクトリは、Oracleホーム・ディレクトリとは別のディレクトリ。

格納されるもの


  • $ORACLE_HOMEにインストールされている全てのOracleソフトウェア情報。

  • JREなど、Oracleソフトウェアに含まれるOracle以外の製品情報。


詳しくは インストールを開始する前の考慮事項


ちなみにwindowsでも作成される。C:\Program Files\Oracle\Inventory。
C:\Program Files\Oracle\はORACLE_HOMEではないので注意!

Oracle Univrsal Installer (OUI)

新規Oracleのインストール
すでにインストールされているOracleの表示
アンインストール


システム要件
Windows


  • メモリ・・・512MB

  • スワップ・・・メモリの2倍の分の領域

  • 一時領域(/tnp)・・・100MBのディスク領域

  • ソフトウェア用領域・・・1.5GB

  • OSにサービスパックなどのパッチが当てられていること。

Linux


  • メモリ・・・512MB

  • スワップ・・・1GBまたはメモリの2倍の分の領域

  • 一時領域(/tnp)・・・400MBのディスク領域

  • ソフトウェア用領域・・・2.5GB


一応、要件を満たしているかチェックしてくれる。ただしOracleが起動できないXP Homeにもインストールできてしまったりするので、注意。


インベントリ・ディレクトリ
こちら参照

環境変数
こちら参照

データベースの作成
は Database Configuretion Assistann 参照


UNIX/LINUXの場合
必要なローカルグループ、ユーザ
oinstallグループ(Oracleインベントリグループ)
dbaグループ(OSDBAグループ)
oracleユーザ(Oracleソフトウェアの所有者)


インストールした後
以上の設定を行った後、OSプロンプトから、rootでroot.shを実行すること。以下のファイルを設定する。


  • oraenv

  • coraenv

  • dbhome

  • oratab

非対話形式でのインストール
大量にインストールするときに便利かも。

レスポンスファイル・・・OracleソフトウェアのCDにサンプルファイルがあるのでそれを編集して使う。テキストファイル。インストール時に必要なパラメータを書いといてインストールを自動化(たぶん)する。

OFA (Oracle Fusion Architecture)

OFASOAを実現する決まり。

OFAの特長は、徹底したモジュール化だ。このモジュール化を細かいコンポーネント単位にまで落とし込んでいるため、問題が起きても独立した小さなコンポーネント単位で解決でき、他に影響を及ぼすことがない。そして、これらのコンポーネントはすべて業界標準に準拠した技術で構成される。

OIAとOFAの大きな違いは、前者がアーキテクチャを基本的にすべてオラクル製品で構成していたのに対し、後者はPeopleSoftやJD Edwardsなど新たにオラクルの製品群に加わったものはもちろん、ミドルウェア層ではIBMのWebSphereなど他社の技術をも取り込んで構成されている点だ。

Oracle OpenWorld San Francisco 2005

Oracleデータベース管理ツール

  • Oracle Univrsal Installer・・・Oracleソフトウェア・オプションのインストール
  • Database Configuretion Assistannt・・・テンプレートからデータベースを作成するためのツール。
  • Databse Upgrade Assistant・・・新しいOracleにアップグレードする。
  • Oracle Net Manager・・・Oracle Net構成ファイル(listener.ora, tnsnames.ora, sqlnet.ora)の作成・編集をする。
  • Oracle Enterprise Manager・・・GUIの管理システム。10gからブラウザベース。
  • Recovery Manager(RMAN)・・・データベース全体またはデータベースファイルのバックアップ、リストア、リカバリをするツール。
  • Data Pump・・・1つのデータベースから別のデータベースにデータを高速転送する
  • SQL*Loader・・・外部ファイルをOracleデータベースにデータをロードする。

ユーザーの編集

パスワードの変更をした時、適用したのに「現在のプロパティ・シートを変更していません」と出て、パスワードをあらわす*の数が合わなくても、変更されている。

優先接続情報

優先接続情報テストをする前のOS上の準備


  1. OSでユーザを作ること(それなりの管理者権限)

  2. 環境変数%TEMP%,%TMP% ディレクトリへの権限をEnterprise Manager用のユーザーに与える

  3. 「バッチジョブとしてログオン権限」をEnterprise Manager用のユーザーに与える


詳しくは 意外と簡単!? Oracle Database 10g Release2 - Windows版

Enterprise Manager Database Control

接続
http://ホスト名t:ポート番号/em
ホスト名はlocalhosでもOK

ORACLE_SIDが通ってない時

コマンドラインで
SET ORACLE_SID=sid
ただし、これだと毎回通さなくてはいけなくめんどくさい。


OSの環境変数に通す方法
変数名 ORACLE_SID
値 sid

を設定する。