Caprices

Oracle 入門からやり直し

オラクルはデータをアクセスすることはよくやってきたが、インストールしたり、環境を作ったり、 ユーザ・ロールがどうこうってことはまったくやったことはなかった。 ということで、 「10日でおぼえるOracle10g データベース入門教室」で入門からやり直しです。

ORACLE DATABASEの構成

ファイル

データファイル
実データのファイル
REDOログファイル
更新履歴のファイル。リカバリに使用される
制御ファイル
名前、パス、タイムスタンプ等の情報を記録したファイル。インスタンスの起動に使用される。
初期化パラメータファイル
データベースを構成するパラメータファイルを設定するファイル。
パスワードファイル
管理用データベースユーザーを認証するためのファイル。
アーカイブREDOログファイル
REDOログのバックアップファイル

インスタンス

SGA(System Global Area)
起動したときに確保される領域。主にキャッシュとして使われる
バックグラウンド・プロセス
ファイルの書き込みやログの記録などデータベースを管理するプロセス。

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

データベースライター(DBWR)
データベースバッファキャッシュ(SGAの一部)で変更された内容を、データファイルに書き込む
ログライター(LGWR)
REDOログバッファ(SGAの一部)で変更された内容を、REDOログライルへ書き込む
チェックポイント(CKPT)
特定のタイミングで、データベースライターと制御ファイルを更新し、データベースの整合性を維持。
アーカイバ(ARCH)
REDOログファイルが一杯になったとき、次のログファイルに切り替わり、この一杯になったファイルを、アーカイブログとして別の場所に保存します。
プロセスモニタ(PMON)
ユーザープロセスに障害が発生したときに、回復処理を行います。
システムモニタ(SMON
データベースが異常終了したときに検地し、データベースを起動した時に、回復処理を行います。

SGAの構成

データベースキャッシュ
表や索引のデータをキャッシングする領域
REDOログバッファ
書き出す情報を一時的に保存する領域
共有プール
主にライブラリキャッシュとディクショナリキャッシュから構成されている。ユーザーセッション情報(カーソル/メモリ)なども持つ
ライブラリキャッシュ
SQL文やPL/SQLの情報をキャッシングする
ディクショナリキャッシュ
表や索引などの定義情報をキャッシングする
ユーザープロセス
Oracleに接続してSQLを送信するアプリケーションのこと
サーバープロセス
ユーザプロセスからの要求を受け、実際に処理するプロセス。1セッションにつき1つ起動される。
PGA(Procram Global Area)
サーバープロセスごとに作成される。セッション情報、カーソル情報、ソート領域用メモリなどを保持する領域

操作

DBを作るとき

データベース・コンフィギィレーション

  1. スタート
  2. プログラム
  3. Oracle-OraDb10g_home1
  4. コンフィグレーションおよび移行ツール
  5. データベース・コニフィギュレーション・アシスタント

リスナーの起動

Database Controlを起動させるにはリスナーを起動しておく必要がある

  1. 「ファイル名を指定して実行」を使って「lsnrctl」を起動する
  2. 起動コマンド「start」を使う

リスナーの停止

停止コマンド「stop」を使う

LSNRCTLユーティリティを終わらせる(リスナー)

「exit」を使う

リスナーの現在の状態を確認する

「status」を使う

Oracle Enterprise Managerの起動

  1. Internet Explorerを起動する
  2. データベースの作成完了になったときに出ていたDatabase Control の URLをアドレスに入力して更新ボタンを押す

データベースの起動と停止

インスタンスの起動(NOMOUNT)

  • 初期化パラメータを読み込み、SGAにメモリを割り当てバックグラウンドプロセスを起動すること。
  • インスタンスのみ起動した状態。
  • データベースを新規に作成できる。

データベースのマウント(MOUNT)

  • 制御ファイルを読み込み、データファイルやREDOログファイル名を取得し、インスタンスに関連付ける。
  • データにはアクセスできないが一部のメンテナンス作業が可能。

データベースのオープン(OPEN)

  • データファイルとREDOログファイルをオープンし、データアクセスできるようになる。

インスタンスの起動コマンド

STARTUP NOMOUNT
ノーマウント状態で起動。
STARTUP MOUNT
マウント状態で起動。
STARTUP OPEN
オープンした状態で起動。[OPEN]は省略可
STARTUP OPEN READ ONLY
読み取り専用でオープン。

インスタンスの停止コマンド

SHUTDOWN NORMAL
接続しているセッションがあるときは、切断されるのを待って停止。[NORMAL]は省略可
SHUTDOWN TRANSACTIONAL
接続しているセッションをすべて切断してから停止。未コミットのトランザクションがある場合は、終了を待って停止。
SHUTDOWN IMMEDIATE
接続しているセッションをすべて切断してから停止。未コミットのトランザクションはロールバック。
SHUTDOWN ABORT
強制的に停止。メモリ上の変更内容等書き出さないため、データの損失の可能性がある。停止できない場合の最終手段。

ex.

インスタンスの起動
  • ログインしないでSQL *PLUSを起動
    sqlplus /nolog
  • SYSDBA権限でORACLEにログイン
    connect sys/password as sysdba
ここからは各コマンドのログを含めてケースバイケースでログをとってみた。意外とくだらないが、ログの違いがわかる。
  1. nomountで起動し、通常停止(省略系)。
    SQL> startup nomount
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    SQL> shutdown
    ORA-01507: ???????????????????
    
    
    ORACLEインスタンスがシャットダウンされました。
    		
  2. mountで起動し、通常停止(省略系)。
    SQL> startup mount
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    SQL> shutdown
    ORA-01109: データベースがオープンされていません。
    
    
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  3. 通常起動で、通常停止(省略系)。
    SQL> startup open
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  4. 読み取り専用で起動し、通常停止(省略系)。
    SQL> startup open read only
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  5. 通常起動(省略系)で、通常停止。
    SQL> startup
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown normal
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  6. 通常起動(省略系)で、Transactional停止。
    SQL> startup
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown transactional
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  7. 通常起動(省略系)で、Immediate停止。
    SQL> startup
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown immediate
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
    		
  8. 通常起動(省略系)で、Abort停止。
    SQL> startup
    ORACLEインスタンスが起動しました。
    
    Total System Global Area  612368384 bytes
    Fixed Size                  1250452 bytes
    Variable Size             201329516 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                2940928 bytes
    データベースがマウントされました。
    データベースがオープンされました。
    SQL> shutdown abort
    ORACLEインスタンスがシャットダウンされました。
    		
    1. ヒント集

      • ・Enterprise Managerのポート番号は、Oracleをインストールしたフォルダの\install\portlist.iniに記述されている
      • ・Enterprise ManagerのURLは「\install」フォルダの「readme.txt」の中に「Enterprise Manager Database Control URL」として記載されている
      • ・iSQL*Plusのポート番号は、ORACLEをインストールしたフォルダの\install\portlist.iniに記述されます
      Oracleエラーメッセージ集
      http://otn.oracle.co.jp/onlineservices/index.html
      hotstファイル
      C:\WINDOWS\system32\drivers\etc\hosts

      制約について

      NOT NULL制約
      NULL値の入力を禁止します。この制約をつけた列には必ず値を入力する必要があります。
      一意(UNIQUE)制約
      表の中で一意である必要があります。同じ値を格納することを禁止します。ただし、NULL値は一意制約の対象外なのでNULL値があってもエラーになりません。
      主キー(PRIMARY KEY)制約
      表の中の行を一意に識別するための主キーを設定します。主キー制約は、表に一つだけつけることができる。さたにNULL値の入力を禁止します。
      CHECK制約
      列に条件を指定することにより、条件に合わない値を禁止します。
      外部キー(FOREIGN KEY)制約
      他の表と親子関係にすることができます。値を参照する表を「子表」値を持つ列を「外部キー」といい、値を参照される表を「親表」、値を持つ列を「親キー」という。

      データ操作言語

      (DML:Data Manipulation Language)

      SELECT文

      表に格納されているデータを検索する

      構文

      • select <列名> from <表名>;
      • select <列名1>, <列名2> ... from <表名>;
      • select <列名> as <別名> from <表名>;
      • select <列名> <別名> from <表名>;
      • select * from <表名>;
      • select distinct <列名> from <表名>;
      • select <列名> from <表名> where <抽出する条件>;
      • select <列名> from <表名> where <抽出する条件> order by <列名1>, <列名2>, <列名3...>;

      INSERT文

      表にデータを追加する

      構文

      • insert into <表名> ( <列名1>, <列名2>, ... <列名n> ) values ( <値1>, <値2>, ... <値n> );

      UPDATE文

      表に格納されているデータを更新する

      • update <表名> set <列名1> = <値>, <列名1> = <値>, ... <列名n> = <値> where <抽出する条件>;

      DELETE文

      表に核のされているデータを削除する

      • delete from <表名> where <抽出する条件>;

      数値型の計算

      構文

      • 足し算 <列名または数値> + <列名または数値>
      • 引き算 <列名または数値> - <列名または数値>
      • 掛け算 <列名または数値> * <列名または数値>
      • 割り算 <列名または数値> / <列名または数値>

      優先順位

      1. 括弧内
      2. 掛け算(*)、割り算(/)
      3. 足し算(+)、引き算(-)

      その他

      nvl関数(NULL値を置換する)

      構文

      nvl(<対象の値>,<置き換える値>)
      • 対象の値 : 列名または値
      • 置き換える値 : NULL値だったときに置き換える値

      文字型に文字をつなげる

      構文

      <列名または文字列> || <列名または文字列>

      文字列を指定する場合は「’」シングルコーテーションで括ります。

      種類 関数 説明 構文
      文字列関数 substr 文字列の一部分を返す substr( <文字列>, <開始位置>, <文字数> )
      length 文字列の長さを返す length( <文字列> )
      upper 文字列をすべて大文字に変換する upper( <文字列> )
      lower 文字列をすべて小文字に変換する lower( <文字列> )
      算術関数 round 四捨五入した値を返す round( <数値>, <小数点以下n桁> )
      trunc 切り捨てた値を返す trunc( <数値>, <小数点以下n桁> )
      ceil 最も小さな整数の値を返す ceil( <数値> )
      floor 最も大きな整数の値を返す floor( <数値> )
      abs 絶対値を返す abs( <数値> )
      mod 余りを返す mod( <数値1>, <数値2> )
      日付関数 add_months 月を加算する add_months( <日付>, <数値> )
      last_day 月の月末を返す last_day( <日付> )
      sysdate 現在の日付を返す sysdate
      データ型変換関数 to_char 文字列に変換する to_char( <日付型>, <日付書式モデル> )
      to_number 数値型に変換する to_number( <数値型>, <数値書式モデル> )
      to_date 日付型に変換する to_date( <文字列方または数値型>, <日付書式モデル> )
      書式 説明
      yyyy 西暦(4桁)
      yy 西暦(2桁)
      mon 月(JAN~DEC)
      mm 月(01~12)
      dd 日(01~31)
      hh24 時間(24時間表示)
      hh 時間(12時間表示)
      mi 分(00~59)
      ss 秒(00~59)
      day 曜日(日曜日~土曜日)
      dy 曜日(日~土)
      書式 説明
      9 数値を返す
      0 数値がない場合に0で埋める
      $ 数値の前に「$」を付加する
      , 指定した位置にカンマを付加する
      . 指定した位置に小数点を付加する

      WHERE句

      比較条件 意味 読み方
      左辺の値と右辺の値が等しい イコール
      <>または!= 左辺の値と右辺の値が等しくない ノットイコール
      左辺の値が右辺の値より大きい 大なり
      左辺の値が右辺の値より小さい 小なり
      >= 左辺の値が右辺の値以上 大なりイコール
      <= 左辺の値が右辺の値以下 小なりイコール

      優先順位

      1. 括弧内
      2. NOT条件
      3. AND条件
      4. OR条件

      AND、OR、NOT

      • <条件1> and <条件2>
      • <条件1> or <条件2>
      • not <条件>
      複数の値と比較する場合(IN条件)
      <列名> in ( <値1>, <値2>, <値3...> )
      範囲指定をして抽出する場合(BETWEEN条件)
      <列名> between <値1> and <値2>
      NULLデータ抽出
      <列名> is null
      部分的な一致検索をする条件(LIKE条件)
      <列名> like '<値>%' (前方一致検索) <列名> like '%<値>%' (中間一致検索) <列名> like '%<値>' (後方一致検索)
      データを降順に並び替える
      order by <列名> desc;
      等価結合
      select <表名>.<列名>, <表名>.<列名> ... from <表名1>, <表名2>, ... where <表名1>.<列名> = <表名2>.<列名>; select <表名>.<列名>, <表名>.<列名> ... from <表名1> <別名1>, <表名2> <別名2>, ... where <別名1>.<列名> = <別名2>.<列名>;
      非等価結合
      等価結合のwhere条件に「=」以外の演算子を使用して結合する
      内部結合(INNER JOIN)
      select <表名>.<列名>, <表名>.<列名> ... from <表名1> inner join <表名2> on <表名1>.<列名> = <表名2>.<列名> where <抽出する条件>;
      外部結合
      左外部結合(LEFT OUTER JOIN)
      select <表名>.<列名>, <表名>.<列名> ... from <表名1> left outer join <表名2> on <表名1>.<列名> = <表名2>.<列名> where <抽出する条件>;
      右外部結合(RIGHT OUTER JOIN)
      select <表名>.<列名>, <表名>.<列名> ... from <表名1> right outer join <表名2> on <表名1>.<列名> = <表名2>.<列名> where <抽出する条件>;
      完全外部結合(FULL OUTER JOIN)
      select <表名>.<列名>, <表名>.<列名> ... from <表名1> full outer join <表名2> on <表名1>.<列名> = <表名2>.<列名> where <抽出する条件>;
      自己結合
      自分の表に対して結合することを言う。結合条件を記述する際には、表を区別するために、別名を使用します。
      集計関数
      関数名 説明 構文
      count関数 指定した列の件数をカウントする count(*), count(列名), count(distinct 列名)
      sum関数 指定した列の合計値を求める sum(列名)
      avg関数 指定した列の平均値を求める avg(列名)
      max関数 指定した列の最大値を求める max(列名)
      min関数 指定した列の最小値を求める min(列名)
      グループ化する
      select <列名> from <表名> where <抽出する条件> group by <集計する列名1>, <集計する列名2>, ... order by <並べ替えする列名>;
      グループ化したデータを抽出する
      select <列名> from <表名> where <抽出する条件> group by <集計する列名1>, <集計する列名2>, ... having <抽出する条件> order by <並べ替えする列名>;
      副問い合わせ
      select <列名> from <表名> where <抽出する列名> <比較演算子> ( select <列名> from <表名> where <抽出する条件> );
      EXISTS句を使った副問い合わせ
      exists( 副問い合わせ )
      相関副問い合わせ
      外側の問い合わせのレコードを、副問い合わせの抽出条件で直接比較します。つまり、外側の問い合わせと副問い合わせが相互に関係します。

      データ定義言語

      (DDL:Data Definition Language)

      CREATE文

      データベースのオブジェクトを作成する

      構文
      create table <スキーマ名>.<表名>
      (
      <列名1> <データ型1> <列の制約1>,
      <列名2> <データ型2> <列の制約2>,
      ・		・			・
      ・		・			・
      ・		・			・
      <列名n> <データ型n> <列の制約n>
      constraint <表の制約>
      );
      		
      列の制約
      • NOT NULL制約
      • Default句
      表の制約
      • 主キー制約
      • 一意制約
      • 外部キー制約
      • CHECK制約

      ALTER文

      データベースのオブジェクトの定義を変更する

      構文

      追加
      alter table <スキーマ名>.<表名>
      add ( <列名1> <データ型1> <列の制約1> )
      add ( <列名2> <データ型2> <列の制約2> );
      		
      変更
      alter table <スキーマ名>.<表名>
      modify ( <列名1> <データ型1> <列の制約1> )
      modify ( <列名2> <データ型2> <列の制約2> );
      		
      削除
      alter table <スキーマ名>.<表名>
      drop ( <列名1> <列名2> );
      		
      制約追加
      alter table <スキーマ名>.<表名>
      add constraint <制約名> <制約> ( <列名> );
      		
      制約削除
      alter table <スキーマ名>.<表名>
      drop constraint <制約名>;
      		

      DROP文

      データベースのオブジェkとを削除する 構文 drop table <スキーマ名>.<表名>;

      GRANT文

      オブジェクトを操作する権限をユーザに与える

      REBOKE文

      オブジェクトを操作する権限をユーザーから奪う

      索引の作成

      create index <スキーマ名>.<索引名>
      on <スキーマ名>.<表名>
      ( <列名1>, <列名2>, ... );
      

      索引の削除

      drop index <スキーマ名>.<索引名>;

      ビューの作成

      create view <スキーマ名>.<ビュ-名> as <select文>;

      ビューの削除

      drop view <スキーマ名>.<ビュ-名>;

      SQL*Plus

      set <システム変数> <設定値>

      システム変数 設定値 初期値 説明
      colsep 文字列 空白 列と列の間に表示する文字列
      feedback on/off on SQLの実行結果の件数を表示する/しない
      feedback 数値 6 SQLの実行結果の件数が、指定した数値以上の場合に件数を表示
      heading on/off on 列名を表示する/しない
      linesize 数値 80 SQLの実行結果の1行の文字数
      pagesize 14 SQLの実行結果の1ページの行数
      pause on/off off SQLの実行結果が複数ページになる場合、1ページごとに表示を一時停止する/しない
      timing on/off off SQLを実行した処理時間を出力する/しない
      show <システム変数>
      all すべて表示

      コマンド

      表の定義を確認
      desc <テーブル名>
      describe <テーブル名>
      

      実行計画と実行統計

      set autotrace off
      実行計画と実行統計を出力しない
      set autotrace on
      実行計画と実行統計を出力する
      set autotrace on explain
      実行計画のみ出力する
      set autotrace on statistics
      実行統計のみ出力する
      set autotrace traceonly
      SQLの実行結果を出力せずに実行計画、実行統計を出力する
      実行統計の項目
      db block gets
      メモリに論理アクセスしたブロック数
      consistent gets
      メモリに論理アクセスしたブロック数
      physical reads
      ディスクに物理アクセスしたブロック数
      redo size
      REDOログに書き込みしたバイト数
      rows processed
      処理対象の行数

      実行時間を計測

      • set timing on
      • set timing off

      データディクショナリ(?)

      • user_constraints
      • user_cons_columns
      • user_tables
      • all_indexes
      • dba_data_files

      トランザクション制御文

      COMMIT文

      トランザクションを確定する。更新したデータを確定する。

      構文
      commit

      ROLLBACK文

      トランザクションを取り消しする

      構文
      rollback

      ACID特性

      原子性(Atomicity)
      トランザクションは、処理をそれ以上分割することのできない最小の作業単位となる。「一連の処理が正常に終了する」または「正常に終了しない場合は、元の状態に戻る」どちらかになることを意味する
      一貫性(Consistency)
      トランザクションは、トランザクションの開始前とトランザクションの終了後で、データの整合性を維持し、一貫した状態を保っていることを意味する
      独立性(Isolation)
      他のトランザクションの影響を受けず、完全に独立している状態を意味する。あるトランザクションが処理している途中のデータは、他のトランザクションで見ることはできない。
      耐久性(Durability)
      障害に対する耐久性を意味する。一度確定されたトランザクションは生涯が発生しても確定前の状態に戻ることはない。

      トランザクションの自動終了

      DDL文発行時
      トランザクションの途中でDDL文(CREATE、ALTER、DROPなど)を実行すると、トランザクションが自動的にコミットされます。
      セッション終了時
      Oracleとの接続を終了した場合は、トランザクションが自動的にコミットされます。
      異常終了時
      システム異常や電源段などの障害が発生して、Oracleとの接続が強制的に切断された場合は、トランザクションは自動的にロールバックされる。

      ロックの分類

      ロックモード

      • 共有ロック

        他のトランザクションは共有ロックのみ可能

      • 排他ロック

        他のトランザクションはロック不可

      ロックの粒度

      • 表レベルロック

        表単位でロック

      • 行レベルロック

        行単位でロック

      ロックの制御

      • 暗黙的ロック

        DMLを実行すると自動的にかかるロック

      • 明示的ロック

        ロックをかけるSQL文を実行して自らかけるロック

      ex
      	lock table emp in (ロックモード)
      
      ロックモード 説明
      share update mode 表に対して行共有ロックします
      row exclusive mode 表に対して行排他ロックします
      share mode 表全体を共有ロックします
      share row exclusive mode 表全体を共有ロックし、さらに表に対して行排他ロックします
      exclusive mode 表全体を排他ロックします
      ロックの可否
        取得しようとしているロックモード
      行排他 行共有 共有 共有行排 他 排他
      既に取得されている
      ロックモード
      行排他 可能 可能 可能 可能 拒否
      行共有 可能 可能 拒否 拒否 拒否
      共有 可能 拒否 可能 拒否 拒否
      共有行排他 可能 拒否 拒否 拒否 拒否
      排他 拒否 拒否 拒否 拒否 拒否

      ロックのかけ方

      悲観的ロック
      データを読み取った時点でかけておくロック
      楽観的ロック
      データを更新する直前にかけるロック

      トランザクションの分離レベル

      複数のトランザクション間の分離性を表す指標
      ロストアップデート
      トランザクションAで変更した値が、トランザクションBにより別の値に変更されてしまうことを指す
      ダーティリード
      トランザクションAがある行を変更したあと、トランザクションBがその行を読み取り、トランザクションAがロールバックすると、トランザクションBがコミットされていない状態のデータを読み取ってしまうことを指す
      ノンリピータブルリード
      トランザクションAがある行を読み取ったあと、トランザクションBがその行を変更し、その後、トランザクションAが再度同じ行を読み取ると、トランザクションAは同じ行に対して、1回目と2回目で異なる値を読み取ってしまうこと指す
      ファントムリード
      トランザクションAがある条件に満たす行を読み取ったあとで、トランザクションBがその条件にあう行を追加し、その後、トランザクションAが再度同じ条件で検索すると、1回目で存在しなかった行を読み取ってしまうっことを指す
      分離レベル
      READ UNCOMMITTED(未コミット読み取り)
      共有ロックも排他ロックもされない
      READ COMMITTED(コミット読み取り)
      データを読み取られている間共有ロックをするため、他のトランザクションによってコミットされていない状態のデータを読み取ることはできない
      REPEATEBLE READ(反復可能読み取り)
      トランザクションが終了するまで共有ロックをするため、一度読み取ったデータが別のトランザクションによって変更されることはありません
      SERIALIZABLE(直列化)
      他のトランザクションから完全に分離され、他のトランザクションに影響を一切与えません。トランザクションを実行中に、他のトランザクションが終了するまで、データアクセスしても待機状態になります。
      分離レベル ロストアップデート ダーティリード ノンリピータブルリード ファントムリード
      READ UNCOMMITTED 発生しない 発生する 発生する 発生する
      READ COMMITTED 発生しない 発生しない 発生する 発生する
      REPEATABLE READ 発生しない 発生しない 発生しない 発生する
      SERIALIZABLE 発生しない 発生しない 発生しない 発生しない

      ユーザに関して

      データベース管理アカウント

      SYS、SYSTEM、DBSNMP、SYSMAN

      サービスに関して

      リスナー
      Oracle<ORACLE_HOME>TNSlistener
      Oracle Database インスタンス
      OracleService<ORACLE_SID>
      Enterprise Manager Database Controlのサービス
      OracleDBConsole<ORACLE_SID>
      iSQL*Plusのサービス
      Oracle<ORACLE_HOME>iSQL*Plus
      ジョブスケジューラのサービス
      OracleJobScheduler<ORACLE_SID>
      ex.(http://www.shift-the-oracle.com/config/oracle-environment-variable.html)
      <ORACLE_HOME>	:	<ORACLE_BASE>/product/10.1.0/db_1	
      <ORACLE_SID>	:	ORCL
      <ORACLE_BASE>	:	C:\oracle\product\10.1.0
      

      キーワード集

      Microsoft Loopback Adapter
      インストール後ルーティング不可能なアドレスを設定していたが・・・何ゆえ? 仮想的なネットワークアダプタで、内部で仮想ネットワークを構築するため使用するみたいなのだが・・・
      DBCA
      Database Configuration Assistants
      SGA(System Global Area)
      起動したときに確保される領域。主にキャッシュとして使われる
      PGA(Program Global Area)
      サーバープロセスごとに作成され、セッション情報、カーソル情報、ソート領域メモリなどを保持する領域

      グローバル・データベース名

      データベースを一意に識別するためのフルネームです。 書式は、ローカルデータベース名とデータベースドメイン名から構成された

      <DATABASE_NAME>.<DATABASE_DOMAIN>

      になります。

      <DATABASE_DOMAIN>

      の部分は、データベースを配置するネットワークドメインを指定するのが一般的です。 ただし、ネットワークドメインにしなくても問題ありませんし、

      <DATABASE_DOMAIN>

      の部分は省略することも可能です。

      SID(System Identifer)

      データベースを実行するインスタンスを識別するための名前です。 SIDによって、同一サーバ上で複数インスタンスが稼動していても識別することができます。 環境変数ORACLE_SID(Oracleシステム識別子)の値になります。 SIDはインスタンスの他にも、データファイル/REDOログファイル/制御ファイル/初期化パラメータファイル などのファイル名で使用されます。

      未分類

      • 物理バックアップ
      • 論理バックアップ
      • 一貫性バックアップ(オフラインバックアップまたはコールドバックアップ)
      • 非一貫性バックアップ(オンラインバックアップまたはホットバックアップ)
      • データベース・ログ・モード
        • アーカイブログ・モード(アーカイブ・モード)
        • ノーアーカイブログ・モード(非アーカイブ・モード)
      • バックアップモード
      • シャットダウン
        • normal
        • transactional
        • immediate
      初期化パラメータ
      \database\init.ora
      パスワードファイル
      \database\pwd.ora