データベースの起動や停止などの特殊な操作を実行する特別なユーザを識別するため、Oracleでは次の方式が用意されている。
※CONNECT INTERNAL構文は、Oracleの以前のバージョンとの互換性を保つためにのみ残されている
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文では付与できない。
※これらは取消しも削除もできない。
●OS認証との差異
※SYSDBAはOSDBAと同じ権限を、SYSOPERはOSOPERと同じ権限を持つ。
※SYSDBAロールとSYSOPERロールは、REVOKE文を使用して権限を取り消すことができる。●パスワード・ファイル・メンバのリスト
V$PWFILE_USERS ビューを使用。
列 値 USERNAME パスワード・ファイルで認識されるユーザーの名前 SYSDBA この列の値がTRUE の場合、そのユーザーはSYSDBAシステム権限でログインできる SYSOPER この列の値がTRUE の場合、そのユーザーはSYSOPERシステム権限でログインできる ●パスワード・ファイルのメンテナンス
パスワード・ファイルの置換
- V$PWFILE_USERS ビューに問い合せて、どのユーザーがSYSDBA/SYSOPER権限を持っているか確認
- データベースを停止する
- 既存のパスワード・ファイルを削除する
- ORAPWD ユーティリティを使用してパスワード・ファイルを新しく作成する
パスワード・ファイルの削除
- 既存のパスワード・ファイルを削除する
- REMOTE_LOGIN_PASSWORDFILE 初期化パラメータをNONEにリセットする
(パスワード・ファイルを削除した後は、OS認証によるデータベース管理しかできなくなる)
設定値 動き NONE
(デフォルト)Oracle はパスワード・ファイルがない場合と同じ動作をする。 つまり、セキュリティのない接続では権限付きの接続は実現できない EXCLUSIVE EXCLUSIVEパスワード・ファイルは、1つのデータベースでしか使用できない。
このパスワードファイルにのみ、SYSOPER とSYSDBA以外のユーザー名を登録できる。
EXCLUSIVEパスワード・ファイルを使用すると、個々のユーザーにシステム権限SYSDBAおよびSYSOPERを付与し、 SYSDBAやSYSOPERで接続させることができるので、もっともセキュリティレベルが高い。
SHARED SHAREDパスワード・ファイルは、複数のデータベースで使用できる。
ただし、SHARED パスワード・ファイルによって認識されるユーザーは、SYSDBAとSYSOPERのみであり、ユーザーの追加はできない。
SYSDBAまたはSYSOPERシステム権限を必要とするすべてのユーザーは、必ずSYS ユーザーとそのパスワードを使用して接続する必要がある。
このオプションは、1人のデータベース管理者が複数のデータベースを管理する場合に役立つ。
データベースの起動時には、
を行ない、有効なユーザがアクセスしてデータ操作が出来るようにします。
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 コメント
オプション 状態 動き この状態で行なう操作 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 ; <--- アクセス制限を解除
データベースは、以下の各フェーズを経て停止する。
SQL*Plusを使用
オプション 状態 動き 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 --- データベース停止(ロールバック) --->