20061130

How simple mistake can cripple your database

検証を交えてわかりやすく解説してくださるのでとてもわかりやすいです。
直近では、私の参加しそこねたOOW(OracleOpenWorld)の参加レポートを
配信してくれています。
また、INDEXの内部動作について丁寧に解説された書籍も出版されています。
書籍では、INDEXの行連鎖、行移行、BLOCK LEVEL LOCK、BITMAP INDEXについて
丁寧に検証を交えて解説くださっています。

-----------------------------------
 あなたは、まだORACLEの本当の実力を知らない!!
 ORACLEの内部がわかれば問題解決能力が格段にUPします!
 通信業界で現役DBAをしている発行者がお届けするORACLEテクニック

 メルマガ「ORACLE技術研究所」
 http://www.mag2.com/m/0000126828.htm
 書籍「Oracleはこう動いている。―Oracle徹底検証」
 http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309

-----------------------------------

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語で Oracle! #030 2006/12/01
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html

こんにちは^^
本日も読んでくださりありがとうございます。
また、新しく購読くださった皆様、はじめまして。
今回は新規購読者様が多数いらっしゃるので少し緊張しています。

めっきり寒くなりましたね。私は耳の冷え性で悩んでいたのですが、
今年の冬はとうとう耳当てを使うことにしました(^-^)
傍目にはヘッドホン風なので、恥ずかしさ半減です。

少し前の話になってしまいましたが、Oracle Open World 2006の
全セッションのプレゼンテーションスライドが誰でもダウンロード
可能になりました。

http://www28.cplan.com/cc139/catalog.jsp

正確には数えていませんが、1500を遥かに超えるセッションが
あったようです。会場が不足で広場でまでセッションをしたとか(笑)
人口80万人のサンフランシスコに約6万人のオラクラーが
結集したとのことで、想像するだけで壮絶な状況ですね。

数あるセッションスライドの中から、Don Burlesonさんの
スライドをご紹介したいと思います。

Don Burlesonさんについては以前の「PGA_AGGREGATE_TARGETの秘密」
の回でご紹介しました。有~~名な方ですね。

#021 【Undocumented secrets for super-sizing your PGA】
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html

今回のスライドは、彼の長年に渡るDBコンサル経験を
盛り込んだ内容になっています。

気になった部分を抜粋して引用させていただきました。
Oracle用語続出ですが、できる限り解説いたしました。
その為にかなりのボリュームになってしまいましたが、
適当に気になる部分をピックアップしてご覧下さい。

■ ORACLE OPEN WORLD CATALOG SEARCH
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cc139/catalog.jsp

■ 引用PDFファイル
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cbo_export/PS_S283525_283525_139-1_FIN_v1.pdf


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?

・ Legacy systems(no FBI's, no MV's, 3NF tables)
・ Offshore bargain systems(amazing incompetence) See "Oracle WTF" for hilarious details.
・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
・ ERP's - Multi-platform products are not optimized for Oracle

◆ System-level Tuning Comes First!

System-level changes can reduce individual transaction tuning:

・ Adding indexes (especially function-based indexes)
・ Changing the SQL optimizer
・ Using Materialized Views
・ Improving CBO statistics (custom histograms, system stats)
・ Caching high-use, small tables & indexes (KEEP Pool)
・ Tune the library cache (cursor_sharing, etc)
・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)

◆ Relieving Server-side Brain Cramps:

・ Look at TPC benchmarks for your server
・ Many hidden parameters can make a big difference
・ This HP world-record benchmark took advantage of Oracle "undocumented" parameters:

_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity

◆ Using direct I/O:

・ Solaris - Look for a "forcedirectio" option.
・ AIX - Look for a "dio" option.
・ Veritas VxFS - (for HP-UX, Solaris and AIX),
set "convosync = direct". It is also possible to enble
direct I/O on per-file basis using Veritas QIO using
the "quistat" command
・ Linux - Linux systems support direct I/O on a per-filehandle
basis (which is much more flexible), and Oracle enables this
feature automatically.

◆ Nightly Batch Processing

・ Import batch system stats
・ Super-large PGA can reduce runtimes by 8x
・ Override 5% limit with _pga_max_size
・ Often supplemented with use_hash hint

alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".

As a result, it boosted my query performance from 12 hours to 1.5 hour.


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
恥ずかしい間違いはどのようにして起こるのか?

・ Legacy systems(no FBI's, no MV's, 3NF tables)
レガシーシステム
(ファンクション索引やマテリアライズドビューがなく、第3正規化されている)

・ Offshore bargain systems(amazing incompetence)
オフショアの安いシステム(驚くべき低スキル)

See "Oracle WTF" for hilarious details.
"Oracle WTF"というサイトを見れば大笑いできる詳細が確認できます。

・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
他のDBから移行したシステム(SQL Server,MySQL,PostageSQL)

・ ERP's - Multi-platform products are not optimized for Oracle
ERPのマルチプラットホーム製品はOracle向けの最適化がされていません。


◆ System-level Tuning Comes First!
システムレベルのチューニングが最優先

System-level changes can reduce individual transaction tuning:
システムレベルの変更は個別トランザクションのチューニングを減らすことができます。

・ Adding indexes (especially function-based indexes)
インデックスの追加(特にファンクション索引)

・ Changing the SQL optimizer
SQLオプティマイザの変更

・ Using Materialized Views
マテリアライズドビューの使用

・ Improving CBO statistics (custom histograms, system stats)
CBO統計情報の改善(特別なヒストグラム、システム統計)

・ Caching high-use, small tables & indexes (KEEP Pool)
頻繁に利用されるデータ、小さなテーブル、インデックスのキャッシング(KEEP Pool)

・ Tune the library cache (cursor_sharing, etc)
ライブラリキャッシュの調整(cursor_sharing他)

・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
セグメント構成の調整(複数ブロックサイズ、ソート済みのハッシュクラスタ)


◆ Relieving Server-side Brain Cramps:
サーバサイドの恥ずかしい間違いの救済

・ Look at TPC benchmarks for your server
自分のサーバのTPCベンチマークを確認する。

・ Many hidden parameters can make a big difference
沢山の隠しパラメータは大きな違いを生み出せます。

・ This HP world-record benchmark took advantage
以下のHP世界レコードベンチマークはアドバンテージを得ています。

of Oracle "undocumented" parameters:
オラクルの非公開パラメータの

_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity

◆ Using direct I/O:
ダイレクトI/Oの使用

・ Solaris - Look for a "forcedirectio" option.
Solaris - "forcedirectio"オプションを探してください

・ AIX - Look for a "dio" option.
AIX - "dio"オプションを探してください。

・ Veritas VxFS - (for HP-UX, Solaris and AIX),
Veritas VxFS (HP-UX, Solaris, AIXで使用されています),

HP-UX set "convosync = direct".
HP-UXなら"convosync = direct"をセットしましょう。

It is also possible
それはまた、可能です。

to enble direct I/O on per-file
ファイル単位のダイレクトI/Oを有効にすることが(可能です)

basis using Veritas QIO using the "quistat" command
Veritas QIOで"quistat"コマンドを使用することに基づいた
(ファイル単位のダイレクトI/Oを可能にします)

・ Linux - Linux systems support direct I/O
Linux - LinuxシステムはダイレクトI/Oをサポートしています。

on a per-filehandle basis
ファイルハンドルに基づいた

(which is much more flexible),
(より柔軟な),

and Oracle enables this feature automatically.
そしてOracleはこの機能を自動的に有効にします。


◆ Nightly Batch Processing
夜間バッチ処理

・ Import batch system stats
バッチ用のシステム統計のインポート

・ Super-large PGA can reduce runtimes by 8x
超巨大PGAは実行時間を8割減らすことができます。

・ Override 5% limit with _pga_max_size
_pga_max_sizeによる5%制限の上書き

・ Often supplemented with use_hash hint
しばしば"use_hash"ヒントが補足されます。


alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".

As a result, it boosted my query performance from 12 hours to 1.5 hour.
結果として、それは私のクエリパフォーマンスを12時間から1.5時間に改善しました。


------------------------------------------------------
★ 英語の語順での解釈の元祖はこちら

SIM:スーパーエルマー
http://jpan.jp/?simurl

通常の体験CDよりも豪華な体験版CDが手元にあるので
ご希望の方はこのメールのreplyにて希望の旨お知らせ下さい。
また上記リンクから無料体験版CDを申し込まれた方も
アフィリエイト報酬分をお送りしますのでお知らせ下さい。
------------------------------------------------------

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?

※brain cramps:恥ずかしい間違い。類似語でbrain fart(脳のおなら)
という俗語もありますが、こちらは場の流れを無視した
おマヌな発言や行動を指します。


Legacy systems(no FBI's, no MV's, 3NF tables)

※Legacy systems:メインフレームなど、既存の古いシステム
FBI:function-based indexes(略称だと少しかっこいいですね)
通常の索引が列を指定するのに対し、関数や式を用いた索引を指します。
詳細は「Oracle解説」のコーナーで解説いたします。

MV :materialized view
通常のviewがselectする度に元となるテーブルに実際にアクセスするのに対し、
アクセス結果をsnap shotとして保存しておき、そのsnap shotへアクセスする
viewを指してマテリアライズドビューと呼びます。
詳細は「Oracle解説」のコーナーで解説いたします。

3NF:3rd normalized form 第3正規形のことです。
一昔前はむやみに第3正規形を用いることがありましたが、
JOINが多くなりパフォーマンスに影響してしまいます。
必要な場合は第2正規形のままでパフォーマンスを優先することが
よくあります。(特にData Ware Houseの場合)


Offshore bargain systems(amazing incompetence)

※Offshore systems:海外の人件費が安い国に構築を委託したシステム
インド・中国が代表的ですが、意思疎通問題で
結局作り直しになり高くつくことが良くあります。


Changing the SQL optimizer

※optimizer:SQL文の結果に最も効率よくアクセスする為のアクセス方法を考えてくれる
オラクルの機能です。


Improving CBO statistics (custom histograms, system stats)

※CBO:Cost Based Optimizer
optimizerにはcost baseとrule baseがあります。
(rule baseは10gからサポート対象外になりました)
両者の違いについては、第2号で解説しています。

http://imoment.blogspot.com/2006/11/virtual-indexes-in-oracle_116282389528518054.html

statistics:統計情報。optimizerがアクセス方法を考える為の判断材料が格納されています。

histograms:棒グラフ。Oracle上でのヒストグラムは統計情報の一部で、
列の内容の分布情報が保存されています。

system stats:システムの統計情報です。
この他、テーブルやインデックスなどの統計情報があります。


Tune the library cache (cursor_sharing, etc)

※library cache:SQL文や実行計画などが格納されています。
詳細は「Oracle解説」のコーナーで解説いたします。
cursor_sharingについては、14号で解説しています。

http://imoment.blogspot.com/2006/11/what-is-your-experience-with_07.html


Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)

※segment:テーブルやインデックス等を記憶域の観点で表す場合にセグメントという
言葉を使います。

multiple blocksizes:9iからの機能で、1つのDBで複数のブロックサイズを
共存させることができます。8i以前はデータベースのブロックサイズは
統一されていなければなりませんでした。

cluster tables:頻繁に結合する2つ以上の表を効率良く検索する為に、結合キーを
クラスタキーとして定義し、同一のクラスタキーを持つ複数テーブルの各行を
同一のブロックに格納する仕組みです。効率良いブロックアクセスで結果を
取得することができます。ただしブロックサイズ以上のデータが同じキーで
存在する場合はクラスタ表を使用しない方が早い場合があります。
また、クラスタキーが更新される可能性がある場合もクラスタ化は向いていません。
更新された行は別のブロックへ移動する必要がある為です。

hash cluster tables:通常のクラスタ(索引クラスタ)に対し、クラスタキーに
ハッシュ関数を適用した結果に紐づいたブロックに格納されるので、
特定の値を検索する際にはその検索キーにハッシュ関数を適用するだけで
ブロックの場所がわかってしまうので便利です。

Sorted hash cluster tables:クラスタ表へのアクセスがsortを伴う場合、
sort済みのハッシュクラスタを定義することでアクセス時間が改善されます。


Look at TPC benchmarks for your server

※TPC:TPCはTransaction Processing Performance Councilの略です。
コンピュータの処理性能を評価するための評価ルールを定める団体です。
主にTPC-Cというルールで1分間のトランザクション件数を競います。
benchmark:比較する為のレベル、またはそのレベルを採取すること
主にITの世界では、コンピュータの性能を比較する為の性能測定値を指す。

現在のTPC-CのTOP10はこちらです。
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp?resulttype=all&version=5¤cyID=0
この中の情報についての説明は「Oracle解説」のコーナーで説明いたします。


◆ Using direct I/O:

※ここで言うダイレクトI/OとはOSのバッファキャッシュを経由せずに
ディスクにアクセスすることを指しています。
詳細は「Oracle解説」のコーナーで解説いたします。

Solaris:Sun MircrosystemsのUNIXです。
AIX:IBMのUNIXです。
HP-UX:HPのUNIXです。
VxFS:Veritas社(現symantec)のファイルシステムです。

It is also possible to enble direct I/O on per-file basis
using Veritas QIO using the "quistat" command

※vxfsのquick I/O機能を利用して、ファイルをrawデバイス化する
ことができます。


Super-large PGA can reduce runtimes by 8x

※PGAについては、21号の解説をご覧下さい。

http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html


Override 5% limit with _pga_max_size

※隠しパラメータ_pga_max_sizeについても、21号の解説をご覧下さい。

http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html


Often supplemented with use_hash hint

※use_hashヒントはハッシュ結合をoptimizerに指示します。


I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".

※norewriteヒント:query_rewrite_enableを無効にします。
fullヒント:フルスキャンをoptimizerに指示します。
orderedヒント:from句で指定した順に表を結合するようoptimizerに指示します。



INDEXについて学ぶなら読みたい本です。
http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆食べたものが美味しくて気に入った場合に使うとき、一般的なのはどちら?

◆I love it.
http://clickenquete.com/a/a.php?M0002066Q0018291A1dcb0
◆I'm lovin' it.
http://clickenquete.com/a/a.php?M0002066Q0018291A2c438
○結果を見る
http://clickenquete.com/a/r.php?Q0018291C372b

締切:2006年12月08日18時00分
協力:クリックアンケート http://clickenquete.com/

こたえは次回に発表します。


------------------------------------------------------
★ ランキングにも一応参加しております

気が向いたらクリックお願いします。
「ブログ村、IT技術ブログランキング」
http://it.blogmura.com/in/080814.html
------------------------------------------------------

■ 前回のこたえ

☆なかま外れはどれでしょう

◆for instance
◆for example
◆e.g.
◆i.e.
○結果を見る
http://clickenquete.com/a/r.php?Q0018009Cb2ec

答えはi.e.です。
他は全て(例)を意味していますが、i.e.は「すなわち」的なニュアンスで、
前述の説明を簡潔に言い換えたりする場合に使用します。
e.g.はラテン語のexempli gratiaの略で、
i.e.はラテン語のid estの略です。

ちなみにこんな言葉もラテン語の略です。

a.m. -> ante meridiem
p.m. -> post meridiem
etc. -> et cetera

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■ ファンクション索引(FBI:function-based indexes)

8iからの機能です。
以下の例のように関数を用いた検索式でもインデックスを使用することができます。
関数だけでなく、(b*10-1)のような式でもOKです。

create table table_x (aaa char(10),bbb number);
begin
for k in 1..1000 loop
insert into table_x values(k,1);
end loop;
commit;
end;
/
create index index_x on table_x (substr(aaa,1,2));
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';

実行計画内に以下の行があることでindex_xが使用されたことがわかります。
* 2 INDEX RANGE SCAN INDEX_X 4 1 (0) 00:00:01

set autot off
drop index index_x;
create index index_x on table_x (aaa);
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';
今度はindexが使用されず、FULL SCANが走ったことがわかります。
* 1 TABLE ACCESS FULL TABLE_X 12 144 2 (0) 00:00:01



■ マテリアライズドビュー

8iからこの名称で呼ばれるようになりました(その前はsnap shot)
シンプル(すぎる)例で感覚をイメージいただければと思います。


create table table_x (aaa char(10),bbb number);
create table table_y (ccc char(10),ddd number);
create materialized view mview_1
as select aaa,ccc from table_x a,table_y b
where a.bbb=b.ddd;
begin
for k in 1..1000 loop
insert into table_x values('abc',k);
insert into table_y values('efg',k);
end loop;
commit;
end;
/

--この時点ではリフレッシュされていないのでゼロ件です。
select count(*) from mview_1;

exec dbms_mview.refresh('mview_1','c');
--リフレッシュされたのでマージ結果がカウントされます。
select count(*) from mview_1;

この他、マテリアライズドビューログや集合関数付のマテビュー
fast refresh機能、クエリリライト機能、レプリケーションなど
突っ込んでいくとどんどん難しくなるのですが、別の機会に説明いたします。


■ ライブラリキャッシュ

ライブラリキャッシュも含めてOracleのメモリ構造を整理します。

SGA:システムグローバルエリア

├─ データベースバッファキャッシュ(実際のデータのキャッシュ)

├─ REDOログバッファ(REDOログ用のキャッシュ)

├┬ 共有プール(shared pool)
││
│├┬ ライブラリキャッシュ
│││
││├─ 共有SQL領域(SQL文のキャッシュ)
│││
││├─(共有サーバ構成の場合)プライベートSQL領域(バインド変数の内容等)
│││
││└─ その他
││
│└─ データディクショナリキャッシュ(データディクショナリのキャッシュ)

├─ ラージプール

├─ javaプール(javaコードやデータのキャッシュ)

└─ ストリームプール

PGA:プログラムグローバルエリア

├─(専用サーバ構成の場合)プライベートSQL領域

├─ SQL作業領域(sort作業等の領域)

├─ カーソル領域

└─(専用サーバ構成の場合)セッションメモリー




■ TPC-C ベンチマーク情報

恐らくBurlesonさんが仰っているHP world-record benchmarkとは以下のリンクの
benchmarkデータのことだと思います。
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
このbenchmarkは全体では5位で、Clusterシステムとしては、唯一のTOP10入りです。
上記ファイル内でも初期化パラメータが公開されていますが、
burlesonさんのピックアップされた隠しパラメータは以下の通りです。

_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity

<_in_memory_undo=false>
10gからの新機能でありながら、公開されていないという
in memory undo(IMU)機能を無効にしています。
非クラスタ環境のbenchmarkの初期化パラメータでは特に無効にされていないので、
RACのキャッシュフュージョンなどでこの制御に問題があるということがあるのかもしれません。

in memory undoはCBC Latch(cache buffer chains latch)の競合を減らす為に、
本来データベースバッファキャッシュのUNDOセグメントを利用するUNDOデータを
共有プールの独立したimu_poolに切り替える機能です。(defaultで有効)

cache buffers chains latchとは、データベースバッファキャッシュ内に
どんなデータがあるのかを示すリストをロックするlatchです。

latchとは家のドアなどにかけるチェーンのことで、
Oracleのlatchは各メモリエリアをロックする為の鍵のような役割を持っています。

<_db_cache_pre_warm=false>
Buffer Cache Pre-warm機能はDB初期起動時にセグメントの最初のExtentデータを
キャッシュに読み込む機能が有効になっています。(10g新機能)
キャッシュのHIT率を最初から高めるためでしょうか。。。それを無効にしています。

その他のTOP10入りbenchmarkの初期化パラメータで気に止まったものをピックアップしました。

確認したのは以下のbenchmarkです。
<3位(Oracleで1位)IBM eServer p5 595>
http://www.tpc.org/results/FDR/TPCC/IBM_595_32_20050412_fdr.pdf
<5位(Oracle Clusterで1位)HP Integrity rx5670 Cluster Itanium2/1.5 GHz-64p/6>
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
<8位(Oracleで3位)HP Integrity Superdome ・Itanium2/1.5 GHz-64p/64c>
http://www.tpc.org/results/FDR/TPCC/hp_tpcc_sd_1mil_fdr.pdf
<10位(Oracleで4位)FUJITSU PRIMEQUEST 480 c/s>
http://www.tpc.org/results/FDR/TPCC/fujitsu_primequest480_tpcc_fdr.pdf

<_awr_restrict_mode=true>
名前そのままですが、awrの全機能を無効にします。

<_collect_undo_stats=false>
v$undostatへのundo統計取得を止めます。

<replication_dependency_tracking=false>
レプリケート環境でパラレルに変更を伝播する為の依存性追跡機能。
レプリケーションを使用しない環境ではdefaultのtrueのままにしておく
メリットが無さそうです。

<undo_retention = 1>
特に要件がない限り、undo_retentionは小さな値にして、undo表領域の無駄な拡張を
防止した方がよさそうです。


隠しパラメータの確認・更新方法は21号の解説欄でご紹介しています。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html


■ direct I/O

OracleのI/OパターンにはファイルシステムI/Oと、RAWデバイスI/Oが
あります。ファイルシステムI/OはOSのファイルシステムを経由して
データにアクセスするのに対し、RAWデバイスI/OはOSのファイルシステムを
経由せずにデータアクセスします。
最近はファイルシステムでも優れたパフォーマンス対策がなされており、
RAWデバイスにした方が早いとは言い切れません。またRAWデバイスは
OSファイルシステム上で管理できないので管理性に劣ります。
ファイルシステムI/Oの場合、Oracleのバッファキャッシュを経由して、
さらにOSのバッファキャッシュも経由し、最終的にディスクに到達するので、
2重のバッファを経由することがパフォーマンスに悪影響する場合があります。
OSファイルシステムにはそれぞれOSのバッファキャッシュを経由しない為の
オプションが用意されているので、これを活用することでOracleのパフォーマンスが
改善できるかもしれません。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。

すごいことに 【 1 分で治る!あなたの通じない英語】のTomoさんが
有料版で発行している【1分で治る!あなたの通じない英語-Revo-】を
無料開放されました。しかも15000円の【恐怖の誤英語克服マニュアル】も
無料開放!!!創刊1周年記念ということなのですが、登録すれば、
期間無制限で購読できます。しかもこのメルマガ発行者は有料だそうです。
鼻血が出そうなサービスですね^^;


先週の土曜日、川江美奈子さんの「夜想フ会~瑠璃色の夜」に行ってきました。
http://minakokawae.blog.ocn.ne.jp/kawae/
嫁さんが自分のお友達だったのもあって、気合を入れて
整理券番号1,2番をゲットしてくれたので、
先頭の真正面で素敵な歌を聴くことができました。
幸いにもプロデューサーの武部聡志さんがゲストでpianoを弾いてくれたので
弾き語りでない歌に集中して歌う川江さんという珍しい物も聴く事ができました。

本人の欲が無いのもあって、実力や曲の完成度はものすごく高いのに、
まったくマイナーなので、ファンは熱心な方々ばかり。。。
コンサートが始まる前に聞こえてくるみなさんの川江さんに対する熱い
想いが本当にすごくて自分のことのように嬉しく少し涙が出てしまいました。

川江さんのあだ名は「ギャンちゃん」で、由来はガンダムのギャンに似ているから
とのこと。正面で見ていたら途中から「ギャン」にしか見えなくなり。
とても可笑しかったです^^

会場でお隣だった熱心なファンの方の川江さんブログです。
http://blog.goo.ne.jp/gyanchan/

それではまた。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。

簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274

バックナンバー兼ブログはこちら
http://imoment.blogspot.com/

登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm

20061116

The Oracle TimesTen in-memory database is always ready

今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html

こんにちは。いつもご購読くださりありがとうございます。
新しくご購読いただいた皆様も始めまして^^
だんだん寒くなってきましたね。

先週に引き続きOTN(Oracle Technology Network)から引用します。
メモリ上のデータベース、Oracle TimesTen in-memory databaseについての記事です。

Oracleは2005年6月にメモリデータベースの大手であるTimesTen社を買収しました。

マイクロ秒(1/100万)単位でデータを更新、検索するデータベースは、
Cisco,Ericsson,JP Morgan,Lucent,Nokiaなどをはじめ、
通信、金融、軍事、航空などの極めてtime-criticalなシステムで採用されています。

今回の引用文で紹介されていますが、
アメリカの110番(911)のシステムでも採用されているそうです。
911のオペレータ画面では、電話がかかると同時に電話番号、住所、地図などが
表示されるとのこと。こういったことが数秒遅れるだけで。。。
命にかかわってしまう まさにTimesTen採用の良い例として紹介されています。

通常は、Replicationオプションを使用して2台の平行稼動とし、
パフォーマンスや冗長性を高めます。

また、Cache Connectというオプションを使用して、
Oracle Databaseと連携することができます。

最近は数TBのDBは珍しくなくなっていますので、
GB単位のメモリDBとTB単位のディスクDBとで上手に連携することが理想です。
例えば、頻繁に使用するデータや、ログイン中アカウントデータなどを
メモリDBに置くとか、トランザクション終了時点でメモリDBから
ディスクDBへ戻るなど応用方法は多岐にわたります。

ここまで聞くと、単にOracleのキャッシュを大きくとって使えば
あまり変わらないのでは?と考えられる方もいらっしゃるかと思います。

そんな疑問に対して何故TimesTenが有利なのかが説明されている
文章を引用したいと思います。

■ OTN (Oracle Technology Network)
http://www.oracle.com/technology/index.html
■ 引用ページ
http://www.oracle.com/technology/oramag/oracle/06-nov/o66timesten.html?rssid=rss_otn_news
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Is Memory a Silver Bullet?

Because Oracle TimesTen derives its performance benefits from keeping
an entire data store in memory, why not simply run Oracle Database and
configure the buffer cache to be large enough to hold an entire database
in memory? Wouldn't Oracle Database then perform just as well as Oracle
TimesTen? This is a good and fair question, worthy of some attention.

Oracle TimesTen was designed from the ground up as an in-memory database.
There are no logical I/Os in the sense that there are in Oracle Database.
There are no database blocks. There is no buffer cache. Index entries,
rather than containing logical row IDs, point directly to the memory
locations where their target rows can be found. Going from an index entry
to a row in Oracle TimesTen requires the simple dereferencing of a pointer.
When using the TimesTen Data Manager 6.0 driver, your application has
direct access to the memory holding the data; no costly context switches
are needed.

However, memory is not a silver bullet. Much has been written over the
past few years about the nonzero cost of logical I/Os in Oracle Database,
and although Oracle TimesTen may get the cost of accessing in-memory data
much closer to zero, there is still a cost. Good design is still important.
Queuing theory still applies. Performance optimization to reduce unneeded
work is still important.

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Is Memory a Silver Bullet?
メモリは救世主なのか?

Because Oracle TimesTen derives its performance benefits
from keeping an entire data store in memory,

TimesTenは全てのデータストアをメモリに保持することで
パフォーマンス効果を得ていることを考えると、

why not simply run Oracle Database and configure the buffer cache to be large enough
何故OracleDBで単純にバッファキャッシュを十分に大きくしないのでしょうか

to hold an entire database in memory?
データベース全てをメモリに入れる為に(大きくしないのでしょうか)

Wouldn't Oracle Database then perform just as well as Oracle TimesTen?
そうしたらOracleDBはTimesTenと同様に早く動かないのでしょうか。

This is a good and fair question, worthy of some attention.
これは良い、正当な疑問です。注目に値します。

Oracle TimesTen was designed from the ground up as an in-memory database.
TimesTenはゼロからデザインされました、メモリDBとして

There are no logical I/Os in the sense that there are in Oracle Database.
ロジカルI/Oは発生しません、OracleDB上の意味では

There are no database blocks.
DBブロックは存在しません。

There is no buffer cache.
バッファキャッシュはありません。

Index entries, rather than containing logical row IDs,
インデックスエントリにおいては、論理的な行IDを含んでいるというよりは、

point directly to the memory locations where their target rows can be found.
メモリ位置を直接指しています、それらのターゲット行が存在する(位置を指しています)

Going from an index entry to a row in Oracle TimesTen requires
TimesTenでのインデックスエントリから行へのアクセスは要求します

the simple dereferencing of a pointer.
単純なポインタのポインタ参照を(要求します)

When using the TimesTen Data Manager 6.0 driver,
TimesTen Data Manager 6.0 ドライバを使用するとき、

your application has direct access
あなたのアプリケーションは、直接アクセスできます。

to the memory holding the data;
データを保持するメモリに;

no costly context switches are needed.
処理コストのかかるコンテキストスイッチ処理が必要とされません。

However, memory is not a silver bullet.
しかしながら、メモリは救世主ではありません。

Much has been written over the past few years
多くが過去数年間に渡って書かれています、

about the nonzero cost of logical I/Os in Oracle Database,
OracleDBではバッファI/Oがコストを要することについて、

and although Oracle TimesTen may get the cost of accessing in-memory data
much closer to zero,
そしてTimesTenがメモリデータへのアクセスコストを限りなくゼロに近づけたとしても、

there is still a cost.
そこにはまだ処理コストが存在します。

Good design is still important.
良い設計がやはり重要です。

Queuing theory still applies.
待ち行列理論は未だに適用されます。

Performance optimization to reduce unneeded work is still important.
パフォーマンスの最適化、不必要な動作を減らすための(最適化)はそれでも尚重要です。


------------------------------------------------------
★ 英語の語順での解釈の元祖はこちら

SIM:スーパーエルマー
http://jpan.jp/?simurl

通常の体験CDよりも豪華な体験版CDが手元にあるので
ご希望の方はこのメールのreplyにて希望の旨お知らせ下さい。
また上記リンクから無料体験版CDを申し込まれた方も
アフィリエイト報酬分をお送りしますのでお知らせ下さい。
------------------------------------------------------

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Silver Bullet

※銀の弾丸は狼男を殺せるということで、
容易に劇的な改善を生み出すものの代名詞として使用されます。


Because Oracle TimesTen derives its performance benefits
from keeping an entire data store in memory,

※derive:自動詞的用法で「由来する」という意味を持ちます。
通常は受動態で用いられます。
"Benkeis shin" is derived from the one vulnerability
of the Japanese warrior Benkei.
(弁慶の泣き所は日本の侍の弁慶の弱点に由来しています)
今回は他動詞で「derive A from B」でBによってAを得る
となります。


buffer cache

※バッファキャッシュはOracleDBにおけるメモリ上のデータを指します。
メモリDBを使用しなくてもOracleのバッファキャッシュが大きければ、
同じことじゃない?と言っています。


This is a good and fair question, worthy of some attention.

※worthy of ~:~を重んじる価値がある、値する、ふさわしい


Oracle TimesTen was designed from the ground up as an in-memory database.

※from the ground up:土台から、はじめから(先週と連続で登場です)


There are no logical I/Os in the sense that there are in Oracle Database.

※logical I/Os:通常DISKへのI/Oはphysical I/Oと呼びます。
それに反してバッファキャッシュ上のアクセスはlogical I/Oになります。
OracleDB上のバッファアクセスはTimesTenのメモリアクセスと異なり、
様々な処理が発生するので、Oracleのバッファアクセスとは異なることを
表現しています。


Index entries, rather than containing logical row IDs,

※OracleDBの通常のインデックス(索引)は実テーブルの該当レコードへの
識別子であるrowidを保有しています。


point directly to the memory locations where their target rows can be found.

※OracleDBの場合、rowidからさらに実際の行にたどりつくまでには様々な処理があるのに
比べ、これならとてもシンプルな制御ですみます。


Going from an index entry to a row in Oracle TimesTen requires
the simple dereferencing of a pointer.

※dereferencing of a pointer:dereferenceというのはC言語やC++言語における
ポインタ変数を意味します。「of a pointer」がついて、
さらにそのポインタ変数のポインタを指しています。
要は、メモリ上のindexエリアは配列になっていて、その配列の中には、
該当行の存在するメモリアドレスを持ったポインタを保有しています。
それでindexを検索する時に先頭からポインタを使用して検索していくので
ポインタのポインタを使用することになるという話だと思います。


no costly context switches are needed.

※context switches:OracleDBからバッファにアクセスする場合は、
アプリケーションからSQLエンジンに制御が切り替わるので、
context switchと呼ばれるCPU制御の切り替え処理が伴います。
これが過剰に発生するとマシン処理能力の低下につながります。


Queuing theory still applies.

※Queuing theory:待ち行列理論、ATMの行列など、システムの処理時間と
行列を作る人の割合などを元に平均待ち時間を導いたりする
ものです。



___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆なかま外れはどれでしょう

◆for instance
http://clickenquete.com/a/a.php?M0002066Q0018009A11938
◆for example
http://clickenquete.com/a/a.php?M0002066Q0018009A29b32
◆e.g.
http://clickenquete.com/a/a.php?M0002066Q0018009A320a0
◆i.e.
http://clickenquete.com/a/a.php?M0002066Q0018009A4abe3
○結果を見る
http://clickenquete.com/a/r.php?Q0018009Cb2ec

締切:2006年11月23日18時00分
協力:クリックアンケート http://clickenquete.com/

こたえは次回に発表します。


------------------------------------------------------
★ ランキングにも一応参加しております

継続の励みにクリックいただければ幸いです。
「ブログ村、IT技術ブログランキング」
http://it.blogmura.com/in/080814.html
------------------------------------------------------

■ 前回のこたえ

☆一般的なくみ合わせはどれでしょうか。

A.across B.around C.throughout

☆1.(throughout) the company.(会社全体で)

○結果を見る
http://clickenquete.com/a/r.php?Q0017862C9f4a

☆2.(around) the world.(世界中で)

○結果を見る
http://clickenquete.com/a/r.php?Q0017864C5936

☆3.(across) the country.(国全体で)

○結果を見る
http://clickenquete.com/a/r.php?Q0017865Ca8ad


まずは絵的なイメージを説明します。

across -->端から端まで一直線
around -->ぐるーりと一周
throughout-->至る所に行き渡る

次にGoogle件数チェック(Goopus)

780,000 across the company
331,000 around the company
※ 1,120,000 throughout the company

3,100,000 across the world
※321,000,000 around the world
24,700,000 throughout the world

※ 10,500,000 across the country
5,610,000 around the country
2,900,000 throughout the country

ヒット件数からもわかる通り、
表現したい絵的なイメージ次第で
どの選択肢も使うことが可能です。


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
どちらが早いか考えるよりも動かすのが一番!
さくっと体験してみましょう。

■ Step1:自分のDBが無い人はまずここから

まずご自分のPCにOracleが入っていない場合、以下のリンクより入手して、
インストール、DB作成(および起動)まで行う必要があります。
http://www.oracle.com/technology/software/products/database/xe/index.html


■ TimesTenのインストール

http://www.oracle.com/technology/software/products/timesten
ダウンロードしてクリック連打でほとんど行けます。


■ Oracle側のユーザ作成、サンプルデータ作成

sqlplus / as sysdba
grant dba to dispatch identified by dispatch;
alter user tt default tablespace users;
conn dispatch/dispatch

grant dba to ttdispatch identified by ttdispatch;
alter user ttdispatch default tablespace users;


ここで引用先の「Code listing 1」create tableからcommit;までを
コピペしちゃいましょう。

次に以下の行を実行しておきましょう。
GRANT SELECT ON phones TO ttdispatch;


■ TimesTenに接続するためのDSN作成,リスナー起動、TimesTen接続

(DSNについてはこちらの用語解説欄をご覧下さい)
http://imoment.blogspot.com/2006/11/using-oracle-database-link-to-connect_07.html

1.「スタートボタン→設定→コントロールパネル」とクリックします。
2.作業する分野を選びますと出てきたら、左側のクラシック表示に切り替えるを
クリックしましょう(出ない人はそのまま3へ)
3.コントロールパネルウィンドウの中から「管理ツール」を探して
ダブルクリック
4.次の画面で「データ ソース (ODBC)」を見つけてダブルクリック
5.開いたウィンドウで「System DSN」タブをクリック
6.「Add」ボタン(or「新規」ボタン)をクリック
7.開いたウィンドウの一覧の下の方にあるTimes Ten Data Manager 6.0を
選んで「完了」ボタン
8.開いたウィンドウの中から以下の欄を編集
(ディレクトリaとtimestenは予め作成しておく)
「Data Source Name」 :ttdispatch
「Data Store Path +」:C:\a\timesten\ttdispatch
「Log Directory」 :C:\a\timesten
9.OKを押して終了(ここから少し引用先の手順とは変わります)
10.コマンドラインからttisqlを起動
11.以下のコマンドをたたく
Command> CONNECT dsn=ttdispatch;
Command> CREATE USER dispatch IDENTIFIED BY dispatch;
Command> GRANT ADMIN, DDL TO dispatch;
Command> disconnect;
12.手順1~5を再度行う
13.開いたウィンドウの一覧の下の方にある「ttdispatch」を
選んで「configure」ボタン(or 構成ボタン)
14.Genneral Connectionタブをクリック(ここから引用先手順にもどります)
15.開いたウィンドウの中から以下の欄を編集
「User ID」 :dispatch
16.Cache Connectタブをクリック
17.開いたウィンドウの中から以下の欄を編集
「Oracle Password」:dispatch
「Oracle ID」 :TNSサービス名
(TNSサービス名の意味がわからない場合は頑張ってリスナーの構成をしましょう)
18.OKボタンで終了します。
19.リスナー起動
コマンドプロンプトからlsnrctl start
20.コマンドラインからttisqlを起動
21.以下のコマンドをたたく
Command> CONNECT dsn=ttdispatch;

successfulという文字が出ていたら成功です。


■ TimesTen側でテーブル作ったりINSERTしてみたり

22.21.の続きで引用先のCreating Tablesの欄をコピペしましょう。


■ TimesTen側でOracle側データの読み取り専用参照

23.22.の続きで引用先のCode Listing 2と3をどんどんコピペしましょう。


以上でざっと最低限の動き確認でした。
あとは以下のマニュアルを見ながら色々ためしてみましょう。

http://otndnld.oracle.co.jp/document/products/timesten/html/B25770-02/toc.html
http://otndnld.oracle.co.jp/document/products/timesten/html/B25773-02/toc.html


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。

先週の中間選挙の結果は言うまでも無く、共和党の敗北でした。
めでたく「Stem cell Research」も支持されることになりました。

週末に新宿御苑に行ったのですが、そこで動物実験廃止運動の団体が
キャンペーンをしていました。

一番かわいそうだったのが可愛い子犬がストレス実験の為に
左足の骨がむき出しになっていた写真です。
http://www.ava-net.net/fact/knowledge.html

人間のストレス研究の為に、罪の無い動物に死ぬまでストレスを
与え続けるのは惨すぎます。

少しの毛皮製品を作るためにどれだけの動物が
悲惨なかわはぎを受けてしまうかを考えると
毛皮製品は怖くて見れなくなります。
http://www.no-fur.org/video/furstela.html

生命の無駄な苦しみが少しでも減るよう
少しでもできることをやっていきたいです。

それではまた。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。

簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274

バックナンバー兼ブログはこちら
http://imoment.blogspot.com/

登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm

20061109

Ruby on Rails on Oracle: A Simple Tutorial

登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm

今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html

こんにちは。いつもご購読ありがとうございます。
新しくご購読いただいた皆様始めまして^^

今日は久々にOTN(Oracle Technology Network)から引用します。
Ruby on Railsに関するSimple Tutorialです。

Tutorialという言葉は日本でもおなじみですね。
とりわけITの世界においてはマニュアル代わりの
利用方法学習システムを意味しています。

Tutorが個人教師を意味するのと同様に
Tutorialは本来は個人指導を意味しています。


Rubyという言語は日本人である「まつもとゆきひろ」さんによって
開発されたことは有名ですが、Ruby on Rails(通称RoR、Rails)は
DenmarkのDavid Heinemeier Hanssonさん(27)によって開発されました。

公開(2004/7)からわずか2年で旋風のように
広まっているRubyによるWEBアプリ開発フレームワークです。

かのTim O'Reilyさん(オライリー本のお方)もRoRの上昇に
興味を抱いています。ご本人のブログでも示されている通り、
既にPythonとPerlを抜き去って、JavaScript、C#と同じ上昇カーブを
描いています。この流れに反してJava、C++、PHPは下降線です。
<Tim O'Reilyさんのブログ>
http://radar.oreilly.com/archives/2006/08/programming_language_trends.html

■ OTN (Oracle Technology Network)
http://www.oracle.com/technology/index.html
■ 引用ページ
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ What is Rails For?

Rails is designed from the ground up to create dynamic Web sites that
use a relational database backend. It adds key words to the Ruby
programming language that make Web applications easier to configure.
In addition, it's designed to automatically generate a complete, if
somewhat crude, Web application from an existing database schema.

The latter is both Ruby's greatest strength and its Achilles' heel.
Rails makes assumptions about database schema naming conventions that,
if followed, make generating a basic Web site a matter of executing
single command. But to do this may require additional configurations
or in some cases may not be possible at all.

You're also likely to find that just about every database convention
that Rails expects can be overridden, but the more overriding that
is needed, the less productive the platform becomes. This is why
Rails is great when developing "green-field" applications with new
databases. Unfortunately, it's not a great solution when dealing
with legacy systems.

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ What is Rails For?
Railsの適正は?

Rails is designed from the ground up to create dynamic Web sites that
use a relational database backend.

RailsはバックエンドにRDBを利用する動的なWebサイトを
ゼロから構築するために設計されています。

It adds key words to the Ruby programming language
それはRubyにキーワードを追加します。

that make Web applications easier to configure.
それ(キーワード)はWebアプリの構成をより簡単にします。

In addition, it's designed to automatically generate
その上、それは自動的に生成するように設計されています。

a complete, if somewhat crude, Web application from an existing database schema.
完全な、ちょっと雑な、Webアプリを既存のDBスキーマから(自動生成するよう)

The latter is both Ruby's greatest strength and its Achilles' heel.
後者はRuby(Rails)の最大の強みであり弱点でもあります。

Rails makes assumptions about database schema naming conventions
Railsは仮定します。DBスキーマの命名規約について

that, if followed, make generating a basic Web site a matter of executing
single command.
もしその規約が守られたなら、基本的なWebサイトの生成を1コマンドで可能にしてしまいます。

But to do this may require additional configurations
しかし、それを行うことは(DB側の)追加の構成を必要とする可能性があります。

or in some cases may not be possible at all.
または場合によっては全く不可能にしてしまうかもしれません。

You're also likely to find
また、あなたは見つけるかもしれません。

that just about every database convention
ほとんど全てのDB規約

that Rails expects
Railsが期待する(DB規約)

can be overridden,
無効化させることができることを(見つけるかもしれません)

but the more overriding that is needed,
しかし、必要とされるオーバーライドをすればするほど、

the less productive the platform becomes.
そのプラットホーム(Rails)生産性低下をどんどん招いてしまいます。

This is why
これが理由です。

Rails is great
Railsが素晴らしい(理由です)

when developing "green-field" applications with new databases.
新規アプリと新規DBの開発をするとき(素晴らしい)

Unfortunately, it's not a great solution
残念なことに、それは素晴らしくありません。

when dealing with legacy systems.
レガシーシステムを扱うとき(素晴らしくありません)


------------------------------------------------------
★ 英語の語順での解釈の元祖はこちら

SIM:スーパーエルマー
http://jpan.jp/?simurl

通常の体験CDよりも豪華な体験版CDが手元にあるので
ご希望の方はこのメールのreplyにて希望の旨お知らせ下さい。
------------------------------------------------------

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

from the ground up

※基礎(土台)から
from scratchの方が良く聞くかもしれませんが、「新規」の代替表現です。


dynamic Web sites

※RailsはAjaxを簡単に実装するための機能が盛り込まれています。

(ajaxについては以前の発行とりあげています)
【Building an Ajax Memory Tree】AjaxによるOracleアプリstep by step
http://imoment.blogspot.com/2006/11/building-ajax-memory-tree_07.html


that make Web applications easier to configure.

※make ~ 形容詞で、~を形容詞の状態にさせるという使役動詞のケースです。
ここではWebアプリを簡単にしています。
thatは直前の文章である、RailsがRubyに追加したキーワード
(もしくは追加されたことそのもの)を指しています。


a complete, if somewhat crude, Web application from an existing database schema.

※間に「if somewhat crude」が入っているので少し難しくなっています。
completeはWebアプリを形容しています。

crude:原油、原料などの名詞ですが、シンプルとか洗練されていないという
ニュアンスもあります。


The latter is both Ruby's greatest strength and its Achilles' heel.

※Achilles' heel:アキレス腱(発音はカタカナと異なるのでご注意ください)
(e)kili:z (kiがアクセントで(e)はschwa(あいまい母音)です)


Rails makes assumptions about database schema naming conventions

※assumption:仮定、想定
naming conventions:命名規約
conventionは慣習、(大きな)集まり、規約の3種類の意味を持っています。
「複数の人間の間での暗黙の決まりごと」だとイメージするといいと思います。


that, if followed, make generating a basic Web site a matter of executing
single command.

※ここでも「if followed」が割り込んでいるので難しくなっています。
しかもここのmakeを使った使役動詞は、目的語が「generating a basic Web site」
で、補語が「a matter of executing single command」とそれぞれが長くなっており、
さらに難しくなっています。

matter of ~:~の問題


You're also likely to find

※likely:期待や可能性を表現したい場合に使用します。


that just about every database convention

※just about:ほとんど(=almost,very nearly)


can be overridden,

※override:優先させる。無効化させる。
オブジェクト指向の用語で、同じ処理名で本来の処理と別の
処理を作成する場合などを指してこの用語を使用します。


but the more overriding that is needed,
the less productive the platform becomes.

※the 比較級1,the 比較級2で、比較級1すればするほど、
比較級2になるという表現になります。

platform:Railsのようなフレームワークの代替表現です。


when developing "green-field" applications with new databases.

※"green-field" app~:草原、これも新規開発の代替表現です。


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆一般的なくみ合わせはどれでしょうか。

A.across B.around C.throughout

☆1.() the company.(会社全体で)

◆A. http://clickenquete.com/a/a.php?M0002066Q0017862A11921
◆B. http://clickenquete.com/a/a.php?M0002066Q0017862A250cb
◆C. http://clickenquete.com/a/a.php?M0002066Q0017862A30b9d
○結果を見る
http://clickenquete.com/a/r.php?Q0017862C9f4a

☆2.() the world.(世界中で)

◆A. http://clickenquete.com/a/a.php?M0002066Q0017864A11dd7
◆B. http://clickenquete.com/a/a.php?M0002066Q0017864A20af4
◆C. http://clickenquete.com/a/a.php?M0002066Q0017864A3ec78
○結果を見る
http://clickenquete.com/a/r.php?Q0017864C5936

☆3.() the country.(国全体で)

◆A. http://clickenquete.com/a/a.php?M0002066Q0017865A11370
◆B. http://clickenquete.com/a/a.php?M0002066Q0017865A26559
◆C. http://clickenquete.com/a/a.php?M0002066Q0017865A37bc2
○結果を見る
http://clickenquete.com/a/r.php?Q0017865Ca8ad


(注)文脈次第ではどれでも当てはまります。
こたえは次回に発表します。


------------------------------------------------------
★ ランキングにも参加しております

こちらもクリックしていただけるとありがたいです。
「ブログランキング」
http://blog.with2.net/link.php?377277
------------------------------------------------------

■ 前回のこたえ

☆どちらが自然?

コーヒーとってくるね

◆I will bring some coffee.
◆I'm going to bring some coffee.
○結果を見る
http://clickenquete.com/a/r.php?Q0017728C10ae

どの文脈でもそうとは限らないのですが、
willは今ちょうど思いついた場合に使い、
be going toは既に予定されている場合に使う。
という考え方あります。

今回の場合はwillの方がどちらかと言えば自然です。
でもbe going toでも全く問題ありません。

ちなみにbringを利用する場合は単純に運んでくるニュアンスになりますので、
starbucksなどでカウンタに既に出ているコーヒーをとってきたり、
自分の家のキッチンへ取りに行く場合は自然ですが、
これから店員さんに注文する場合は不自然になります。
その場合はI'll get some coffee.の方が自然です。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
引用文中に記載されている、DBに対する規約ですが、
プライマリキーは1列のみ、その列名はid、テーブル名は複数形(sをつける)
などがあります。
なので既存システムへの適用には乗り越えなければならない障害があります。


引用先で紹介されているTutorialを少し解説します。

■ Step1:Set up the Oracle database

まずご自分のPCにOracleが入っていない場合、以下のリンクより入手して、
インストール、DB作成まで行う必要があります。
http://www.oracle.com/technology/software/products/database/xe/index.html

無事DB作成まで完了できたらRuby用のユーザとテーブル、シーケンスの作成です。

GRANT dba TO ruby IDENTIFIED BY ruby;
-- grantと同時にdba権限のユーザが作成されます。

ALTER USER ruby DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
-- tablespaceはご自身のDB環境に合わせて適宜変更してください。

CREATE TABLE comics (
id NUMBER(10) NOT NULL,
title VARCHAR2(60),
issue NUMBER(4),
publisher VARCHAR2(60),
PRIMARY KEY (id)
);
-- Primaryキーはidという名前で2列以上指定しないようにします。
-- comicsは必ずsをつけるところがポイントです。

CREATE SEQUENCE comics_seq;

特に説明は明記されていませんが、
リスナーを起動しておく必要があります。
このリスナーに対する接続識別子は後でRailsの設定で必要になります。


■ Step 2: Install Ruby, RubyGems, Rails, and the Rails Oracle library

以下のサイトから適当なバージョンのOne-Click Ruby Installerをダウンロードします。
http://rubyinstaller.rubyforge.org/
ダウンロードされたファイルを実行してボタン連打でインストールします。

コマンドラインから以下のコマンドを叩きます。
C:\> gem install rails -v 1.0.0 --remote
ここでインターネットに接続している必要があります。
プロキシサーバを使っている場合は、set http_proxyでサーバのIPとポートを
設定する必要があるようです。

次にOracle Rails libraryをインストールします。
以下のサイトから
http://rubyforge.org/projects/ruby-oci8
以下のファイルをCドライブ直下にダウンロードし、
ruby-oci8-0.1.13-mswin.r
以下のコマンドを叩きます。
C:\> ruby ruby-oci8-0.1.13-mswin.rb


■ Step 3: Create the Web Application

あと少しで出来上がります。

C:\> rails comics_catalog
C:\> cd comics_catalog
C:\comics_catalog>

comics_catalog\configの下にdatabase.ymlというファイルがありますので、
ご自身のDB用にdevelopmentプロパティを書き換えます。

<変更前>
development:
adapter: mysql
database: rails_development
host: localhost
username: root
password:

<変更後>
development:
adapter: oci
username: ruby
password: ruby
host: RAILS

※host: RAILSの部分は自分のDB用の接続識別子を指定します。

C:\comics_catalog> ruby script/generate scaffold Comic

以下のコマンドでWebサーバを起動します。停止したい場合はCtrl+Cです。
C:\comics_catalog> ruby script/server

ブラウザで以下のURLにアクセスすると出来上がっています。
http://localhost:3000/comics/list


本当に単純なサンプルなのでスムーズに行けば数分でWebアプリが完成します。
物足りない方は、もう少し歯ごたえがありそうな演習が以下のリンクに
ありますのでトライしてみてください。
http://www.oracle.com/technology/pub/articles/saternos-rails.html


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。

米国での中間選挙(midterm elections)ですが、
マイケルJフォックスさんのYouTubeを拝見してから少し興味を持っています。

http://www.youtube.com/watch?v=a9WB_PXjTBo

Stem Cell Researchを支持しない政治家(Jim Talent,共和党)さんは
マイケルさんの映像を演技であり、病気のふりをしているとなじっているそうです。
Stem Cell Researchが国から支持されれば、マイケルさんのような
パーキンソン病や、半身不随など、今希望を失って苦しんでいる
人々が救われる可能性がとても高くなります。

They say all politics is local but that isn't always the case.
what you do in Missouri matters to millions of Americans,
Americans like me.

これは世界的に影響のある決断ですね。
各州で開票が始まっていますが、共和党の敗色が濃厚です。
Jim Talentさん(共和党) vs Claire McCaskillさん(民主党)のミズーリ州は
僅差の激戦が予想されております。

それではまた。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。

簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274

バックナンバー兼ブログはこちら
http://imoment.blogspot.com/

登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm

20061107

TOC(Table Of Contents:目次)

TOC(Table Of Contents:目次)

目次は以下のリンクに移動いたしました。
今後はこちらをご利用願います。
http://imoment.web.fc2.com/

以下は過去の目次です。

◆ 全般
- Top DBA が 選ぶ Oracle 10g 新機能の Top20
#008 【The Top 20 Features for DBAs】
http://imoment.blogspot.com/2006/11/oracle-database-10g-top-features-for_07.html

- Oracle 関連 URL リスト
#013 【Oracle helpful url list】
http://imoment.blogspot.com/2007/01/oracle-helpful-url-list.html

- LinuxやHP-UXのSQL*PLUSコマンド履歴表示機能
#024 【A command line history for Linux users】
http://imoment.blogspot.com/2006/11/command-line-history-for-linux-users_07.html

- Data Pumpの多彩な機能
#025 【Data Pump:Not Just for Data Moves】
http://imoment.blogspot.com/2006/11/data-pumpnot-just-for-data-moves_07.html

- Oracle 11g パフォーマンス、スケーラビリティに関する新機能
#027 【11g Performance & Scalability Features】
http://imoment.blogspot.com/2006/11/11g-performance-scalability-features.html

- TimeTenメモリDBについて
#029 【The Oracle TimesTen in-memory database is always ready】
http://imoment.blogspot.com/2006/11/oracle-timesten-in-memory-database-is.html

- 非公開ツール ORADEBUG
#033 【ORADEBUG - UNDOCUMENTED ORACLE UTILITY】
http://imoment.blogspot.com/2007/01/oradebug-undocumented-oracle-utility_11.html


◆ セキュリティ強化

- セキュリティ強化のHow To
#001 【Project Lockdown】
http://imoment.blogspot.com/2006/11/project-lockdown_116282376656804519.html
#007 【Project Lockdown Part 2】
http://imoment.blogspot.com/2006/11/project-lockdown-2_07.html

- 暗号化PL/SQLの解読方法
#018 【How to unwrap Oracle PL/SQL 】
http://imoment.blogspot.com/2006/11/how-to-unwrap-oracle-plsql_07.html

- SQL Injection Attackについて
#019 【Oracle SQL Injection Attacks】
http://imoment.blogspot.com/2006/11/oracle-sql-injection-attacks_07.html


◆ パフォーマンス・チューニング

- 仮想index機能
#002 【Virtual Indexes in Oracle】
http://imoment.blogspot.com/2006/11/virtual-indexes-in-oracle_116282389528518054.html

- cursor_sharingについて
#014 【What is your experience with cursor_sharing?】
http://imoment.blogspot.com/2006/11/what-is-your-experience-with_07.html

- PGAの隠された仕様について
#021 【Undocumented secrets for super-sizing your PGA】
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html

- DBMS_PROFILERについて
#023 【DBMS_PROFILER: PL/SQL Performance Tuning】
http://imoment.blogspot.com/2006/11/dbmsprofiler-plsql-performance-tuning_07.html

- Oracle Open World 2006でのパフォーマンス改善セッション
#030 【How simple mistake can cripple your database】
http://imoment.blogspot.com/2006/11/how-simple-mistake-can-cripple-your.html

- Indexの内部動作とRebuildの真実
#034 【Oracle B-Tree Index Internals:Rebuilding The Truth(1)】
http://imoment.blogspot.com/2007/01/oracle-b-tree-index.html
#035 【Oracle B-Tree Index Internals:Rebuilding The Truth(2)】
http://imoment.blogspot.com/2007/01/oracle-b-tree-index_22.html
#036 【Oracle B-Tree Index Internals:Rebuilding The Truth(3)】
http://imoment.blogspot.com/2007/02/oracle-b-tree-index-internalsrebuilding.html

- 実行計画のトレース
#031 【Oracle Diagnostics】
http://imoment.blogspot.com/2006/12/oracle-diagnostics.html


◆ 運用・管理

- AlertファイルやTraceファイルへのInsert処理
#003 【Inserting Custom Messages in Oracle Alert/Trace files】
http://imoment.blogspot.com/2006/11/inserting-custom-messages-_116282498138010829.html

- エクセルデータにOracleからアクセス
#017 【Using an Oracle database link to connect to Excel】
http://imoment.blogspot.com/2006/11/using-oracle-database-link-to-connect_07.html


◆ 可用性・HighAvailability

- 自宅RAC構築ガイド
#005 【Build Your Own Oracle RAC 10g 】
http://imoment.blogspot.com/2006/11/build-your-own-oracle-rac-10g-release_07.html

- Alertファイル一括管理GUIのCharityware
#015 【Charityware】
http://imoment.blogspot.com/2006/11/orasentry_07.html


◆ SQL,PL/SQL

- SQLによるデータの変換について
#006 【Need to convert...】
http://imoment.blogspot.com/2007/01/need-to-convert.html

- SQLの正規表現について
#010 【Using Regular Expressions】
http://imoment.blogspot.com/2006/11/approach-4-using-regular-expressions_07.html

- 2つの日付から平日の日数算出
#020 【How to get business days between two dates?】
http://imoment.blogspot.com/2007/01/how-to-get-business-days-between-two.html

- ANYDATA型について
#022 【Thanks for the question regarding "anydata type"】
http://imoment.blogspot.com/2006/11/thanks-for-question-regarding-anydata_07.html

- パイプライン制御による、外部表の取り込み
#026 【Table Functions】
http://imoment.blogspot.com/2006/11/table-functions_07.html

◆ Application

- AjaxによるOracleアプリstep by step
#011 【Building an Ajax Memory Tree】
http://imoment.blogspot.com/2006/11/building-ajax-memory-tree_07.html

- Ruby on Rails + Oracleのシンプルチュートリアル
#028 【Ruby on Rails on Oracle: A Simple Tutorial】
http://imoment.blogspot.com/2006/11/ruby-on-rails-on-oracle-simple.html


◆ Oracle Master

- 海外試験問題情報
#016 【can i depend on the (testking) to pass (OCA 10g) exam? 】
http://imoment.blogspot.com/2007/01/can-i-depend-on-testking-to-pass-oca.html


◆ 息抜き

- 郵便局の奇跡
#004 【ちょっと息抜きしたい時に】
http://imoment.blogspot.com/2007/01/blog-post.html

- UPSのひどい搬送
#009 【息抜き号】
http://imoment.blogspot.com/2007/01/ups.html

- バックアップの歌
#012 【ちょっと息抜き】
http://imoment.blogspot.com/2007/01/blog-post_16.html

- 銀河ヒッチハイクガイドねた
#032 【(息抜き) Of Course it would be fun... 】
http://imoment.blogspot.com/2006/12/of-course-it-would-be-fun.html#comments

Table Functions

今日はOOUG(OTTAWA Oracle Users Group)からの引用です。

PL/SQLに関するいくつかのテクニックをまとめて紹介している
プレゼンテーション資料です。

例えば。。。

・DBMS_PROFILER(9月30日号でもご紹介しています)
http://imoment.blogspot.com/2006/11/dbmsprofiler-plsql-performance-tuning_07.html
・自立型トランザクション
(親のトランザクションとは独立して別のトランザクションとして動作できます)
・テーブルファンクションのパイプライン制御
(今回取り上げます)
・DBMS_XPLAN
(autotraceの実行計画表示に比べて色々なことができます)
・DBMS_LOCK.SLEEP
(unixのsleepコマンドと同様に眠れます)
・select for update wait nsec
(指定秒分まつことができます)

などなど、色々とシンプルに紹介されています。

ほとんど英文なしでひたすら例が記載されていますので、
英語が苦手でも大丈夫だと思います。

本当に英文が全然ないので、今回の引用は
選択の余地がありませんでした^^;

■ OTTAWA Oracle Users Group, Inc.
http://www.oug-ottawa.org/
(memberで無くてもDownloadsより資料は参照できます)

■ 引用資料
http://www.oug-ottawa.org/oougpresentations/2005nov24_plsql.zip

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Table Functions

Produce collection of rows
(nested table / varray)

Query results or assign to collection variable

Can use Cursor Expressions

Table functions can be:

* pipelined

-Rows are returned as they are produced instead of
all at once, in one batch, when function completes

* parallelized

* streamed


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために
敢えて不自然な日本語になっています。
()書きは後続修飾節の修飾対象です。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Table Functions

Produce collection of rows
行のコレクションを生成します。

(nested table / varray)
ネスト表 / varray

Query results or assign to collection variable
参照結果を戻したり、コレクション型の変数に割り当てたりできます。

Can use Cursor Expressions
カーソル式を使用できます。

Table functions can be:
テーブルファンクションはできます

* pipelined
パイプライン制御

-Rows are returned as they are produced
生成されると同時に行は戻ります。

instead of all at once, in one batch,
全ての行を一つのバッチで一度に戻すのではなく

when function completes
ファンクションが完了した時に(戻すのではなく)

* parallelized
パラレル化

* streamed
ストリーム化




★★英語の語順での解釈の元祖はこちら★★

私も大変お世話になりました。
英会話の先生と普通に喋れていた私は
本当の英語の片鱗に触れてショックを受けました。
<SIM:スーパーエルマー>
http://jpan.jp/?simurl

ご希望の方には通常の体験CDよりもずっと
本格的な通常では貰えない体験版CDをお譲りします。
2テーマ合計25分以上のCBS Documents、Hop Skip Jamp
それぞれの音声CDとそのスクリプトです。
ご希望の方はこのメールのreplyに希望の旨
お知らせ下さい。

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Table Functions

※実際のテーブル内容の変わりに関数の戻り値をテーブルの内容として
使用することができます。

select * from table(function_name(cursor(select * from ex_table)));



Produce collection of rows

※当然この関数の戻り値は行の集まりです。



(nested table / varray)

※ネスト表は名前の通り、テーブルの中にさらにテーブルのような配列を
持つことができる機能です。変数として扱えるのでテーブルファンクションの
戻り値としても使用できます。

type rec_typ is record (
col1 number,
col2 varchar(10));
type next_typ is table of rec_typ;

varrayは配列です。
create type eg_varray as varray(10) of varchar2(10);



Can use Cursor Expressions

※テーブルファンクションへの引数としてカーソル式を渡すことができます。

以下の例ではselect結果のカーソルをテーブルファンクションに
引渡しています。

select * from table(function_name(cursor(select * from ex_table)));


* pipelined

※パイプライン化することで複数のレコードを同時並行的に処理
してくれます。(例は解説に掲載しました)


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆ちょっぴり不自然なのはどっち?

◆they recently bought a house.
┗ http://clickenquete.com/a/a.php?M0002066Q0017596A12cdc
◆they lately bought a house.
┗ http://clickenquete.com/a/a.php?M0002066Q0017596A2b27c
○結果を見る
http://clickenquete.com/a/r.php?Q0017596Ce615

締切:2006年11月02日23時00分
協力:クリックアンケート http://clickenquete.com/

似ているようで少し違うrecentlyとlatelyの
ニュアンスの違いご存知ですか?

こたえは次回に発表します。


★★ランキングにも参加しております★★

こちらも「ぽち」していただけるととても嬉しいです。(^-^)
http://english.blogmura.com/in/080814.html


■ 前回のこたえ

☆どれが一番命令口調ですか?

◆You should get this work done.
◆You must get this work done.
◆You ought to get this work done.
◆You had better get this work done.
○結果を見る
http://clickenquete.com/a/r.php?Q0017445Cc87c

答えはぶっちぎりでyou had betterです。
最近はあまり見かけませんが以前は英語の先生でも
had betterの方がshouldよりも低姿勢だと
説明している人もいました。

一見やわらかい表現ですが、極端なシチュエーションだと
銃をつきつけるぐらいの勢いがあります。

以下のようにorと組み合わせて使うことが良くあります。
you had better 命令 OR! 命令を守らない場合の何かしら良くない結末
「you had better get this work done, or the Boss will be mad!」

上司に使ったら首になるかも!?

残りはcontext依存ですが、
had better,must,should,out toの順でしょうか。


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
典型的なテーブルファンクションの使用例としては、

他システムから送られてくるcsvファイルなどの
効率的な取り込みなどがあります。

他システムから送られてくるcsvファイルを
外部表(例ではex_table)で読み込んで、
plsqlで1行ずつフェッチして、
複雑な変換などを施してダイレクトに実表に入れ込んでと。。。

これをパラレルでパイプライン化して実行すれば、
SQLLDRなどでは叶わない柔軟な変換を実現でき、
中間テーブルを利用するのに比べると遥かに早いスピードも実現できます。

※外部表について知りたい方は後続の説明をご覧ください

create view ex_view as
select * from table(function_name(cursor(select * from ex_table)));
insert into real_tab select /*+ APPEND */ from ex_view;

パイプライン化することで複数のレコードを同時並行的に処理
してくれます。

create or replace package ex_pkg is
type ex_refcur is ref cursor return ex_table%rowtype;
type ex_recset_typ is record(
col1 number,
col2 varchar2(10)
);
type ex_recset is table of ex_recset_typ;
function ex_func(aaa ex_refcur)
return ex_recset pipelined;
end ex_pkg;
/

create or replace package body ex_pkg is
function ex_func(aaa ex_refcur)
return ex_recset pipelined is
outrec ex_recset_typ;
inrec aaa%rowtype
begin
loop
fetch aaa into inrec;
exit when aaa%notfound;
outrec.col1 := inrec.col1;
outrec.col2 := inrec.col2;
pipe row(outrec);
end loop;
colse aaa;
return;
end;
end ex_pkg;
/



==== 外部表ってなに? ココカラ ==================

外部表とはあたかもテーブルを検索するように
外部のOSなどのファイルにアクセスする機能です。

例を見れば一目瞭然です。

conn / as sysdba

create or replace directory ex_dir
as '/tmp/test_dir';

grant read,write on directory ex_dir to public;

create table ex_table
(col1 number,
col2 varchar2(10)
)
organization external
(
type oracle_loader
-- oracle_loaderの代わりにoracle_datapumpとすることで
-- data_pumpのダンプファイルを外部表で参照できます。
default directory ex_dir
access parameters
-- アクセスパラメータの詳細はユーティリティマニュアル
-- をご確認ください。
(
records delimited by newline
badfile ex_dir:'%a_%p.bad'
logfile ex_dir:'%a_%p.log'
fields teminated by ','
missing field values are null
(col1,col2)
)
location ('ex1.dat','ex2.dat')
)
parallel 3
reject limit unlimited;

alter session enable parallel dml;
insert into real_tab select * from ex_table;

==== 外部表ってなに? ココマデ ==================

Data Pump:Not Just for Data Moves

今日はNYOUG(New York Oracle Users Group)からの引用です。

Arup Nandaさんが9月のGeneral Meetingで発表された
DataPumpの隠されたお宝機能の数々をご紹介します。

DataPumpは長年使われてきたimport/exportに変わる
Oracle10gのデータ移動用の新機能です。
(DA PUMPじゃないですよ)

★ マニュアル ★
<English>
http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14215/toc.htm
<Japanese>
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/toc.html


Arupさんはdata pumpを形容する為に

“Export/Import on Steroids”

という表現を使用しています。
on Steroidsは単純なステロイド使用的な意味の
他に増強するというようなニュアンスで使用する場合があります。
Sports選手が薬物使用でパワーアップするのと同じイメージですね。
"barry bonds on steroids"ではgoogleで2400件ヒットします。


気になる発表されているお宝機能の概要はこんな感じです。
これらに興味があれば、発表資料の一読をおすすめします。

1.DB全体のCreate文作成が一瞬で完了します。
<sqlfile>
2.Userの複製が簡単にできます。
<remap_schema>
3.本番環境からテスト環境へのデータ移行時に
小さく定義しなおしが簡単にできます。
<pctspace>
<sample>
4.異なるサーバーへ移動する際にデータファイル名を
簡単に変更できます。
<remap_datafile>
5.本番環境からテーブルスペースを移行しても
テスト環境に巨大なSTORAGE句は切れないとき。
<segment_attributes>
6.簡単にテーブルのリフレッシュができます。
<table_exists_action>
7.外部表をテキストファイルでなく、
DataPumpのDampファイルのままで使用できます。
<external type oracle_datapump>


今回は上記の機能紹介の中から1と2についてを引用しました。


■ New York Oracle Users Group, Inc.
http://www.nyoug.org/
(memberで無くてもPresentationsなどは参照できます)

■ 引用ページ
(arupをキーワードで検索するとすぐ見つかります)
http://www.nyoug.org/meetings.htm#2006_September_General_Meeting
http://www.nyoug.org/Presentations/2006/September_NYC_Metro_Meeting/200609Nanda_Data%20Pump.pdf
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Data Pump:Not Just for Data Moves

<Show Metadata>

・Create a SQL File:

impdp directory=dump_dir dumpfile=md3.dmp sqlfile=a.sql

・A file called a.sql is created with all
the object creation DDL statements.

・You can filter too:
- INCLUDE=PROCEDURE, PACKAGE
- EXCLUDE=PROCEDURE:"='PROC1'"

<Create a User Like …>

・Problem:

- Quickly create a user like another, with all
its grants, system privs, tsquotas, etc.

・Old Solution:

- Painstakingly get the information from the data
dictionary and construct a SQL file

・Data Pump Solution:

- expdp schemas=arupcontent=metadata_only
- impdp remap_schema=ARUP:NEWUSER
- It creates the new user


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の語順に近い解釈

※自然な語順で解釈する癖をつけるために
敢えて不自然な日本語になっています。
()書きは後続修飾節の修飾対象です。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Data Pump:Not Just for Data Moves
単なるデータの移動だけではない。

<Show Metadata>
メタデータの表示

・Create a SQL File:
SQLFILEの作成

impdp directory=dump_dir dumpfile=md3.dmp sqlfile=a.sql

・A file called a.sql is created
a.sqlと呼ばれるファイルは作成されました。

with all the object creation DDL statements.
全てのオブジェクトの作成DDL文を伴って(作成されました)


・You can filter too:
フィルタをかけることもできます。

- INCLUDE=PROCEDURE, PACKAGE
- EXCLUDE=PROCEDURE:"='PROC1'"


<Create a User Like …>
USERの複製

・Problem:

- Quickly create a user like another,
素早いUSERの作成。他のUSERと同様の(USER)

with all its grants, system privs, tsquotas, etc.
全てのその権限、システム権限、割り当て容量、その他を伴って。
(作成)


・Old Solution:
(古い解決方法)

- Painstakingly get the information
念入りに情報を入手します。

from the data dictionary
データディクショナリから(入手します)

and construct a SQL file
そしてSQL FILEを構築します。


・Data Pump Solution:
DataPumpによる解決方法

- expdp schemas=arupcontent=metadata_only
- impdp remap_schema=ARUP:NEWUSER
- It creates the new user
それ(上記の2行の文)は新しいユーザを作成します。


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Metadata

※データそのものではなく、データに関する特徴などを
定義したデータを指します。Oracleの場合だと
テーブルやインデックス、データベース自身の定義内容
などを指します。


SQL File

※ここではメタデータを定義する為のSQL文が含まれる
ファイルを指しています。


DDL statements.

※Deta Definition Language(データ定義文)


filter

※言葉通りで必要なものだけを抽出する意味です。
今回はPROCEDUREやPACKAGEに特定した
SQL FILEを作成する例と、PROC1というPROCEDUREを
除外する例が示されています。



grants, system privs,

※Oracleでは権限をUSERに与える場合にGrant文を使用します。
system privsも権限のひとつですが、ここでのgrantsは
object権限(テーブルなどの読取権限など)を指しているのでは
ないでしょうか。


tsquotas

※quotaは分け前というニュアンスを持ちます。
tsはtablespaceの略で、Oracleでは
USER毎に分配するtablespaceの使用可能容量をtsquota
と呼びます。


Painstakingly

※pains-take-ing:痛みを伴う行動。(苦労など)

<文字制限の関係で続きは別の投稿になります>
http://blogs.yahoo.co.jp/yakusa_oracle/21950069.html?p=1&pm=l
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆どれが一番命令口調ですか?

◆You should get this work done.
┗ http://clickenquete.com/a/a.php?M0002066Q0017445A19042
◆You must get this work done.
┗ http://clickenquete.com/a/a.php?M0002066Q0017445A2ee1f
◆You ought to get this work done.
┗ http://clickenquete.com/a/a.php?M0002066Q0017445A3697d
◆You had better get this work done.
┗ http://clickenquete.com/a/a.php?M0002066Q0017445A4a31a
○結果を見る
http://clickenquete.com/a/r.php?Q0017445Cc87c


締切:2006年10月25日18時00分
協力:クリックアンケート http://clickenquete.com/

もし目上の人に向かって言ってしまうと
取り返しのつかないことになるかもしれません。

こたえは次回に発表します。

ランキングとやらに参加してみました。
こちらも「ぷちっ」していただけるととても嬉しいです。(^-^)
http://english.blogmura.com/in/080814.html


■ 前回のこたえ

☆「(恋愛関係などで)彼女から身を引くよ」英語でなんて言いますか?

◆bow out
◆go out
◆pull out
◆draw out
○結果を見る
http://clickenquete.com/a/r.php?Q0017258C565c

答えは実は2つあります。

bow outとpull outです。どちらも意味としては正しいのですが、
pull outの場合は、少しエッチな話になってしまうのですが、
コンドームをつけないで直前で外に出す手法をも指しますので
恋愛ネタでこちらを使うと誤解される可能性が高いです。
bow outがより安全です。

例えば選挙戦などでブッシュ、ケリー、ディーンが
争っている時にディーンが途中で撤退する場合など
Dean pulled out of the race
などと表現できます。

go outはお出掛けですね。

draw outは引き出すイメージなどで使われますが、
内気な彼女の心をひっぱりだしてオープンに
しようと試みているイメージでも使えます。




_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
たぶんこのプレゼン資料はDataPumpの基本機能を
押さえている人向けになっているので、
DataPumpはまだ初めて。。。という方は以下も
目を通したほうが実験の効率が良いと思います。

--- DataPump 最低限の動作手順 ココカラ! -----------------

■ ダンプファイルやログファイル、SQLファイルのデフォルト出力先の確認

select directory_name ,directory_path from dba_directories

DIRECTORY_NAME
DIRECTORY_PATH
----------------------------------------------------------
DATA_PUMP_DIR
/app/oracle/product/10.2.0/db_1/rdbms/log/

※上記パスは特権ユーザか、DATA_PUMP_DIRディレクトリ
オブジェクトへのアクセス権がないと使用できない


■ 上記パスを使用しない場合、環境変数(DATA_PUMP_DIR)で
別のディレクトリオブジェクトを指定するか、
expdpコマンドのdirectoryオプション
で別のディレクトリオブジェクトを使用する

■ ディレクトリオブジェクトの作成方法

create directory furu_dir as '/home/oracle/dump_dir/tmpdb';
grant read,write on directory furu_dir to yakuser;
mkdir -p /home/oracle/dump_dir/tmpdb
chmod -R 775 /home/oracle/dump_dir/tmpdb

■ expdp

expdp system/manager content=metadata_only tables=aaa dumpfile=aaa.dmp directory=furu_dir

expdp yakuser/pass logfile=yakuser.expdp.log content=metadata_only schemas=yakdb directory=furu_dir dumpfile=yakdb.dmp exclude=table_statistics exclude=index_statistics

■ impdp

impdp system/manager dumpfile=yakdb.dmp sqlfile=yakdb.sql directory=furu_dir
※SQLFILEパラメータを使用した場合、DBにはなんら変更は実施されない

impdp yakuser/pass dumpfile=yakdb.dmp sqlfile=emp.sql directory=furu_dir tables=emp logfile=emp.imp.log


impdp hr/hr DIRECTORY=furu_dir LOGFILE=parallel_import.log JOB_NAME=imp_par3 DUMPFILE=par_exp%U.dmp PARALLEL=3

※sqlfile生成時、STORAGEを生成したくない場合、
impdp yakuser/pass dumpfile=emp.dmp sqlfile=emp.sql directory=furu_dir tables=emp logfile=emp.imp.log transform=storage:n[:table :index]

別の表領域にIMPORTしたい場合、
remap_tablespaceパラメータを使用する
remap_tablespace=source_tablespace_name:target_tablespace_name


--- DataPump 最低限の動作手順 ココマデ! -----------------

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。

Arup Nandaさんの記事をご紹介するのは
第1号を含め、今回で4回目です。

<過去掲載記事>
#001 【Project Lockdown】セキュリティ強化How To
http://blogs.yahoo.co.jp/yakusa_oracle/archive/2006/7/4
#007 【Project Lockdown Part 2】
http://blogs.yahoo.co.jp/yakusa_oracle/archive/2006/7/13
#008 【The Top 20 Features for DBAs】10g新機能特集
http://blogs.yahoo.co.jp/yakusa_oracle/archive/2006/7/14

Arup(読み:urup)さんはインド出身の経歴12年の
Super DBAです。2003年のDBA of the Yearの受賞者であり、
O'ReillyやRampantでの書籍執筆活動、
OTN,DBAzine,SearchOracle,OracleMagazineでの数々の
Article投稿、今回の様に様々なUserGroupやConference
での発表など、活躍は数え切れません。

以下のサイトでArupさんのResumeが拝見できます。
DBA向けの就職(転職)活動などのSampleとしてはいいですね^^
http://www.proligence.com/arup_resume_long.doc

ちなみに生声はこちらで。
http://www.dbazine.com/audios/dbazine-arup-nanda-oracle-security.mp3

ちなみにGoogleで"arup nanda"でworld wideで検索すると
私のメルマガが27900件中の8位でした。なんでやねん(笑)
日本から検索すると日本のページが有利になるのかな。。。

!若いころは週90時間労働でCatchUPしていたそうです。

それではまた。

A command line history for Linux users

今日はDizwell Informaticsより、Linuxユーザがsqlplusでコマンド履歴機能を
使用する方法をご紹介します。
(解説欄ではHP-UXでの同等機能も紹介しています)

Dizwell InformaticsはHoward J. Rogersさんが個人で運営している
Oracleの情報サイトです。
Howard J. Rogersさんは、イギリス出身のDB SYSTEMの教育者です。
経歴が少し面白く、会計士からComputerとDBのトレーナーを経て
オーストラリアに移住し、4年ほどOracleの教育部門に所属した後、
最終的には独立しています。
O'Reilyから本も出しています。

手順は引用先に分かりやすく説明されています。
(英語がわからずともコピペでできると思います)

引用内容はrlwrapのインストール方法の説明部分です。

■ Dizwell Informatics
http://www.dizwell.com/prod/
■ 引用ページ
http://www.dizwell.com/prod/node/56

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ A command line history for Linux users

What you must get your hands on is a tiny program
called rlwrap. It’s only 24K in size, and you can
download an officially-released RPM of the 0.18
version of it here. That's been used without a
problem in Red Hat Enterprise Server 3 and 4
installations (and clones of those distros, such
as White Box and Centos).

If you download that RPM to a directory called
/downloads, you'd then install it as root like so:

su - root cd /downloads rpm -ivh rlwrap-0.18-1.i386.rpm

However, when I tried this in Fedora Core 4, the
last command here failed, moaning about an
unsatisfied dependency on the package readline-4.1.
In fact, Fedora Core 4 ships with readline-5.0,
so this is clearly just a case of the rpm getting
out of date and running into dependency problems
as a result. To solve that, I had to download the
source tarball from the utility's home site, and
un-tar it. That created a new sub-directory called
rlwrap-0.24, and I then did the following:

cd /downloads/rlwrap-0.24 su - root ./configure make install


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の語順に近い解釈

※自然な語順で解釈する癖をつけるために
敢えて不自然な日本語になっています。
()書きは後続修飾節の修飾対象です。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ A command line history for Linux users

What you must get your hands on is a tiny program
あなたが手に入れるべきものは小さなプログラムです。

called rlwrap.
rlwrapと呼ばれている(プログラム)

It’s only 24K in size,
それはたった24kbです。

and you can download
そしてあなたはダウンロードできます。

an officially-released RPM of the 0.18 version of it here.
公式にリリースされたRPM、0.18バージョンのそれをここで(ダウンロードできます)

That's been used without a problem
それは問題なく使用されています。

in Red Hat Enterprise Server 3 and 4 installations
RHEL3or4で(使用されています)

(and clones of those distros,
かつクローンとなるこれらのディストリビューションで(使用されています)

such as White Box and Centos).
,White BoxやCentosのような

If you download that RPM
もしあなたがそのRPMをダウンロードするなら

to a directory called /downloads,
/deownloadsというディレクトリに(ダウンロードするなら)

you'd then install it as root like so:
あなたはそれをインストールします、rootユーザとして、このように:

su - root cd /downloads rpm -ivh rlwrap-0.18-1.i386.rpm

However, when I tried this in Fedora Core 4,
しかしながら、私がこれを試したとき、Fedora Core 4で

the last command here failed,
その最後のコマンドは失敗しました。

moaning about an unsatisfied dependency
依存関係が満たれされていないことで文句を言っています。

on the package readline-4.1.
readline-4.1パッケージにおける(依存関係)

In fact, Fedora Core 4 ships with readline-5.0,
実際、Fedora Core 4はreadline-5.0と共に配布しています。

so this is clearly just a case of the rpm getting out of date
だからこれは明らかにただのケースです。古いrpmを入手する(ケース)

and running into dependency problems as a result.
そして依存関係問題に直面する(ケース)、結果として

To solve that, I had to download
それを解決するために、私はダウンロードしなければなりませんでした。

the source tarball from the utility's home site,
ソースファイルのtarballを、そのユーティリティのホームページから

and un-tar it.
そしてそれをun-tarしました。

That created a new sub-directory
それは新しいサブディレクトリを作成しました。

called rlwrap-0.24,
rlwrap-0.24という(ディレクトリ)

and I then did the following:
そして私は以下のことをしました。

cd /downloads/rlwrap-0.24 su - root ./configure make install

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
get your hands on (something)

※(something)を手に入れるという意味です。
(I get my hands on a chair)
on の後に人が入る場合は捕まえるという意味になります。
getの代わりにputやlayを使う場合もあります。


an officially-released RPM of the 0.18 version of it here.

※この文をクリックするとファイルがダウンロードできるように
なっています。


RPM

※元々はRedhat Linuxで使用されていたソフトウェアのパッケージを
管理するためのシステムです。
ただし今回はパッケージ管理システムそのものではなく、RPMに対応した
rlwrapのパッケージを指していますね。

<以降余談です>
元々はRed Hat Package Managerの略称で、現在ではRedhatに限らず
様々なLinuxディストリビューションで取り扱われているため
RPM Package Managerの略称とされています。
その経緯を知らないとRPMはRPM Package Managerの略と言われても
結局RPMの意味がわからず混乱してしまいますね。
フリーソフトウェアプロジェクトであるGNUも正式名称は
GNU's Not UNIXで、結局意味がわかりません。
思いっきり話がそれてしまいますが、
実はVISAもVisa International Service Associationの略だそうです。
滞在許可証のvisaとは関係なく、visaカードの創立者がなんとなく
どこの国でも響きが良さそうなのでvisaという名前に決めたそうで、
後からacronym(頭文字を並べた言葉)になったそうです。
そのように後からacronymが作られたものをbackronymと呼びます。
また、今回のように略語の意味の中に略語が含まれているものは
recursive(再帰的) backronymと呼びます。



Red Hat Enterprise Server 3 and 4 installations

※Red hatはlinuxの代表的な商用のディストリビューションです。
Red Hat Enterprise Linuxと呼ばれRHELと略します。
(ディストリビューションについては後述します)


installations

※今回はインストールされたその物を指していますが、
インストール作業を指す場合もあります。


distros

※ディストリビューションのことです。
ディストリビューションとは単純に説明するとLinuxカーネルをベースとして
作成されたLinux製品を指します。
Linuxディストリビューションの例として、
redhat,suse,debian,vine,turbolinux,slackwareなどが挙げられます。


White Box and Centos

※red hat enterprise linuxのクローンとして開発された
ディストリビューションです。
クローンの特徴としては、元々有償で提供されるred hat
のソースをコピーして、商標を削除し、無償で使用可能にしていることです。
また、red hat製品は有償のサポートサービスを提供しますが、
一般的にはクローンはサポートサービスはありません。


you'd then install it as root like so:

※rootユーザはunixにおける最高権限を持つユーザです。
今回はrlwrapのインストールをrootユーザで実行しています。


su - root cd /downloads rpm -ivh rlwrap-0.18-1.i386.rpm

※suコマンドでrootにswitch userし、rlwrapの存在する
/downloadにディレクトリ移動して、rpmコマンドにて
パッケージをインストールしています。


Fedora Core 4,

※red hatは当初無償版の提供も行っていたが、有償版に注力する為に
無償版の提供を廃止しました。ただし、今まで開発してきた
無償版のred hat linuxを無くしてしまうのではなく、
ボランティアベースのFedora Projectにspin off(派生)させて、
後継の開発が実施されることになりました。
ちなみにfedoraとはred hatのトレードマークで使われているような
てっぺんがへこんでいるつばの広い帽子の名称です。
最新リリースは5ですが、今月中に6の最終版がリリースされる予定です。


moaning

※文句や不平、不満そのものや、それを言うことです。


dependency

※パッケージをインストールする場合、そのパッケージが別の製品に
依存していることがあります。その依存関係を満たしていない場合、
インストール時に今回のようにエラーが発生することがあります。


on the package readline-4.1.

※rlwrapはreadlineというコマンドライン編集用のライブラリの
wrapperである為、今回のように依存関係がチェックされています。
wrapperとは元のプログラムに対してなんらかの目的を持って
一枚うわっかぶせたプログラムを指します。
今回はreadlineライブラリのコマンドライン編集機能を
実装していないプログラムでもあたかも実装しているかのように
動作させる為にうわっかぶさってますね。



running into

※run into 人:ならばったり会うという意味です。
run into 物:(主に問題に)直面する、でくわすなどの意味です。
もしくはコストや量に達するという意味です。


source

※プログラムのソースファイルを指しています。


tarball

※tarコマンドで固めたアーカイブファイルを指してtarballと言います。


and un-tar it.

※tarコマンドで固められたアーカイブファイルはtarコマンドによって
再び解凍されます。そのことをun-tarと言っています。


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆「(恋愛関係などで)彼女から身を引くよ」英語でなんて言いますか?

◆bow out
┗ http://clickenquete.com/a/a.php?M0002066Q0017258A1f015
◆go out
┗ http://clickenquete.com/a/a.php?M0002066Q0017258A24f07
◆pull out
┗ http://clickenquete.com/a/a.php?M0002066Q0017258A363a1
◆draw out
┗ http://clickenquete.com/a/a.php?M0002066Q0017258A42155
○結果を見る
http://clickenquete.com/a/r.php?Q0017258C565c


締切:2006年10月17日18時00分
協力:クリックアンケート http://clickenquete.com/


こたえは次回に発表します。


■ 前回のこたえ

☆「縦列駐車」英語でなんて言いますか?
how do you say -- jyu-retsu-chuusya -- in english?

◆column parking
◆queued parking
◆lined parking
◆parallel parking
○結果を見る
http://clickenquete.com/a/r.php?Q0017095Ce7cd


答えはparallel parkingです。
今回はlined parkingの回答が比較的多かったのですが、
熟語としてはparallel parking以外の言葉は存在しません。
敢えてlinedを使うなら
cars were lined up along the streetとすれば
意味は通じますが、信号待ちで並んでいるような
少しアクティブな意味で誤解されてしまう可能性もあります。

googleのフレーズ検索では。。。

parallel parkingは52万件ヒットしますが、
lined parkingは1000件未満です。
また、lined parkingでヒットしている物でも、
white lined parking area やyellow line parking areaなど
線で囲われた駐車区域として使われていますね。

googleの検索欄で単純に""で囲えばフレーズ検索が可能です。
"cars were lined up along the street"
4件

"cars were parked across the street"
45件

"cars were parked along the street"
56件

"cars were parked on the street"
152件

アスタリスクでワイルドカード検索も可能です。
"cars were parked * on the street"
45件

この結果から見ると比較的onが優勢ですが、
どれも突出はしていないですね。




_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
この記事で紹介されているのはLinux向けのコマンド履歴機能ですが、
HP-UXであれば、iedというコマンドが同等の機能を有しており、
これはデフォルトでインストールされています。
必要な設定はEDITOR環境変数にviと設定するだけです。

例えば以下のように使用します。

export EDITOR=vi
(cshなら、setenv EDITOR vi)
ied sqlplus / as sysdba

SQL> select * from dual;

DU
--
X

SQL>
ここでエスケープキーを押した後、kを押す度に過去のコマンド履歴が
表示されます。いわゆるbshやkshのコマンドライン編集機能と同一ですね。
(hで左、l(エル)で右、jで下、xで削除、iで挿入、cwでワード置換、等々)
※詳細はman viで

windowsでは何も設定しないでもコマンドプロンプトからsqlplusを実行すれば
upカーソルキーで類似のことができますね。

aliasを設定して無条件に実行してもいいですね
alias sqlplus="ied sqlplus"
alias sqlp="ied sqlplus"
alias sqlp="ied sqlplus sys/change_on_install@orcl as sysdba"
などなど。。。
(cshなら~/.cshrc、その他なら~/.profileなどに記述します)

HP-UXやLinux以外(solaris,aix...)で、iedやrlwrap相当の機能を
ご存知の方がいらしたらシェアしていただきたいです。

open sourceでgqlplusというsqlplusにコマンド履歴機能等を
追加したツールもOracleで公開されていますが、
これはちょっとbuggy(bugが多い)であまりお勧めできません。



ちなみにこのiedやrlwrapは何もsqlplusに限った機能ではなく
ftpやprelなどでも同じように活用できます。
とても便利ですね。

DBMS_PROFILER: PL/SQL Performance Tuning

今日はDBAsupport.comより、DBMS_PROFILERに関する記事を
ご紹介します。

DBMS_PROFILERを使用するとPLSQLの各行の実行時間の統計を実測したり、
カバレッジを計測できたりします。

使用前の準備としてsysユーザで

@?/rdbms/admin/profload.sql

を実行します。
(@?はORACLE_HOMEと同じ意味です)

次に、実際に計測対象となるユーザで

@?/rdbms/admin/proftab.sql

を実行します。

※10gの場合、catproc.sql内で、パッケージを作成してしまうので、
 profload.sqlは必須ではありません。
 profload.sqlを実行することでserver sideのprofiler packageを
 インストールすることができます。
 ですから、10gならDBAさんにお願いしなくても
 自分のユーザ内であれば、profilerを実行できるということですね。


別のユーザでも実行したい場合、全てのユーザでproftab.sqlを実行するか、
もしくは以下のように共有してもOKです。
create public synonym plsql_profiler_data for plsql_profiler_data;
create public synonym plsql_profiler_units for plsql_profiler_units;
create public synonym plsql_profiler_runs for plsql_profiler_runs;
create public synonym plsql_profiler_runnumber for plsql_profiler_runnumber;
grant insert,update,select,delete on plsql_profiler_data to public;
grant insert,update,select,delete on plsql_profiler_units to public;
grant insert,update,select,delete on plsql_profiler_runs to public;
grant select on plsql_profiler_runnumber to public;


そして実際に使用するには

exec dbms_profiler.start_profiler('aaa');
-- PLSQLの実行
exec dbms_profiler.stop_profiler;

だけです。もちろんaaaは任意の値ですね。

実行結果やカバレッジ表示のサンプルとしては引用先に
貼り付けてありますのでそのままご利用いただけると思います。


DBMS_PROFILERの詳細は以下URLのマニュアルで確認できます。
<Japanese>
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-01/d_profil.htm#sthref5502
<English>
http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_profil.htm#sthref5502

■ DBAsupport.com
http://dbasupport.com/
■ 引用ページ
http://www.dbasupport.com/oracle/ora8/dbms_profiler3.shtml


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ DBMS_PROFILER: PL/SQL Performance Tuning

DBMS_PROFILER is a very powerful tool and the first
of its kind to identify performance issues on the
PL/SQL front. This utility can be best used in the
development stages to fine tune code based on various
applicable scenarios. It can also be used to fine
tune routines that are already in production and
are taking noticeable time to execute. Overall,
this utility gives statistics for each line of code
that will help us in evaluating and tuning at a finer
level. Just as SQL statements are checked for
performance, PL/SQL code should not be ignored but
should be tuned for optimal results as well.

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の語順に近い解釈

※自然な語順で解釈する癖をつけるために
敢えて不自然な日本語になっています。
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ DBMS_PROFILER: PL/SQL Performance Tuning

DBMS_PROFILER is a very powerful tool
DBMS_PROFILERはとてもパワフルなツールです。

and the first of its kind
そしてその種における一番手です。

to identify performance issues
パフォーマンス問題を特定するための

on the PL/SQL front.
PL/SQLにおいて真っ先に

This utility can be best used in the development stages
このユーティリティは開発工程において使用されるのが最良な場合があります。

to fine tune code
コードを微調整するために

based on various applicable scenarios.
様々な適切なシナリオに基づいて。

It can also be used
それはまた、使用される場合があります。

to fine tune routines
ルーチンを微調整するために

that are already in production
既に本番リリースされた(ルーチン)

and are taking noticeable time to execute.
そして目立って遅い(ルーチン)

Overall,
全般的に

this utility gives statistics
このユーティリティは統計を与えます。

for each line of code
行単位で

that will help us
それ(ユーティリティ)は私たちを助けます。

in evaluating and tuning
評価やチューニングする際に

at a finer level.
詳細レベルで

Just as SQL statements are checked for performance,
まさにSQL文がパフォーマンスの為にチェックされるように

PL/SQL code should not be ignored
PL/SQLコードも無視されるべきではありません。

but should be tuned for optimal results as well.
チューニングされるべきです。最適な結果の為に。同様に。

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

front

※通常の前的なニュアンスの他に、「最重要な」とか「真っ先に」とか
いうニュアンスもあります。


utility

※ユーティリティとして完全に日本語になっていますが、
定義としては、他のソフトウェアやシステムに有益な
2次的なソフトウェアを指します。
(sort,copy,compressなど)


fine tune

※fine tuneで微調整するという動詞になります。


applicable

=suitable,appropriate,relevant


routines

※日本語ではルーチンですが、英語ではru:ti:n(accentはti)ですね。
ティをチと言うと全く通じません。^^;
アンチもaenti(or aentai,accentはae)だし、
マルチもm∧lti(or m∧ltai,accentはm∧)ですね。
意味としては繰り返し呼び出される共通の処理です。


in production

※以前クイズでご紹介したので覚えている方もいるかもしれませんが、
本番は英語ではproductionです。本番環境はproduction environment
本番機はproduction server


noticeable

※言葉通りですが、notice-ableで気づき易い、いわゆる目立っている状態です。


statistics

※statsとも言います。統計です。


evaluating

※評価すること


at a finer level.

※fineはi'm fine thank youのfineですが、
Oracle上では細かいという意味として使われることが多いです。
有名なのはfine grained access controlやfine grained auditですね。
fine grained はきめ細かいという意味です。
ちなみにfineの後ろにthank youをつけるのは日本人だけかもしれません。


Just as

※まさに(asの強調。極めて同様の状態を指す)


_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆「縦列駐車」英語でなんて言いますか?
how do you say -- jyu-retsu-chuusya -- in english?

◆column parking
◆queued parking
◆lined parking
◆parallel parking
○結果を見る
http://clickenquete.com/a/r.php?Q0017095Ce7cd

全然関係無いのになんとなくOracle関連っぽい選択肢ですね。^^
こたえは次回に発表します。


■ 前回のこたえ

☆「C++」英語でなんて読みますか?

◆C Plus Plus
◆C Pla Pla
◆C Double Plus
◆C Cross Cross
○結果を見る
http://clickenquete.com/a/r.php?Q0016997C9df0


こたえはC plus plusです。
そのまんまですね。
C pla plaは日本での呼び名ですね。
面接で
I am well experienced C plus plus programmer.
I have strong skill of C plus plus.
とか言えばいいんですかね。

_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
_________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
DBMS_PROFILERとは主旨が少し異なってしまいますが、
10gではADDMという便利なパフォーマンス分析機能がデフォルトで機能しており、
@?/rdbms/admin/addmrpt.sql
を使用していつでも好きな時間間隔を指定して
ネックとなっているSQLや原因を非常に簡単に知ることができます。
前提としてstatistics_level初期化パラメータがtypicalになっている必要があります。

例えばこんな感じでレポートが出ます。(本当はもっとたくさん出ます)
※無条件に実行できますが、Diagnostics Packライセンス購入が前提となっています。


~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・

FINDING 1: 100% impact (5803 seconds)
-------------------------------------
共有プールに関連したラッチの競合により、データベース処理時間がかなり消費されました。

NO RECOMMENDATIONS AVAILABLE

ADDITIONAL INFORMATION:
"latch: library cache"待機により、データベース処理時間が12%に達しました。
"latch: shared pool"待機により、データベース処理時間が164%に達しました。

SYMPTOMS THAT LED TO THE FINDING:
SYMPTOM: 待機クラス"同時実行性"により、データベース処理時間がかなり消費されました。 (100% impact [5834 seconds])

FINDING 2: 100% impact (675 seconds)
------------------------------------
データベース処理に長時間かかるSQL文が見つかりました。

RECOMMENDATION 1: SQL Tuning, 100% benefit (9874 seconds)
ACTION: SQL_ID "uyc7hj980k73d"のPL/SQLブロックをチューニングしてください。PL/SQLユーザーズ・ガイドおよ
びリファレンスのPL/SQLアプリケーションのチューニングの章を参照してください。

RATIONALE: SQL_ID "uyc7hj980k73d"が指定されたSQL文は1回実行され、平均経過時間は9874秒でした。

RECOMMENDATION 2: SQL Tuning, 100% benefit (8571 seconds)
ACTION: SQL_ID "aq8yqxyyb40nn"のPL/SQLブロックをチューニングしてください。
PL/SQLユーザーズ・ガイドおよ びリファレンスのPL/SQLアプリケーションのチューニングの章を参照してください。


~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・
このケースではバインド変数がちゃんと使用されていないPLSQLが豪快なバッチ処理を
している為に、library cacheが大変なことになっています。

該当するSQLを確認するなら、

set serveroutput on size 32767
declare
w_clob clob;
amt integer:=32767;
w_buf varchar(32767);
begin
select sql_fulltext into w_clob from v$sql
where sql_id='該当するSQL_ID';
dbms_lob.read(w_clob,amt,1,w_buf);
dbms_output.put_line(w_buf);
end;
/

こんな感じでしょうか。
なにもclob使う程長くないSQLなら

alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
set pages 50
set line 115

select elapsed_time,cpu_time,application_wait_time,concurrency_wait_time,
user_io_wait_time,plsql_exec_time,address,hash_value,sql_text,executions,
last_active_time from v$sql where sql_id='該当するsql_id';

で見れますね。

About me

  • I'm yaksa
  • From Tokyo, Japan
My profile
にほんブログ村 IT技術ブログへ

blogRanking