2007年9月27日木曜日

2007年9月16日日曜日

Second Life と Oracle

上海のOOW で簡単なデモをやっていたらしい。
OracleのBI製品をSecond Lifeの世界と接続し、Second Life内での取引状況を可視化するものだ。このシステムはSecond Lifeが用意するWeb Service APIを通じてBI製品へ情報を取り込んでいるもの。
SLからデータの出力はできそうだが、外部からの入力にはかなり制限がありそう。QucikTimeの動画にして llParcelMediaCommandList など使用すれば検索結果が表示されるかも?しれないが。  
(QuickTimeだけでなく インタラクティブでない.swf は対応)

CGI で http Server と Oracle を連携しだした頃の騒ぎを思い起こさせる。
実際に API を検索してみたがExchange Risk API ,Registration API くらいしかまだここでは公開されていない?  IBM の Sametime と Second Life の連携例があった。
いやいや LSL はすごく進んでいる。(日本語訳もあり)

LlHTTPRequestでの検索がいい。
ジュークボックスは検索の追加キーとしてメモ
これCD-ROM FONT は1989年か

2007年9月12日水曜日

監査設定メモ2

**ファイングレイ監査設定 (FGA) サンプル
- 9.2 より利用可能 ( Enterprise Edition のみ)
- SQLも取得可能であるがパフォーマンスに影響がでるので注意

execute DBMS_FGA.ADD_POLICY ( object_schema => 'SCOTT', object_name => 'EMP',
policy_name => 'SCOTT_EMP_AUD_POLICY_SAL', audit_condition => '1=1',
 audit_column => 'SAL');

EXECUTE DBMS_FGA.DROP_POLICY( object_schema => 'SCOTT', object_name => 'EMP',
 policy_name => 'SCOTT_EMP_AUD_POLICY_SAL');

execute DBMS_FGA.ADD_POLICY ( object_schema => 'APPLSYS', object_name =>
 'WF_DEFERRED', policy_name => 'APPLSYS_WF_DEF', audit_condition => '1=1');

EXECUTE DBMS_FGA.DROP_POLICY( object_schema => 'APPLSYS', object_name =>
 'WF_DEFERRED', policy_name => 'APPLSYS_WF_DEF');


*** FGA監査ログの確認
select * from dba_fga_audit_trail ;

*** FGA監査ログの削除
connect sys as sysdba
truncate table fga_log$ ;

*** FGA監査設定の確認
select * from fga$ where enable_flag = 1 ;

select pname , o.name , o.owner# , username
  from sys.fga$ f, sys.obj$ o , dba_users u
 where f.obj# = o.obj# and o.owner# = u.user_id ;

監査設定メモ

デバッグで監査機能が有効であったので作業用のメモ
** 標準監査設定 Audit
*** 初期パラメータの変更
- sys でログインし、パラメータ変更後、再起動が必要
alter system set audit_trail = true scope=spfile ;

*** ログイン監査
AUDIT CREATE SESSION BY scott, apps

*** 監査設定
-監査設定は次のセッション(ログイン)から有効
-テーブル名を指定した監査はすぐに有効
audit select table, update table , insert table , delete table by apps by
access ;
audit execute procedure by apps by access ;
*** 監査解除
-監査解除は次のセッション(ログイン)から有効
-テーブル名を指定した監査はすぐに有効
noaudit select table, update table ,insert table , delete table by apps ;
noaudit execute procedure by apps ;

*** 監査証跡(監査ログ)の確認
select * from dba_audit_trail ;

*** 監査証跡(監査ログ)の削除
connect sys as sysdba
truncate table aud$ ;

*** 設定内容の確認(解除の確認)
select count(*) from sys.dba_stmt_audit_opts ;
select count(*) from sys.dba_priv_audit_opts ;
select count(*) from sys.dba_obj_audit_opts
where ( ALT like '%A%' or ALT like '%S%' )
and ( AUD like '%A%' or AUD like '%S%' )
and ( COM like '%A%' or COM like '%S%' )
and ( DEL like '%A%' or DEL like '%S%' )
and ( GRA like '%A%' or GRA like '%S%' )
and ( IND like '%A%' or IND like '%S%' )
and ( INS like '%A%' or INS like '%S%' )
and ( LOC like '%A%' or LOC like '%S%' )
and ( REN like '%A%' or REN like '%S%' )
and ( SEL like '%A%' or SEL like '%S%' )
and ( UPD like '%A%' or UPD like '%S%' )
and ( REF like '%A%' or REF like '%S%' )
and ( EXE like '%A%' or EXE like '%S%' )
and ( CRE like '%A%' or CRE like '%S%' )
and ( REA like '%A%' or REA like '%S%' )
and ( WRI like '%A%' or WRI like '%S%' )

2007年9月5日水曜日

コストとルール

Oracle EBS でも CBO が 11i よりサポートされていて、さすがに Cost Base Optimizer FAQ E-Business Suite 11i よりサポートされたCost Base Optimizerに関するFAQをまとめた資料 があった。

    いろいろと参考になる
  • Q. ANALYZEコマンドとFND_STATSパッケージの違いは何ですか ?
  • A、 FND_STATSは、統計情報を収集するためにDBMS_STATSパッケージを使用しています。 DBMS_STATSは表の統計情報をパラレルで取得するため、Analyzeコマンドを使用するよりも高速です。 しかし、DBMS_STATSを使用しても、索引の統計情報はシリアルに取得します。

確かに新しい機能を使おうとしたらコストベースにしないといけないのはよくわかるけれども、もともとコストしかサポートしていない DB2 をみているとホントにコストがいいのかどうか、ある程度のサイズのデータベースであればルールベースで問題ないことが多い。この場合、DBA の作業は単純に増えるだけとなる。

それから Oracle も 10g からは本当に CBO だけのサポートになった。

参考URL メモ
http://www.int21.co.jp/pcdn/oracle/article/optimizer.html
http://biz.rivus.jp/class_performance_tuning.html

2007年9月4日火曜日

ハードパースとソフトパース

バインド変数は Oracle のツールを利用していると、知らずに利用していたりするが、これを使用しないと無駄なリソースを使い、ひいてはパフォーマンスダウンにもつながってしまう。

RDBMS は SQL により指示を与えられると、どのように値を検索するかまず考える。これがハードパース。
バインド変数を利用しないと where句の条件が少し違うだけで、また考えてしまう。
一度、似たような SQL をどう検索するか、考えた結果を憶えておいて、これを利用するのがソフトパース。

このあたりに詳しい仕組みが説明されている。

HARD PARSEの発生の有無によってリカーシブコールの発生回数に違いが現れています。
...
なお、データの偏りが大きく、ヒストグラム統計情報を取得している場合には、WHERE条件をリテラルで指定した方がよりよい実行計画が選択される可能性が高くなります。

なるほど、なんでも使えばいいというものではない、何事も。
ちなみにリカーシブ(再帰)コールとは、 Oracle などは自分の内部情報も
テーブルにもっているので SQL で検索する。つまり SQL を実行するために、さらに内部で自動的に SQL が発行されている。

2007年9月1日土曜日

SQLインジェクション

というと、価格.com の事件が有名。

「価格.com SQL」で検索してみると当時の惨状とこれに対する経営者への非難の様子がわかる。
チーフ・オペレーションズ・エンジニア などという肩書きの技術者がいるところは、日本どころか世界でもまれかもしれないが...

技術的な内容はこのあたりでよく解説されているが、バインド変数を使用しているとこうした攻撃を防ぐことができる。

けれども mod_plsql みたいなところに脆弱性が潜んでいると難しい。
もっとも危険を避けるのであれば Internet ではこうしたものは使わないのが経験あるエンジニアなのかもしれない。

Swift UI チュートリアル Loading watchOS が終わらない?

Loading watchOS が終わらない? ディスク容量の残量が少ないので不要なシュミレーターを削除したとこころ watchOSのものが全部なくなってしまっていた。 WatchOS を削除して再度インストールしても復活せず。 Create a new simulator で ...