「プロとしてのOracle入門」読了
- 作者: 松下雅,舛井智行,古賀加奈
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2008/10/29
- メディア: 単行本
- 購入: 2人 クリック: 40回
- この商品を含むブログ (8件) を見る
以下メモ。
Oracle構成要素
データベース(ディスク)
- データファイル
- ユーザーが使用するデータ
- データディクショナリ(管理用データ)
- 制御ファイル(DBの物理構造を保持)
- REDOログファイル
インスタンス(メモリ)
- SGA(System Global Area)
- データベースバッファキャッシュ(データファイルのユーザー使用データ配置場所)
- REDOログバッファ(REDOログファイル配置場所)
- 共有プール
- ディクショナリキャッシュ(データディクショナリ配置場所)
- ライブラリキャッシュ(SQLの実行計画を配置する、保存はされない)
- バックグラウンドプロセス
メモリ解放タイミング
LRU(Least Recently Used)
Oracle論理構造
BEST構造
- Block
- Oracleが認識する最小単位
- Extent
- 連続したブロックの固まり
- Segment
- 1つ以上のExtentの固まり(=テーブル、索引)
- TableSpace(表領域)
- 1つ以上のSegmentから成る。1つ以上のデータファイルから構成される。
表領域の種類
- SYSTEM表領域
- (必須)データディクショナリが保存される。
- SYSAUX表領域
- Auxiliary(補助)。オプションのデータディクショナリが保存される。
- UNDO表領域
- 変更前の情報が保存される。
- 一時表領域
- メモリが足らないときに使用される。
- ユーザー作成表領域
- ユーザー使用データが保存される。
データディクショナリの種類
名前の接頭句で識別
- DBA_
- 全ての情報を保持。アクセスには管理者権限が必要。
- ALL_
- 現在アクセスしているユーザがアクセスできる情報全て。一般ユーザでもアクセス可能。
- USER_
- 現在アクセスしているユーザが所有する情報全て。一般ユーザでもアクセス可能。
文字型
- CHAR型(固定長)
- 設定したサイズ上限に見たない分はスペースが入る。サイズ上限は2000バイト。
- VARCHAR2型(可変長)
- 設定したサイズ上限に関わらず格納した分だけ領域を確保。サイズ上限は4000バイト。更新後サイズが減る場合は減少分をスペースで埋める。更新後サイズが増える場合は更新前サイズを超える分は分断されて格納される。
ワイルドカード(%,_)
- %
- 複数文字の代用
- _
- 1文字の代用
関数
- 単一行間数
- 1行に対して1つの結果を返す(LENGTH,UPPER,SYSDATE,...)
- グループ関数
- 複数行に対して結果を返す(AVG,SUM,...)
dualテーブル
以下のように使用するダミーテーブル
select sysdate from dual;
NVL関数
select nvl(comm, 0) from emp;
AVG関数
select avg(sal) from emp; --グループ化する列を指定 select deptno, avg(sal) from emp group by deptno;
結合
--等価結合 select d.deptno, e.ename, e.sal, d.loc from dept d, emp e where d.deptno = e.deptno; --外部結合(e.deptnoはマッチしなくてもすべて表示) select d.deptno, e.ename, e.sal, d.loc from dept d, emp e where d.deptno = e.deptno(+);
比較演算子
--マネージャより給料がいいヤツ select ename from emp where sal > ANY (select sal from emp where job = 'MANAGER') and job <> 'MANAGER';
列追加、削除
alter table tbl_test add (column5 varchar2(20)); alter table tbl_test drop (column5);
SQL*Plus
SPOOL機能
ログを残す
spool c:\select.log select * from dept; spool off
SETコマンド
--1行に表示される文字数を設定 set line 90
設定値表示
spool c:\setting.txt show all --設定値一覧が表示される spool off
置き換え機能
C[HANGE]/(変更したい文字列)/(変更後の文字列)
> select * form dept; --エラー発生 > list --バッファ内のSQL表示 1 select * form dept; > change/form/from 1 select * from dept; > list 1 select * from dept; > / --バッファ内のSQLを実行
条件追加
A[PPEND] <文字列>
> list 1 select * from emp; > a where deptno = 10; 1 select * from emp where deptno = 10; > list 1 select * from emp where deptno = 10; > /
ユーザー
ユーザーの種類
- 管理者ユーザー
- sysユーザー
- systemユーザー
- 一般ユーザー
- scottユーザー
ユーザーの作成
- ユーザー情報
- ユーザー名
- パスワード
- デフォルト表領域
- 指定しないとオブジェクトがSYSTEM表領域に作成されてしまうので必ず作成する
- Quota(非必須)
- 使用できる表領域の上限
- デフォルト一時表領域(非必須)
ユーザー情報の確認
--dba_usersデータディクショナリビューを使用 select username, password, default_tablespace, temporary_tablespace from dba_users; --Quota情報の確認 select tablespace_name, username, max_bytes from dba_ts_quotas;
権限とロール
権限の種類
- システム権限
- 管理者ユーザーが明示的に作成した各ユーザーに付与する必要がある
- システム権限を付与しないと一般ユーザーはDBへの接続もできない
- CREATE SESSION, CREATE TABLESPACE等
- オブジェクト権限
- 特定の操作を実行する為の権限
- オブジェクトの所有者が付与する
- SELECT, INSERT, UPDATE等
権限の確認
--システム権限はuser_sys_privsデータディクショナリビューを使用 select username, privilege, admin_option from user_sys_privs; --オブジェクト権限はuser_tab_privsデータディクショナリビューを使用 select grantee, owner, table_name, privilege from user_tab_privs;
ロール
- 複数の権限を1つにまとめたもの
- デフォルトで用意されているロール
- CONNECT
- CREATEセッションシステム権限のみ
- RESOURCE
- DBA
- CONNECT
ロールの確認
--dba_rolesデータディクショナリビューを使用 select * from dba_roles;
索引(インデッス)
- Oracleでは索引での検索時に「B*Tree」を使用
- 索引は等価検索か前方一致検索で使用する
索引の確認
--indデータディクショナリビューを使用 select index_name, table_name, tablespace_name from ind; --索引の構造の確認 select table_name, index_name, column_name from user_ind_collumns;
ビュー
- 「仮想表」とも呼ばれる
- ビューにはデータそのものは含まれない
- データディクショナリに登録される
ビューのメリット
- SQL簡略化
- セキュリティ向上
- 利便性向上
ビューの確認
--user_viewsデータディクショナリビューを使用 select view_name, text from user_views;
シノニム
オブジェクトに別名を付けて登録しておくオブジェクト
シノニムのメリット
- セキュリティ向上
- オブジェクト名の簡略化
シノニムの種類
- プライベートシノニム
- パブリックシノニム
シノニムの確認
select synonym_name, table_owner, table_name from syn; --tabデータディクショナリビューでも確認できる(TABTYPEがSYNONYMになっている) select * from tab;
パブリックシノニムの確認
select owner, synonym_name, table_owner, table_name from all_synonyms;