ORACLE MANIAC

ORACLE技を研究中...

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

パラレルDML ORACLE

パラレルDMLを実行する場合、注意点は以下の通りだ。

1.PARALLEL_MAX_SERVERSの値を確認
2.実行前に、
  alter session enable parallel dml;
3.実行
  delete /*+ PARALLEL(テーブル, 4) */ FROM テーブル;
4.V$PQ_SESSTAT で確認
  DML PARALLELIZED の値

ちなみにSELECTの場合は「2.」は必要ない。

スポンサーサイト

テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/30(日) 09:55:24|
  2. ORACLE

db file sequential/scattered read ORACLE 待機イベント

ORACLE待機イベントで下記の2つが出ることがある。

db file sequential read
db file scattered read

db file sequential read
はディスクからのランダム読み込みだ。
sequential read と言っているがランダムなのだ。

すなわち何を意味するかというと
INDEX SCAN を意味している。

INDEX SCAN はランダムにディスクにアクセスするのだ。


db file scattered read
は主にFULL SCAN のときに発生する。

とだけ覚えておけばいいだろう。

テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/22(土) 10:09:51|
  2. ORACLE

他のスキーマにMVIEWを作成するときの権限 ORA-01031: 権限が不足しています ORACLE

他スキーマにMVIEWを作成する場合

ORA-01031: 権限が不足しています

が発生する場合がある。

そのときはそのスキーマに

CREATE TABLE 権限を直接付与しなければならない。

ちなみにロール経由では不可だ。

ちなみにSYSDBA接続なら可能だ。


テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/15(土) 21:38:14|
  2. ORACLE

V$SQLから直接SQL統計を出す ORACLE STATSPACK AWR

STATSPACKやAWRが使えないときにどうやってSQLの統計(CPUやELAPSED_TIMEなど)を出せばよいか?

SQLがまだメモリ上にあるのなら

SELECT ELAPSED_TIME/EXECUTIONS FROM V$SQL
WHERE SQL_ID='XXXXXXXX';

でSQL1実行あたりの経過時間が出せる。

SQL_ID」はどうやって出すかって?

SELECT SQL_ID FROM V$SQL
WHERE SQL_TEXT LIKE 'SELECT AAA%';

とかで頑張って求めるのです。


ちなみにV$SQLAREAではなくV$SQLを使っているのは
V$SQLAREAの方が重いからです。

どうやらV$SQLAREAはV$SQLをGROUP BY している模様。

テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/09(日) 10:03:56|
  2. ORACLE

過去に実行されたSQLを見る方法 ORACLE

Oracle 10gでは過去に実行されたSQLを確認することができる。

DBA_HIST_SQLTEXT

にSQLの情報が入っており、永続的に保存されると思われる。

この、DBA_HIST_*****

は他にも多数あるので一度確認してみることをお勧めする。



テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/09(日) 09:51:52|
  2. ORACLE

統計情報の履歴 ORACLE

昔取った統計情報取得時点のテーブル件数を知りたくないだろうか?
ORACLEの秘密のテーブルにはちゃんと書き込まれている。

SYS.WRI$_OPTSTAT_TAB_HISTORY

のROWCNT列で見ることができる。

テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/01(土) 08:31:57|
  2. ORACLE

CREATE INDEX PARALLEL ORACLE

件数が多いテーブル(1億件とか)にINDEXを作成する場合、通常だとかなりの時間がかかってしまう。

そんなときはPARALLEL句をつけよう。

CREATE INDEX AAA ON TAB
(COL1)
PARALLEL 32
/

こうするとかなり速くなる。

しかしながら、インデックスの並列度も32のままになってしまっている。
(DBA_INDEXESのDEGREEが32)

この場合、インデックス検索の際に必ずPARALLEL実行となり、
スペックの弱いサーバだとむしろ遅くなったりする。

なので基本的には

ALTER INDEX AAA NOPARALLEL;

として並列度を「なし」にしておくとよいだろう。


テーマ:データベース - ジャンル:コンピュータ

  1. 2008/11/01(土) 08:23:03|
  2. ORACLE

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。