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を作るとき
データベース・コンフィギィレーション
- スタート
- プログラム
- Oracle-OraDb10g_home1
- コンフィグレーションおよび移行ツール
- データベース・コニフィギュレーション・アシスタント
リスナーの起動
Database Controlを起動させるにはリスナーを起動しておく必要がある
- 「ファイル名を指定して実行」を使って「lsnrctl」を起動する
- 起動コマンド「start」を使う
リスナーの停止
停止コマンド「stop」を使う
LSNRCTLユーティリティを終わらせる(リスナー)
「exit」を使う
リスナーの現在の状態を確認する
「status」を使う
Oracle Enterprise Managerの起動
- Internet Explorerを起動する
- データベースの作成完了になったときに出ていた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
ここからは各コマンドのログを含めてケースバイケースでログをとってみた。意外とくだらないが、ログの違いがわかる。
-
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インスタンスがシャットダウンされました。
-
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インスタンスがシャットダウンされました。
-
通常起動で、通常停止(省略系)。
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インスタンスがシャットダウンされました。
-
読み取り専用で起動し、通常停止(省略系)。
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インスタンスがシャットダウンされました。
-
通常起動(省略系)で、通常停止。
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インスタンスがシャットダウンされました。
-
通常起動(省略系)で、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インスタンスがシャットダウンされました。
-
通常起動(省略系)で、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インスタンスがシャットダウンされました。
-
通常起動(省略系)で、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インスタンスがシャットダウンされました。
- ・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)制約
- 他の表と親子関係にすることができます。値を参照する表を「子表」値を持つ列を「外部キー」といい、値を参照される表を「親表」、値を持つ列を「親キー」という。
- 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 into <表名> ( <列名1>, <列名2>, ... <列名n> ) values ( <値1>, <値2>, ... <値n> );
- update <表名> set <列名1> = <値>, <列名1> = <値>, ... <列名n> = <値> where <抽出する条件>;
- delete from <表名> where <抽出する条件>;
- 足し算 <列名または数値> + <列名または数値>
- 引き算 <列名または数値> - <列名または数値>
- 掛け算 <列名または数値> * <列名または数値>
- 割り算 <列名または数値> / <列名または数値>
- 括弧内
- 掛け算(*)、割り算(/)
- 足し算(+)、引き算(-)
- 対象の値 : 列名または値
- 置き換える値 : NULL値だったときに置き換える値
- 括弧内
- NOT条件
- AND条件
- OR条件
- <条件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( 副問い合わせ )
- 相関副問い合わせ
- 外側の問い合わせのレコードを、副問い合わせの抽出条件で直接比較します。つまり、外側の問い合わせと副問い合わせが相互に関係します。
- 構文
-
create table <スキーマ名>.<表名> ( <列名1> <データ型1> <列の制約1>, <列名2> <データ型2> <列の制約2>, ・ ・ ・ ・ ・ ・ ・ ・ ・ <列名n> <データ型n> <列の制約n> constraint <表の制約> );
- 列の制約
-
- NOT NULL制約
- Default句
- 表の制約
-
- 主キー制約
- 一意制約
- 外部キー制約
- CHECK制約
- 追加
-
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 <制約名>;
- 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
- 構文
- rollback
- 原子性(Atomicity)
- トランザクションは、処理をそれ以上分割することのできない最小の作業単位となる。「一連の処理が正常に終了する」または「正常に終了しない場合は、元の状態に戻る」どちらかになることを意味する
- 一貫性(Consistency)
- トランザクションは、トランザクションの開始前とトランザクションの終了後で、データの整合性を維持し、一貫した状態を保っていることを意味する
- 独立性(Isolation)
- 他のトランザクションの影響を受けず、完全に独立している状態を意味する。あるトランザクションが処理している途中のデータは、他のトランザクションで見ることはできない。
- 耐久性(Durability)
- 障害に対する耐久性を意味する。一度確定されたトランザクションは生涯が発生しても確定前の状態に戻ることはない。
- DDL文発行時
- トランザクションの途中でDDL文(CREATE、ALTER、DROPなど)を実行すると、トランザクションが自動的にコミットされます。
- セッション終了時
- Oracleとの接続を終了した場合は、トランザクションが自動的にコミットされます。
- 異常終了時
- システム異常や電源段などの障害が発生して、Oracleとの接続が強制的に切断された場合は、トランザクションは自動的にロールバックされる。
-
共有ロック
他のトランザクションは共有ロックのみ可能
-
排他ロック
他のトランザクションはロック不可
表レベルロック
表単位でロック
行レベルロック
行単位でロック
暗黙的ロック
DMLを実行すると自動的にかかるロック
明示的ロック
ロックをかけるSQL文を実行して自らかけるロック
- ロストアップデート
- トランザクションAで変更した値が、トランザクションBにより別の値に変更されてしまうことを指す
- ダーティリード
- トランザクションAがある行を変更したあと、トランザクションBがその行を読み取り、トランザクションAがロールバックすると、トランザクションBがコミットされていない状態のデータを読み取ってしまうことを指す
- ノンリピータブルリード
- トランザクションAがある行を読み取ったあと、トランザクションBがその行を変更し、その後、トランザクションAが再度同じ行を読み取ると、トランザクションAは同じ行に対して、1回目と2回目で異なる値を読み取ってしまうこと指す
- ファントムリード
- トランザクションAがある条件に満たす行を読み取ったあとで、トランザクションBがその条件にあう行を追加し、その後、トランザクションAが再度同じ条件で検索すると、1回目で存在しなかった行を読み取ってしまうっことを指す
- READ UNCOMMITTED(未コミット読み取り)
- 共有ロックも排他ロックもされない
- READ COMMITTED(コミット読み取り)
- データを読み取られている間共有ロックをするため、他のトランザクションによってコミットされていない状態のデータを読み取ることはできない
- REPEATEBLE READ(反復可能読み取り)
- トランザクションが終了するまで共有ロックをするため、一度読み取ったデータが別のトランザクションによって変更されることはありません
- SERIALIZABLE(直列化)
- 他のトランザクションから完全に分離され、他のトランザクションに影響を一切与えません。トランザクションを実行中に、他のトランザクションが終了するまで、データアクセスしても待機状態になります。
- リスナー
- 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>
- Microsoft Loopback Adapter
- インストール後ルーティング不可能なアドレスを設定していたが・・・何ゆえ? 仮想的なネットワークアダプタで、内部で仮想ネットワークを構築するため使用するみたいなのだが・・・
- DBCA
- Database Configuration Assistants
- SGA(System Global Area)
- 起動したときに確保される領域。主にキャッシュとして使われる
- PGA(Program Global Area)
- サーバープロセスごとに作成され、セッション情報、カーソル情報、ソート領域メモリなどを保持する領域
- 物理バックアップ
- 論理バックアップ
- 一貫性バックアップ(オフラインバックアップまたはコールドバックアップ)
- 非一貫性バックアップ(オンラインバックアップまたはホットバックアップ)
-
データベース・ログ・モード
- アーカイブログ・モード(アーカイブ・モード)
- ノーアーカイブログ・モード(非アーカイブ・モード)
- バックアップモード
-
シャットダウン
- normal
- transactional
- immediate
- 初期化パラメータ
\database\init .ora - パスワードファイル
\database\pwd .ora
ヒント集
制約について
データ操作言語
(DML:Data Manipulation Language)SELECT文
表に格納されているデータを検索する
構文
INSERT文
表にデータを追加する
構文
UPDATE文
表に格納されているデータを更新する
DELETE文
表に核のされているデータを削除する
数値型の計算
構文
優先順位
その他
nvl関数(NULL値を置換する)
構文
nvl(<対象の値>,<置き換える値>)
文字型に文字をつなげる
構文
<列名または文字列> || <列名または文字列>
文字列を指定する場合は「’」シングルコーテーションで括ります。
種類 | 関数 | 説明 | 構文 |
---|---|---|---|
文字列関数 | 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句
比較条件 | 意味 | 読み方 |
---|---|---|
= | 左辺の値と右辺の値が等しい | イコール |
<>または!= | 左辺の値と右辺の値が等しくない | ノットイコール |
> | 左辺の値が右辺の値より大きい | 大なり |
< | 左辺の値が右辺の値より小さい | 小なり |
>= | 左辺の値が右辺の値以上 | 大なりイコール |
<= | 左辺の値が右辺の値以下 | 小なりイコール |
優先順位
AND、OR、NOT
データ定義言語
(DDL:Data Definition Language)CREATE文
データベースのオブジェクトを作成する
ALTER文
データベースのオブジェクトの定義を変更する
構文
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 <テーブル名>
実行計画と実行統計
実行統計の項目
実行時間を計測
データディクショナリ(?)
トランザクション制御文
COMMIT文
トランザクションを確定する。更新したデータを確定する。
ROLLBACK文
トランザクションを取り消しする
ACID特性
トランザクションの自動終了
ロックの分類
ロックモード
ロックの粒度
ロックの制御
ex lock table emp in (ロックモード)
ロックモード | 説明 |
---|---|
share update mode | 表に対して行共有ロックします |
row exclusive mode | 表に対して行排他ロックします |
share mode | 表全体を共有ロックします |
share row exclusive mode | 表全体を共有ロックし、さらに表に対して行排他ロックします |
exclusive mode | 表全体を排他ロックします |
取得しようとしているロックモード | ||||||
---|---|---|---|---|---|---|
行排他 | 行共有 | 共有 | 共有行排 | 他 排他 | ||
既に取得されている ロックモード |
行排他 | 可能 | 可能 | 可能 | 可能 | 拒否 |
行共有 | 可能 | 可能 | 拒否 | 拒否 | 拒否 | |
共有 | 可能 | 拒否 | 可能 | 拒否 | 拒否 | |
共有行排他 | 可能 | 拒否 | 拒否 | 拒否 | 拒否 | |
排他 | 拒否 | 拒否 | 拒否 | 拒否 | 拒否 |
ロックのかけ方
悲観的ロック
データを読み取った時点でかけておくロック楽観的ロック
データを更新する直前にかけるロックトランザクションの分離レベル
複数のトランザクション間の分離性を表す指標
分離レベル
分離レベル | ロストアップデート | ダーティリード | ノンリピータブルリード | ファントムリード |
READ UNCOMMITTED | 発生しない | 発生する | 発生する | 発生する |
READ COMMITTED | 発生しない | 発生しない | 発生する | 発生する |
REPEATABLE READ | 発生しない | 発生しない | 発生しない | 発生する |
SERIALIZABLE | 発生しない | 発生しない | 発生しない | 発生しない |
ユーザに関して
データベース管理アカウント
SYS、SYSTEM、DBSNMP、SYSMAN
サービスに関して
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
キーワード集
グローバル・データベース名
データベースを一意に識別するためのフルネームです。 書式は、ローカルデータベース名とデータベースドメイン名から構成された
<DATABASE_NAME>.<DATABASE_DOMAIN>
になります。
<DATABASE_DOMAIN>
の部分は、データベースを配置するネットワークドメインを指定するのが一般的です。 ただし、ネットワークドメインにしなくても問題ありませんし、
<DATABASE_DOMAIN>
の部分は省略することも可能です。
SID(System Identifer)
データベースを実行するインスタンスを識別するための名前です。 SIDによって、同一サーバ上で複数インスタンスが稼動していても識別することができます。 環境変数ORACLE_SID(Oracleシステム識別子)の値になります。 SIDはインスタンスの他にも、データファイル/REDOログファイル/制御ファイル/初期化パラメータファイル などのファイル名で使用されます。