goo blog サービス終了のお知らせ 

Oracle クリティカルでない消失からのリカバリ

2007-01-04 23:32:36 | Oracle
1. 多重化された一部の制御ファイルのリカバリ
多重化された制御ファイルの一部に障害があると、データベースのmountが行えない。
正常な制御ファイルをコピーすることで、回復可能。

2. 多重化された一部のREDOログメンバーのリカバリ
多重化された一部のREDOログメンバーに障害があっても、データベースのオープンも可能であるし、運用上の支障はない。
正常なREDOログメンバーのコピーもしくは、REDOログメンバーの削除、追加で回復可能。
以下のSQL文で、statusがINVALIDと表示されている場合、そのREDOログメンバーがアクセス不能になっている可能性がある。

SELECT group#, status, member FROM v$logfile
ORDER BY group#;

3. 一時表領域のリカバリ
データベースのオープンがおこなえる(アラートログに警告が記録される。)が、ディスクソートなど一時ファイルを使用する必要がある処理のときにエラーになる。
一時ファイルのみの削除、追加もしくは一時表領域の再作成により、回復可能。

4. 索引表領域のリカバリ
索引表領域に障害があってもデータベースは停止しない。
データベースの起動時にはオープンできない。
データファイルをオフラインにすることでオープンできる。(ただしNOARCHIVELOGモードでは削除前提のオフラインにする必要がある。)
索引表領域のリカバリはバックアップファイルからのリストアもしくは、索引表領域の再作成で行う。
NOARCHIVELOGモードでは再作成を行うべきであるが、ARCHIVELOGモードでは、リストアか再作成のどちらが良いか検討する必要がある。
再作成を行う場合は、Data Pumpにて索引定義を抽出するか、独自にSQLスクリプトを保存しておいてそれを利用する。再作成を高速化するのであれば、PARALLEL句もしくはNOLOGGING句を検討する。

5. 読み取り専用表領域のリカバリ
バックアップ時と状態が変更されていない場合は、バックアップファイルをリストアするだけである。
バックアップ時と状態が変更されている場合は、リストアとリカバリが必要。


データベースの診断ソース Oracle

2007-01-04 02:08:16 | Oracle
BACKGROUND_DUMP_DEST初期化パラメータによって制御されるファイルは、
・アラートファイル
・バックグラウンドプロセスのトレースファイル

アラートログに格納される情報は、
・エラー関連情報
・管理操作(Oracleサーバの起動・停止、初期化パラメータの変更、Oracleデータベースの構造を変更するCREATE,ALTER,DROPコマンド等)
・デフォルト値以外の初期化パラメータ

SQLトレースを有効化/無効化する方法は、
・インスタンスレベルの設定は、SQL_TRACE初期化パラメータを設定(データベースの再起動が必要)
・セッションレベルの設定を行うには、現行セッションであれば、ALTER SESSIONコマンドで、SQL_TRACE初期化パラメータを設定
・リモートセッションの設定を行うのであれば、DBMS_MONITOR.SESSION_TRACE_{ENABLE | DISABLE}プロシージャを使用

データベースのバックアップ Oracle

2007-01-04 01:56:33 | Oracle
1. RMAN
RMANのバックアップタイプには、バックアップセットとイメージコピーの2種類がある。
またバックアップセットでは圧縮を行うことも可能。
デフォルトのバックアップタイプは、CONFIGUREコマンドで設定する。

データベースがオープン中の場合は、RMANでは、
ARCHIVELOGモード時:表領域/データファイルがオンラインでもバックアップ可能。
NOARCHIVELOGモード時:表領域/データファイルがオフラインであれば可能。

増分バックアップも行える。増分バックアップとは、レベル0という元のバックアップに対する差分のみバックアップ(レベル1)を行うことで、バックアップの時間とデータサイズを少なくするものである。
差分増分バックアップ(前回の増分バックアップからの差分)と累積増分バックアップ(最後のレベル0バックアップからの差分)がある。
レベル0はイメージコピー、バックアップセットのいずれでも行えるが、レベル1はバックアップセットしか行えない。
・レベル0のバックアップ BACKUP INCREMENTAL LEVEL 0 DATABASE;
・レベル1のバックアップ BACKUP INCREMENTAL LEVEL 1 [CUMULATIVE] DATABASE;
*CUMULATIVE指定時は、累積増分バックアップを意味する。

ブロック変更追跡機能とは、CTWRバックグラウンドプロセスにより専用のブロック変更追跡ファイルにブロック変更(物理位置)を記録しておくことで、増分バックアップの高速化を図る機能である。有効化されていれば、RMANが自動的に使用する。
・ブロック変更追跡の有効化は以下のSQL文で行う。
ALTER DATABASE ENABLE BLOCK CHANGE TRAKING USING FILE ファイルパス;
・ブロック変更追跡の無効化は以下のSQL文で行う。
ALTER DATABASE DISABLE BLOCK CHANGE TRAKING;

Oracle推奨のバックアップは、最初のバックアップ時に全データベースのイメージコピーを作成し、日々のバックアップでは、以下のようなイメージになる。
RECOVER COPY OF DATABASE;(前日までの増分バックアップをイメージコピーに適用)
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;(イメージコピーに対するレベル1の増分バックアップを適用)

REPORT OBSOLETE~:不要となったバックアップを表示
REPORT NEED BACKUP~:バックアップが必要なデータファイルを表示

CROSSCHECKコマンドにより、RMANリポジトリのバックアップ情報に対応したバックアップファイルが正しく存在しているかどうか(期限切れかどうか)を確認できる。

DELETEコマンドにより、不要なバックアップファイルや期限切れのバックアップファイを削除できる。

2. ユーザ管理のバックアップ
NOARCHIVELOGモード時:オープン時では行えない。ABORT以外のオプションでデータベースを停止し、OSコマンドで全てのデータベースファイルをバックアップする。
ARCHIVELOGモード時:オープン時でも行える。以下の手順で行う。
ALTER [DATABASE/ TABLESPACE 表領域名 BEGIN BACKUP;
OSコマンド等でバックアップ
ALTER [DATABASE/ TABLESPACE 表領域名 END BACKUP;

RecoveryManagerの構成

2007-01-03 22:54:14 | Oracle
1. RMANリポジトリ
ターゲットデータベースの制御ファイルもしくは、リカバリカタログに保存される。
制御ファイルに保存されるRMANリポジトリは、CONTROL_FILE_RECORD_KEEP_TIME初期化パラメータにより、制御される。

テープデバイス(SBT)へのバックアップを行うには、メディア管理ライブラリ(MML)をロードする必要がある。

2. フラッシュリカバリ領域の調整
RMANによりバックアップデータは、デフォルトで、フラッシュリカバリ領域に保存される。
DB_RECOVERY_FILE_DEST_SIZE初期化パラメータでサイズが決定される。
DB_RECOVERY_FILE_DEST初期化パラメータで、フラッシュリカバリ領域の場所が決定される。デフォルトは、%ORACLE_BASE%\flash_recovery_areaである。

また、以下のSQLにてフラッシュリカバリ領域の確認が行える。

SELECT name, space_limit/1024/1024/1024 "LIMIT(G)",
space_used/1024/1024/1024 "USED(G)",
space_reclaimable/1024/1024 "RECL(M)"
FROM v$recovery_file_dest;

3. RMANの起動オプション
ターゲットデータベースはTARGETで指定し、SYSDBA権限で接続する。
リカバリカタログはCATALOGで指定し、リカバリカタログオーナーで接続する。
ログファイルを保存する時はLOGでファイル名を指定する。追記モードにする時は、APPENDを指定する。

4. CONFIGUREコマンド
リテンションポリシー(CONFIGURE RETENTION POLICY~)として指定された保存期間(リカバリウインドウ、または冗長性)が超過した場合は、不要とみなされる。

制御ファイルの自動バックアップ(CONFIGURE CONTROLFILE AUTOBACKUP ON)が有効になっている場合、次のような操作によりデータベース構造が変更された時にも、制御ファイルのバックアップが行われる。
・表領域のオンライン/オフラインの変更
・表領域に対するデータファイルの追加/削除など

制御ファイルの自動バックアップが保存される場所は以下
・デフォルトはフラッシュリカバリ領域
・コマンド(CONFIGURE CONTROLFILE AUTOBACKUP FORMAT~)で指定した任意の場所(ファイルパスに%Fを含めること)

CONFIGURE BACKUP OPTIMIZATION ONの動作は次の通り
・データベース全体のバックアップ時に作用する
・読み取り専用表領域のデータファイルやオフラインのデータファイルのバックアップをスキップする。
・リテンションポリシーを超過している場合は、スキップされずバックアップされる


Oracleリスナーの保護

2007-01-03 01:01:24 | Oracle
1. リスナーのパスワード設定
リスナーは起動したOSユーザだけが完全な管理を行うことができるが、他のOSユーザであっても、パスワード設定を行うことで、リスナー停止等を行うことが出来る。(listener.oraのPASSWORDS_リスナー名
リスナーパスワードが有効化されているかどうかの確認は、lsnrctl status リスナー名で行う。

2. リスナーのアクセス制御
サーバ側のsqlnet.oraのTCP.VALIDNODE_CHECKINGをYESもしくはTRUEにすることで行う。TCP.EXCLUDED_NODESに拒否するホストのリスト、TCP.INVITED_NODESに許可するホストのリストを記述する。

3. 外部プロシージャのセキュリティ
外部プロシージャは、PL/SQLの中からC言語で記述された共有ライブラリ(.soや.dll)をさす。
外部プロシージャの起動は以下のようになる。
a. PL/SQLの中で、外部プロシージャを起動する(ライブラリオブジェクト)記述がある。
b. ライブラリオブジェクトの検索(CREATE LIBRARYコマンドで事前に作成)
c. リスナーに要求を渡す
d. EXTPROCエージェントを起動
e. 共有ライブラリをロードして、外部プロシージャとして起動
f. PL/SQLに実行結果を返す
デフォルトでは、LISTENERリスナーの中にEXTPROCエージェントの記述があるが、専用のリスナーを使用することが望ましい。

Oracle言語設定

2007-01-02 05:27:15 | Oracle
1. Unicodeキャラクタセットの扱い
データベースキャラクタセットは、CHAR,VARCHARで使用され、UTF8が使用可能。
各国語キャラクタセットは、NCHAR,NVARCHARで使用され、AL16UTF16が使用可能。
*アジア圏の言語は、UTF8使用時には、3バイト使用する文字が出てくる。

2. クライアント側の言語設定を行う場合
NLS_LANGUAGE,NLS_TERRITORYで設定される。(初期値はNLS_LANG環境変数により決定。)
NLS_LANG変数は、Windowsの場合、レジストリに設定してある。
ex) HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb10g_home1NLS_LANG

3. 日付の和暦表示を行う場合
TO_CHAR(hiredate, 'EEYY"年"MM"月"DD"日"','NLS_CALENDAR=''Japanese Imperial''')で、以下の例のように表示可能
ex) 昭和55年12月17日

4.セッション側のタイムゾーン設定変更
・ALTER SESSION SET TIME_ZONE
・ORA_SDTZ環境変数

5. 日付形式の設定
・DATE型は、NLS_DATE_FORMAT(初期値はNLS_TERRITORYにより決定)により決定される。
・TIMESTAMP型とTIMESTAMP WITH LOCAL TIME ZONE型は、NLS_TIMESTAMP_FORMATにより決定される。
・TIMESTAMP WITH TIME ZONE型は、NLS_TIMESTAMP_TZ_FORMATにより決定される。

6. ソート処理制御
NLS_SORT,NLS_COMP初期化パラメータ(大文字、小文字を意識しないソートを行う場合は、NLS_COMPをANSIに設定する。)もしくは、NLSSORT関数により行う。