TOP > Oracleインスタンスの管理

Oracleインスタンスの管理


  1. データベース管理者の認証
  2. データベースの起動
  3. データベースの停止


データベース管理者の認証

データベースの起動や停止などの特殊な操作を実行する特別なユーザを識別するため、Oracleでは次の方式が用意されている。

  1. オペレーティング・システム認証
  2. パスワード・ファイル認証

※CONNECT INTERNAL構文は、Oracleの以前のバージョンとの互換性を保つためにのみ残されている

オペレーティング・システム認証

  1. オペレーティング・システムが認証するユーザーを設定
    (OSからこれらの権限を付与する方法は、OSによって異なる)
  2. 初期化パラメータ REMOTE_LOGIN_PASSWORDFILE を NONE に設定
  3. 次のどちらかのSQL*Plus コマンドを入力する
    CONNECT / AS SYSDBA
    CONNECT / AS SYSOPER
    ---> SYSスキーマに接続される。

    REMOTE_LOGIN_PASSWORDFILE がNONE に設定されていると、Oracle は、オペレーティング・システムと通信して最初にOSDBA を使用可能にし、それが失敗した場合は次にOSOPERを使用可能にする。どちらも成功しなければ、接続は失敗する。

ロール 権限
SYSDBA @ADMIN OPTION 付きのすべてのシステム権限とOSOPERロールを持つ。
ACREATE DATABASE と時間ベースのリカバリが可能。
SYSOPER @STARTUP、SHUTDOWN、ALTER DATABASE OPEN/MOUNT、ALTER DATABASE BACKUP、ARCHIVELOG およびRECOVER の実行が可能。
ARESTRICTED SESSION 権限を持つ。

※上記のロールは、オペレーティング・システムからのみユーザーに付与され、GRANT文では付与できない
※これらは取消しも削除もできない。

パスワード・ファイル認証

  1. ORAPWD ユーティリティを使用してパスワード・ファイルを作成
    ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users
  2. 初期化パラメータ REMOTE_LOGIN_PASSWORDFILE を EXCLUSIVE に設定
  3. 次のSQL文を使用してパスワード・ファイルにユーザーを追加し、データベース管理を実行する必要があるユーザに適切な権限を付与する
    GRANT SYSDBA TO user_name;
    GRANT SYSOPER TO user_name;
    ADMIN OPTIONは使用できない(もっとも強力な権限であるため)
  4. 次のSQLコマンドを入力してデータベースに接続する
    CONNECT user_name/password@db_name AS SYSDBA
    ---> SYSスキーマに接続される。

●OS認証との差異

※SYSDBAはOSDBAと同じ権限を、SYSOPERはOSOPERと同じ権限を持つ。
※SYSDBAロールとSYSOPERロールは、REVOKE文を使用して権限を取り消すことができる。

●パスワード・ファイル・メンバのリスト

V$PWFILE_USERS ビューを使用。
USERNAME パスワード・ファイルで認識されるユーザーの名前
SYSDBA この列の値がTRUE の場合、そのユーザーはSYSDBAシステム権限でログインできる
SYSOPER この列の値がTRUE の場合、そのユーザーはSYSOPERシステム権限でログインできる

●パスワード・ファイルのメンテナンス

パスワード・ファイルの置換

  1. V$PWFILE_USERS ビューに問い合せて、どのユーザーがSYSDBA/SYSOPER権限を持っているか確認
  2. データベースを停止する
  3. 既存のパスワード・ファイルを削除する
  4. ORAPWD ユーティリティを使用してパスワード・ファイルを新しく作成する

パスワード・ファイルの削除

  1. 既存のパスワード・ファイルを削除する
  2. REMOTE_LOGIN_PASSWORDFILE 初期化パラメータをNONEにリセットする
    (パスワード・ファイルを削除した後は、OS認証によるデータベース管理しかできなくなる)

REMOTE_LOGIN_PASSWORDFILEの設定

設定値 動き
NONE
(デフォルト)
Oracle はパスワード・ファイルがない場合と同じ動作をする。 つまり、セキュリティのない接続では権限付きの接続は実現できない
EXCLUSIVE EXCLUSIVEパスワード・ファイルは、1つのデータベースでしか使用できない。
このパスワードファイルにのみ、SYSOPER とSYSDBA以外のユーザー名を登録できる。
EXCLUSIVEパスワード・ファイルを使用すると、個々のユーザーにシステム権限SYSDBAおよびSYSOPERを付与し、 SYSDBAやSYSOPERで接続させることができるので、もっともセキュリティレベルが高い
SHARED SHAREDパスワード・ファイルは、複数のデータベースで使用できる。
ただし、SHARED パスワード・ファイルによって認識されるユーザーは、SYSDBAとSYSOPERのみであり、ユーザーの追加はできない。
SYSDBAまたはSYSOPERシステム権限を必要とするすべてのユーザーは、必ずSYS ユーザーとそのパスワードを使用して接続する必要がある。
このオプションは、1人のデータベース管理者が複数のデータベースを管理する場合に役立つ。


データベースの起動

データベースの起動時には、

  1. データベースのインスタンスを作成
  2. データベースのマウント
  3. データベースのオープン

を行ない、有効なユーザがアクセスしてデータ操作が出来るようにします。

初期化パラメータ

Oracleデータベースは、起動時にOS上の初期化パラメータファイル(init<SID>.ora)を読み込む。

必須パラメータ
パラメータ名 設定内容
BACKGROUND_DUMP_DEST バックグラウンドプロセス・トレースファイルが作成されるディレクトリ
COMPATIBLE インスタンスと互換性のあるサーバのバージョン(デフォルト:8.0.0)
CONTROL_FILES 制御ファイル名
DB_BLOCK_BUFFERS SGAにキャッシュされるブロック数(デフォルト:50)
DB_NAME データベース識別子(8文字以内)
SHARED_POOL_SIZE 共有プールのサイズ(デフォルト:3,500,000)
USER_DUMP_DEST ユーザトレースファイルが作成されるディレクトリ

パラメータファイルの内容を変更した場合は、Oracleインスタンスを再起動する必要があるが、 インスタンス実行中に変更できるパラメータもある。

●セッション単位に変更 ---> ALTER SESSION SET パラメータ=値;
●システム全体を変更 -----> ALTER SYSTEM SET パラメータ=値 [DEFERRED];
DEFFEREDオプションは、後続セッションから変更を有効にする。

頻繁に変更されるパラメータ
パラメータ名 設定内容
IFILE パラメータファイルによって読み込まれる別のパラメータファイル名(最大3レベルのネストが可能)
LOG_BUFFER SGA内のREDOログバッファサイズ
MAX_DUMP_FILE_SIZE トレースファイルの最大サイズをブロック数で指定
PROCESSES 同時に接続可能なオペレーティングシステムプロセスの最大数
SQL_TRACE SQLトレース機能を使用可能または不可能に設定
SORT_AREA_SIZE ソート処理に使用される作業メモリサイズ
セッション単位か、後続セッション用にしか変更できない)

設定内容は、V$PARAMETER/V$SYSTEM_PARAMETER 動的パフォーマンスビューを参照する。
列名 設定内容
NUM パラメータ番号
NAME パラメータ名
TYPE パラメータ型(1=、論理値 2=文字列、3=整数)
VALUE パラメータ値
ISDEFAULT パラメータがデフォルトであるかどうか
ISSES_MODIFIABLE TRUE=パラメータはALTER SESSIONで変更可能
FALSE=パラメータはALTER SESSIONで変更不可
ISSYS_MODIFIABLE IMMEDIATE=パラメータはALTER SYSTEMで変更可能
DEFERRED=パラメータは次のセッションまで変更不可
FALSE=パラメータはALTER SYSTEMで変更不可
ISMODIFIED MODIFIED=変更されている
FALSE=変更されていない
ISADJUSTED TRUE=適切な値になるようにデータベースが入力値を調整
FALSE=データベースによる調整なし
DESCRIPTION コメント

動的パフォーマンスビューについて、実機上での参考資料

起動方法

  1. SQL*Plusを使用
    1. SQL*Plusを起動し、管理者権限(SYSOPER またはSYSDBA)のあるユーザで接続する
      例)CONNECT username/password AS SYSDBA
    2. STARTUPコマンドを使用し、データベースを起動する
      例)STARTUP [db_name] [PFILE=initSID.ora] [オプション]
  2. Recovery Managerを使用
    Recovery Manager(RMAN)を使用してSTARTUPコマンドを実行する。
  3. Oracle Enterprise Managerを使用
    GUIインタフェースを使用して、起動や停止などの操作を行なえる。

起動オプション

オプション 状態 動き この状態で行なう操作
NOMOUNT データベースをマウントせずに、インスタンスのみを起動する。
STARTUP NOMOUNT;
@初期化パラメータ・ファイル読み込み
ASGAのメモリーを確保
Bバックグラウンド・プロセスを起動
CALERTファイルをオープン
データベースの作成
MOUNT インスタンスを起動し、データベースをオープンせずにマウントした状態で起動する。
STARTUP NOMOUNT;
@パラメータ・ファイルに指定されている制御ファイルのオープン
A制御ファイルから、データベース名とREDOログ・ファイル名を取り出し
Bバックグラウンド・プロセスを起動
C上記のファイルが存在するかどうかを確認

特定のメンテナンス操作を実行する場合。

  • データ・ファイルの改名
  • REDOログ・ファイルの追加、削除または改名
  • REDOログのアーカイブ・オプションを使用可能または使用禁止にする(ARCHIVELOG/NOARCHIVELOGモードの切り替え)
  • 全データベース・リカバリの実行(RECOVER DATABASE)
OPEN
(デフォルト)
インスタンスを起動し、データベースをオープンする。
STARTUP [OPEN];
@データ・ファイルとREDOログ・ファイルのオープン
A必要に応じて、インスタンスの回復
有効なユーザがデータベースに接続して、典型的なデータ・アクセス操作を実行

●可用性の変更

ALTER DATABASEコマンドで可能。

ALTER DATABASE MOUNT ; <--- インスタンス起動状態からマウント状態に変更
ALTER DATABASE OPEN ; <--- インスタンス起動またはマウント状態からオープン状態に変更

※ALTER DATABASEコマンドでは、現在の状態からさらに上の状態への変更は可能。
しかし、オープン状態からマウント状態のように、下の状態に変更することはできない。

●ALERTファイル

位置:パラメータ BACKGROUND_DUMP_DEST で指定
ファイル名:ALERT_SID名.LOG

※ALERTファイルは最大サイズの指定ができないので、 定期的に削除またはバックアップを取る必要がある(DB稼動中も削除可能)

※ALERTファイルには内部エラー、ブロック破損エラー、デッドロックエラー、管理操作が書き込まれる(発生順)。
※トレースファイルにはバックグラウンドプロセスとサーバプロセスのエラー情報が書き込まれる。

●動的パフォーマンスビューへのアクセス

NOMOUNT状態でアクセス可能
ビュー名 内容
V$PARAMETER 初期化パラメータに関する情報
V$SGA SGAに関する要約情報
V$OPTION Oracleサーバにインストールされるオプション情報
V$PROCESS 現行プロセスに関する情報
V$SESSION 現行セッションに関する情報
V$VERSION バージョン番号とコンポーネントの情報
V$INSTANCE 現行インスタンスの状態
LOGINS列=RESTRICTED は制限モード、ALLOWEDは制限モードでない

MOUNT状態でアクセス可能
ビュー名 内容
V$THREAD REDOロググループに関する情報などのスレッド情報
V$CONTROLFILE 制御ファイル名
V$DATABASE データベース情報
V$DATAFILE データファイル情報
V$DATAFILE_HEADER データファイルヘッダ情報
V$LOGFILE REDOログファイルに関する情報

※全ての動的パフォーマンスビューを知るには、V$FIXED_TABLEビューを検索する。

特殊な場合の起動

起動モード
オプション
状態 動き この状態で行なう操作
制限モード
RESTRICT
データベースの使用を管理者のみに許可し、一般ユーザには禁止する。
STARTUP RESTRICT;
CREATE SESSIONシステム権限とRESTRICTED SESSIONシステム権限の両方を持つユーザのみにデータベース・アクセスを許可する。

現行インスタンスが制限モードかどうかは、V$INSTANCEビューのLOGINS列で確認する。

主に、集中的なメンテナンス作業時に使用

  • 索引の再構成、表の再構築、表領域の再編成など、構造上のメンテナンスの実行
  • データのエクスポート/インポート
  • SQL*Loaderを使用したデータ・ロードの実行
  • 一時的に一般ユーザがデータを使用できないようにする場合
強制起動
FORCE
インスタンス起動時に問題が発生した場合、FORCEオプションを使用して起動する。
STARTUP FORCE;
インスタンスの実行中は、STARTUP FORCE を使用すると、ABORT モードで停止した後に再起動する。 カレント・インスタンスをSHUTDOWN NORMAL/IMMEDIATE/TRANSACTIONAL コマンドで停止できない場合に使用する。
メディア・リカバリ
RECOVER
メディア・リカバリが必要な場合には、RECOVERオプションを使用して起動する。
STARTUP OPEN RECOVER;
インスタンスを起動し、データベースをインスタンスにマウントし、リカバリ処理を自動的に開始する。 メディア・リカバリが必要な場合に指定するオプションであり、不要な場合にリカバリを実行しようとすると、エラー・メッセージが表示される。
読取専用
READ ONLY
データベースを読取専用モードでオープンする。
ALTER DATABESE OPEN READ ONRY;

読み取り/書込みモードでオープンする場合は、
ALTER DATABESE OPEN READ WRITE;
オープン状態のデータベースを問い合わせることができ、その間もデータの内容がオンラインで変更される恐れがない。 @データ・ファイルをオフラインとオンラインの間で切り替える
Aスタンバイ・データベースを読取り専用モードとリカバリ・モードの間で切り替える
等の用途でオープンする。

●アクセス制限の変更

ALTER SYSTEMコマンドで可能。

ALTER SYSTEM ENABLE RESTRICTED SESSION ; <--- アクセス制限状態に変更
ALTER SYSTEM DISABLE RESTRICTED SESSION ; <--- アクセス制限を解除


データベースの停止

データベースは、以下の各フェーズを経て停止する。

  1. クローズ
    バッファキャッシュ/REDOログバッファの変更内容をファイルに書き込み、データファイル、REDOログファイルをクローズする
  2. ディスマウント
    制御ファイルをクローズする(NOMOUNT状態)
  3. シャットダウン
    SGAの割り当て解除、バックグラウンドプロセスの終了、トレース・ファイルとALERTファイルのクローズを行ない、インスタンスを停止する。

停止方法

SQL*Plusを使用

  1. SQL*Plusを起動し、管理者権限(SYSOPER またはSYSDBA)のあるユーザで接続する
    例)CONNECT username/password AS SYSDBA
  2. SHUTDOWNコマンドを使用し、データベースを停止する
    例)SHUTDOWN [オプション]

停止オプション

オプション 状態 動き
NORMAL
(デフォルト)
全ユーザーのセッションが切断されるまで待つ。(つまり、一人でもOracleに接続していれば停止できない)
SHUTDOWN [NORMAL];
@SHUTDOWNコマンド発行後は、新しい接続は許さない。
Aデータベースの次の起動では、インスタンス・リカバリ手順は不要
TRANSACTIONAL 現行のトランザクションが終了すると、切断される。
SHUTDOWN TRANSACTIONAL;
@SHUTDOWNコマンド発行後は、新しいトランザクションは起動できない。
Aデータベースの次の起動では、インスタンス・リカバリ手順は不要
IMMEDIATE 全ユーザーのセッションが切断されるまで待たない。
SHUTDOWN IMMEDIATE;
@コミットされていないトランザクションをロールバックしてから、接続しているユーザをすべて切断する
Aデータベースの次の起動では、インスタンス・リカバリ手順は不要
ABORT 全ユーザーのセッションが切断されるまで待たない。
SHUTDOWN ABORT;
@処理中のトランザクションはロールバックしない
AOracle は暗黙のうちに接続しているユーザーをすべて切断する
Bデータベースのクローズ、ディスマウント処理を行わず、インスタンスを停止する。
Cデータベースの次の起動では、インスタンス・リカバリ手順が必要

例)
  ユーザA ログイン ---><--------- 更新処理中 ---------><-- コミット --><------> ログアウト

  NORMAL  ----------------------------------------------- データベース停止 --->
  TRANSACTIONAL  -------------------------------- データベース停止 --->
  IMMEDIATE  --- データベース停止(ロールバック) --->


TOP > Oracleインスタンスの管理
2001/04/11 担当:K.Y