2012年1月30日月曜日

AOL/J End

とりあえず、今理解している範囲でのEBSのJDEBC接続プールの動きである。基本の動きは11i、12とも変わっていない。このプールの仕組の上にApplication Moduleの仕組が搭載されている。その辺の動きついては、また今度かな。

AOL/J Part6.

やっと最後。FND_JDBC_USABLE_CHECKは変更した方が良いと思うが、後は無視してもよいと俺は思う。どういうときに設定を見直す必要があるのか、教えてください。

FND_JDBC_USABLE_CHECK
FND_JDBC_USABLE_CHECKは接続をクライアントに貸し出す前にPL/SQLでの検索を行うかどうかを決定する。プールは接続を渡す前に使用可能かどうかのチェックを行う。これは常に接続がNullではなく、またクローズされていないことのチェックある。FND_JDBC_USABLE_CHECKがtrueに設定されていると、更にその接続が、簡単なPL/SQLの検索を行うことができるどうかの確認も行なわれる。

これはデフォルトがfalseになっているので注意。Safetyチェックなので、できればTrueにした方が良いと思うが、何故PL/SQLのみなのか、説明はない。JavaからPL/SQLをコールする場合の方法としてチェックが必要という意味なのだろうか?
 
FND_JDBC_CONTEXT_CHECK
FND_JDBC_CONTEXT_CHECKは、接続がプールに戻されるときにAOLのセキュリティ情報とNLSの状態がデータベースから取得されるかどうかを決定する。FND_JDBC_CONTEXT_CHECKがtrueの場合、接続がプールに戻されるときにこれらが取得される。(これはDBConnObj.isReusable() に実装されている)。このチェックは選択アルゴリズムが利用可能リストにある接続のセッション情報にアクセスできるよう、接続が返されるときに行われる。

FND_JDBC_PLSQL_RESET 
PL/SQLリセットのフラグは、プールがクライアントに接続を渡す前にその接続で持っているPL/SQLの状態が解放されるかどうかを左右する。このフラグのデフォルトはfalseです。trueにセットされると、プールが接続を渡す前にPL/SQLの状態がクリアされる。  
 

プールは利用可能なリストの中からクライアントのための接続を選択した後、その接続の初期化を
行う。その初期化のうちの一つが、後にapps initializationのルーチンが実行される必要があ
るかどうかを決定するためにSessionManagerによって利用されるフラグをセットすることである。
FND_JDBC_PLSQL_RESETがtrueにセットされていると、このフラグは常にtrueとなります。プールは接続を初期化した後、その接続が使用可能かどうかのチェックも行う。この場合、チェックはPL/SQLの状を解放するDBMS_SESSION.RESET_PACKAGEの実行も行う。これがtrueに設定されていると、プールのパフォーマンスは悪くなる。





AOL/J Part5

FND_JDBC_MAX_WAIT_TIME(変更不可)
 
最大待ち時間は、クライアントが接続を取得しようとするのにどの位の時間を費やすかを決定する。
す。接続をプールから借りるアルゴリズムには、経過時間を最大待ち時間と比較してチェックする
機能が組み込まれている。最大値を超えた場合、nullがクライアントに返されます。事前定義の
設定は10秒。
  
FND_JDBC_SELECTION_POLICY(変更不可)
 
選択ポリシーは、あるクライアントに関しての接続が、利用可能な接続のリストからどのように選択されるかを決定する。コストベースの選択アルゴリズムを採用するよう事前定義されています。このアルゴリズムでは、そのクライアントの状態に一致するように行われる初期化処理が最小になる。
Pool.COSTと呼ばれるコストベースが設定されている。

AOL/J Part4

FND_JDBC_BUFFER_DECAY_INTERVAL
 
バッファ減衰間隔はどの位の頻度で接続プールのメンテナンスが行われるかを指定する。
スレッドはバッファサイズを最大でもFND_JDBC_BUFFER_DECAY_INTERVAL秒毎にチェックする。
各サイクル間の実際の時間はJVMの負荷によって幾らか異なる。実際は大分ずれていると思う。

このパラメータは、FND_JDBC_BUFFER_DECAY_SIZEと共にバッファの減衰量の調整に利用される。例えば、バッファ減衰サイズが3で減衰間隔が1分の場合、1分当たりのバッファの減衰量は3を超えることはない。デフォルトは300秒だったりする。60秒までインターバルを短くすることは可能。

負荷が高い時は、FND_JDBC_BUFFER_DECAY_INTERVALとFND_JDBC_BUFFER_DECAY_SIZEの2つの値の調整に尽きると思う。想定される負荷(例えば、1分あたり増加量以上の数値を設定すればよい)



FND_JDBC_BUFFER_DECAY_SIZE
 
バッファ減衰サイズは利用可能な接続がバッファサイズ以上になっているときに1回のスレッドのサ
イクルで除去されるべき接続の最大数を指定する。このパラメータは、FND_JDBC_BUFFER_DECAY_
INTERVALと共に減衰量の調整のために使用される。



設定値によるケースパターンは後で記述。

AOL/J Part3

FND_JDBC_BUFFER_MIN
 
最小バッファは、プールが利用可能リストに保持しようとする最小の接続数。
バッファサイズがFND_JDBC_BUFFER_MIN以下になると、プール管理のスレッドは
新しい接続を作るように通知される。通知されると、スレッドは即座にその差分を
埋めるだけの接続を作成しようと試みます。プールが既に最大値に達している場合には
新しい接続は作成されない。
このパラメータを0に設定すると、最小バッファのメンテナンスは無効化されます。
しかし、最大バッファのメンテナンスは行われたままです。一方でパラメータを
FND_MAX_JDBC_CONNECTIONSより大きな値に設定すると、全てのバッファのメンテナンス
は無効化される。



FND_JDBC_BUFFER_MAX

最大バッファはプールが利用可能リストに保持しようとす接続の最大数です。
負荷の高い間、バッファは最大数を超えることがあります。しかし、負荷が低くなると、
メンテナンスのスレッドは最大バッファの数までバッファを減少させます。

値が整数(例:30)の場合、最大バッファは固定。
一方でパーセント(例:20%)の場合、最大バッファは一定ではなく、代わりにトータルの
プールサイズのパーセントとして動的に算出される。最小バッファも最大バッファを
動的に決定する際に考慮される。( 整数値にパーセント記号(%)を変えることで変更可能であり
%の場合は10%以上が指針)

 maximum(t) =  minimum + ( (FND_JDBC_BUFFER_MAX/100)  * FND_MAX_JDBC_CONNECTIONS)

ここで、maximum(t)及びsize(t)はある時刻における最大バッファとプールサイズです。
スレッドは定期的にバファサイズをチェックします。バッファサイズが最大バッファより
大きい場合、スレッドはFND_JDBC_BUFFER_DECAY_SIZEに指定された数もしくは
最小バッファを超えた接続数の内、より小さい方の数だけ利用可能な接続を減少させます。
接続が利用可能リストから除去されるとき、最も長い時間利用されていないものが
最初に除去される。

このパラメータを100%に、あるいはFND_MAXIMUM_JDBC_CONNECTIONSと同じ値
及びFND_JDBC_BUFFER_MIN以下の値に設定することでメンテナンスのスレッドが
接続を除去されないようになる。

このパラメータを0に設定すると、最大バッファのメンテナンスは無効化される。

FND_JDBC_BUFFER_MINとFND_JDBC_BUFFER_MAXの双方を0に設定するとメンテナンス
がされなくなる。通常はMINとMAXの間で維持しようとする。

AOL/J Part2

AOL/Jにおいて、各種パラメータの定義、設定のポイントを記述する。

FND_MAX_JDBC_CONNECTIONS 
利用可能な(Available)接続とロック(lock)された(他のクライアントによって使用中で
利用不可の)接続の総計の許容される最大数。プールが最大サイズに達して、
全ての接続がロックされると、現在のクライアントが返却しない限り
新しいクライアントはプールから接続を借りることができません。
デフォルトの設定は500.(12.1.3)
 
設定した時は、Oracle DBの 初期化パラメータであるProcessesにも気をつけること。
FND_MAX_JDBC_CONNECTIONS > PROCESSESだと、PROCESSESの数値を超えて、
新規コネクションを作成する段階でORA-00020が発生する。

FND_MAX_JDBC_CONNECTIONS達して、再利用可能なコネクションが存在しない場合、
Oracle AS側からエラーが戻される。 その他として、エンハンス機能である
AOL/J Connection Harvesterというものがあるが、現時点は稼動確認を取っていないので、
説明は無。

AOL/J Part1

年明けから結構経ってしまった。反省。

EBSの JDBCのConnection Poolingの仕組である。アプリケーションモジュールのプーリングの仕組とは異なるので注意が必要。

AutoConfigで調整が可能である為、大量負荷がかかるOAFのアプリケーションをデリバリする場合は、負荷テストで、各値の数値の増減を確認した方がよい。
(オラクル社より診断ツールが提供されている。プロファイルは「FND: 診断」を「Y」に変えると、取得することが可能になり、「AOL/Jデータベース接続 プール・ステータス」というメニューから表示可能である。ログイン後、以下のURLを叩いても可能。

http://<hostname>:<port>/OA_HTML/jsp/fnd/AoljDbcPoolStatus.jsp


「available connection」、「locked connections」、「connection destroyed ( by  thread)」を中心にモニタリングした方がよい。「leaked connections」は存在しないと認識するが、仮に発生していたら調査をした方がよい。




2011年12月29日木曜日

emacs part2

Del  (delete-backward-char)  カーソルの左の文字を削除
C-d  (delete-char)                  カーソルの文字を削除
C-k (kill-line)                         行のカーソル以降を削除しkill-ringへ
C-w (kill-region)                    regionの範囲を削除してkill-ringへ

2011年11月25日金曜日

unix 指定日以前を削除

$ find <path> -type f -ctime +7 | xargs rm
指定<path>以下にあるファイルで、作成後7日経過したものを削除する。
-type:ファイルの種類。fはファイル
-atime:ファイルアクセスがあったファイル
-ctime:ファイルステータスが変更されたファイル
-mtime:ファイルが修正されたファイル


2011年11月19日土曜日

while

sleepを入れつつ、繰り返しコマンド実行(OSコマンド編)
<Pattern1>
$ while true; do ls -l; sleep 5; done

<Pattern2>
$ while true;
> do ls -l;
> sleep 5;
> done


sleepを入れつつ、繰り返しsqlplus実行(sqlplus編) --- inst.sqlは作成済
<Pattern1>
$ while true; do echo "@inst"; sleep 5;  done | sqlplus <userid>/<password>

<Pattern2>
$ while true;
>   do echo "@inst.sql";
>      sleep 5;
>   done | sqlplus <userid>/<password>

<Pattern1>、<Pattern2>も特に違いはなく見栄え。


2011年11月11日金曜日

emacs part1.

3度目の正直になるか -- emacs --

C-x C-f    (find-file)        ファイルを読込
C-x C-s   (save-buffer)   カレントバッファを保存
C-x C-w (write-file)       カレンドバッファを別名で保存
C-x i     (insert-file)    カーソル位置にファイルを挿入






2011年11月7日月曜日

ITL Slot lack

ORA-00060のデッドロックが発生する際に、INITRNSの設定が小さいことからITL Slotが不足してデッドロックが発生する。通常はMAXTRANSで設定した値によって、ITL Slotを拡張するが、設定値が低い場合に大量の並列化処理が同一データブロックに走った場合に、ITL Slot獲得待ちのデッドロックが発生する。

INITRNSを予め大きめに設定しておくことが対応策としてあるが、1スロット24KBの確保が必要なので、確保し過ぎるとブロックのデータ格納量が不足する。スロット数の理想値は、格納される行数。


trcファイル上では、TXエンキューにおいて、holds X、waits Sが出力されており、AWR上は「enq: TX -allocate ITL Entry」が出力されている。

FAH:Create Accounting(会計の作成) Part2.

FAHは「会計の作成」プログラム実施周りの処理フローを制御する為にイベントを準備している。カスタムで定義ができる。

oracle.apps.xla.accounting.preaccounting ( batch mode only)
   「会計の作成」の実施前のイベント。

oracle.apps.xla.accounting.extract(batch and document mode)
   「会計の作成」、「会計プログラム」のどの段階でも呼出可能なイベント。

oracle.apps.xla.accounting.postprocessing(batch and document mode)
    「会計の作成」、「会計プログラム」の後の後処理で入れられるイベントである。ステータスのフラグ
  更新等での使用を想定している。

oracle.apps.xla.accounting.postaccounting(batch and mode only)
  全てのプログラムでデータベースにコミットを完了した後、呼ぶことが可能。



2011年10月27日木曜日

FAH:Create Accounting(会計の作成) Part1.

「会計の作成」は、コンカレント・プログラムで登録されているが、実体はXML PUBLISHERである。かつ、内部的にBusiness Event Systemを使用していて、会計プログラムを発行する手前(?)でキューイングしている。キュー表はXLAスキーマの「XLA_ACCOUNTING_QTAB」。

2011年10月23日日曜日

DB停止障害の初期調査

簡単に確認できることなので、停止障害時には最初の手順として 先ず組み入れること

1. インスタンスが起動しているかを確認
       ps -ef  | grep <Oracleプロセス>

2. ログインできるかを確認
   sqlplus <user>/<pass>

3. リスナーに接続できるかを確認
   tnsping <接続文字列> <試行回数>
   lsnrctl status

4. alert.log



2011年10月17日月曜日

PL/SQL階層プロファイラ

PL/SQL Profilerが進歩し、いつのまにかPL/SQL階層プロファイラになっているとは。。。恐るべきPL/SQL.....

PL/SQL階層プロファイラ


2011年10月11日火曜日

PPT Architect Vs Pragmatic Programmer

年齢が上になるに連れ、リーダーとして、コーディングや実作業をすることは少なく、進捗管理や課題、リスク管理、チーム内見積作業の管理系タスクが 多くなる。例えば、課題においては、一発でクライアントに理解してもらえるわかりやすいPPTを作成し、論理的に対応策、そのPROS/CONSを説明し、厳しい質問にも冷静に回答する。提案作業も同様。オブジェクト指向のモデリングの結果が如何にモデリングとして今後の保守性を踏まえ素晴らしいかではなく、今回のシステム構築によりPSI計画の考え方がどのように代わりに、クライアントにどのようなポジティブな変化が発生するのか?

一方、現実的に見てきた世界として、往々にしてコアな技術的な人ほど、いいことを言いたいはずなのに、説明は長く、資料も偏り過ぎており、ビジネスが見えていないことが多い。ただ、それは説明や絵ごころといったコアスキルが欠けているだけであり、コアスキルが欠けている中においても特殊性を発揮している人はいっぱい居る。

これは、どっちがいいという話ではない。

我々が目指すとことはPPT Architectであり、達人プログラマーであり、クライアントへのサービスマン(SIサービス事業、コンサルタント・サービス事業)という 3つの柱を両立させることに真摯に挑戦するということだと思う。あまりにも、ロールにこだわり、自分の仕事の範囲を自ら制限することが多くなったと思う。

もったいない。 可能性を追求することが面白いのに。

2011年10月10日月曜日

XLA_EVENTS/XLA_AE_HEADERS Status Code

XLA_EVENTS 
[EVENT_STATUS_CODE]
 I - 未完了(Incomplete)
 U - 未処理(Unprocessed)
 N - 未対応(No Action)
 P - 完了(Processed) 
 
[Process_status_code]
D - Draft (GLに転送しないドキュメントモード)
E  - Error (エラー)
I  -  Invalid (検証エラー)
P  - Processed (処理中)
R  - Related event in error  
U  - Unprocessed (未処理)
 
XLA_AE_HEADERS
[GL_TRANSFER_STATUS_CODE]
 N - 未転送(Not transferred)
 S - 選択された転送(Selected for transfer)
 Y - 転送済(Transferred)

2011年10月7日金曜日

GL Import

「GL_INTERFACE」に格納された仕訳明細データをインポートし、仕訳明細データが正常に取り込まれた後、Truncateを実施するが、データがエラーだったり、他のデータが残る場合(例えばGROUP ID等でパラレル化している場合)、Delete文を発行する。

2011年10月3日月曜日

和暦変換

select to_char(sysdate,'eeyy/mm/dd','NLS_CALENDAR=''Japanese Imperial''') 
from dual;

忘れがちなので、とりあえず。

2011年10月2日日曜日

Zチャート

月々の売上、売上累計、移動年計の3つをあらわしたグラフ。売上げの微妙な変化(月間、季節要因)を分析することが可能である。

2011年9月29日木曜日

Amazon Tablet

iPad、iPhone5が市場を席巻しているが、Amazon Kindleの良さに今更ながら、気づいた。。。洋書の技術書があんなに安く買えるとは。。かつ、重い洋書が何十冊も入るし。。。時代に取り残されているな、俺。Tabltも昨日発表されたし、買おうか。

FAH Partition Table

FAHのXLA_EVENTS、XLA_DISTRIBUTION_LINKS、XLA_AE_LINES、XLA_AE_HEADERSテーブルは標準としてモジュール別にパーティション化されている。更にサブパーティション化を実施することはサポート外である為、注意。今後変更される可能性があるので、都度確認が必要。

2011年9月24日土曜日

OAFとADF

JSFが2.0になり、ADF11gも着実に進歩していてWeb Centerとの統合も進められているが、EBSのOAFのTechnologyは従来までのADF10gのままである。かつ、実行時にはOracleEBSが必要であるのは、開発環境として何か間違っていないか?

2011年9月20日火曜日

Size between JA16SJIS and JA16SJISTIDE remote connection

JA16SJISとJA16SJISTIDE、SJISとEUC等の間をDBリンクでリモート接続する場合、実はSELECT時のVARCHAR2やCharのサイズが2倍以上になる。但し、「_keep_remote_column_size」と呼ばれる隠しパラメータがデフォルト(true)で効いているので影響がない。

推奨は同一文字コード。 JA16SJISとJA16SJISTIDEもSJISはSJISだが、全く異なる文字コードである為、注意。

2011年9月19日月曜日

統計情報が欠落、陳腐化しているテーブル・インデックスオブジェクトは?

SELECT table_name FROM dba_tab_statistics
WHERE  stale_stats   = 'YES'
OR     last_analyzed IS NULL;


INDEXの場合は、INDEX_NAMEで、DBA_IND_STATISTICS静的ビュー。

他にも 有効な列情報はあるので、Case by Caseで追加。

2011年9月16日金曜日

FFFTP

少し前の話になるけれど、FFFTPの開発終了宣言が話題になっていました。もう15年前ぐらいかな、パートナー会社の方に使い方を教えてもらった時は、何がどうなっているかわからなかったけど、それ以来、便利便利とずっと使ってたもんな。オープンソース、フリーツールはダメという御客様でも、何故かTeraTermとFFFTPはイイみたいな独特の立ち位置。
これからも使い続けると思います。全く御会いしたこともない方ですが、長い間お疲れ様でした。

2011年9月9日金曜日

EBS Partition Table & Index

標準テーブルでパーティション化されていないテーブルをパーティション化する。その際に標準のINDEXをパーティション化するのは、前提条件はあるが、サポート内。
既にパーティション化されているものをサブパーティション化するのは、サポート外

2011年9月6日火曜日

PSI

SCMの中で使用されるコトバで、Production/Purchase-Sales-Inventoryの略。つまり、生販在の統合的な管理かなといっても、そのアルゴリズムはどうなっているのだろう。生産計画、購買計画、生産実績、購買実績、販売計画、販売実績、在庫管理、ロジティクス管理といった要素がMixedされて最適な計画ができるとは思うのだが、これにBOMとか絡んでくると、どのぐらい時間がかかるのものなのか?

2011年9月5日月曜日

GL PERIODS & Posting Performance

未来分(例えば、現在が2010年度だが、2013年度のデータを入れる)の仕訳データを格納した場合、オープン、クローズに関わらず、未来月分の残高が更新されていく為、転記処理のパフォーマンスに影響が発生する。

2011年9月3日土曜日

Launcher

ランチャーってWindowsのQuick Launcherで十分と思って、馬鹿にしていたのだが、結構使ってみると良い。ごめんなさい。食わず嫌いだったな。

Launchy
http://www.launchy.net

2011年8月30日火曜日

データ・ディクショナリ

当たり前すぎて、忘れてしまうので。メモ&コピー

データ・ディクショナリのすべての実表とユーザー・アクセス可能ビューは、Oracle DatabaseユーザーSYSが所有している。データ・ディクショナリの実表内のデータは、Oracle Databaseを機能させるために必要。このため、データ・ディクショナリの情報はOracle Databaseによってのみ書込みまたは変更される必要がある。したがって、Oracle Databaseのユーザーは、SYSスキーマに含まれている行またはスキーマ・オブジェクトを変更できない。変更すると、データ整合性が損われることがある。セキュリティ管理者は、このアカウントを厳しく管理する必要があり。

実表
    データベースに関する情報を格納する、基礎となる表です。これらの表に読取り/書込みできるのはOracle Databaseのみです。これらの表は正規化され、データのほとんどは、暗号形式で格納されているため、ユーザーが直接アクセスすることはほとんどありません

    ビュー

    これらのビューは、実表にあるデータを、ユーザー名や表の名前などの実用的な情報にデコードし、結合WHERE句を使用して情報を簡略化します。これらのビューには、データ・ディクショナリ内のすべてのオブジェクトの名前と説明が含まれています。すべてのユーザーがアクセスできるビューもいくつかありますが、その他のビューは管理者のみが使用するように設計されています。



      表6-1 データ・ディクショナリ・ビューのセット
      接頭辞 ユーザー・アクセス 内容 注意

      DBA_


      データベース管理者

      すべてのオブジェクト

      一部のDBA_ビューには、管理者にとって有用な情報を含む列が追加されています。

      ALL_


      すべてのユーザー

      ユーザーが権限を持つオブジェクト

      ユーザーが所有するオブジェクトが含まれています。これらのビューは有効化されている現在の一連のロールに従います。

      USER_


      すべてのユーザー

      ユーザーによって所有されているオブジェクト

      接頭辞がUSER_のビューには、通常、列OWNERは含まれません。この列は、問合せを発行するユーザーとして、USER_ビューに暗黙的に含まれています。


      2011年8月26日金曜日

      grep

      Oracleの話題ばかりなので、少し違ったTipsを。

      grepは以下の略とは本当か?
      ex editorのグローバルサーチのg
      正規表現のregular expression
      printのp



      2011年8月25日木曜日

      Call Stored Procedure② (OracleADF)

      IN引数のみのストアド・プロシージャ呼出をする為には?

      JDBC PreparedStatementオブジェクトを使用する。通常、以下の手順のヘルパーメソッドを用意し、呼出部分の簡素化を実施する。
      1. 渡される文のためのJDBC PreparedStatementを作成し、PL/SQLのbegin...endブロック内にラップする。
      2.  バインド変数が渡された場合は、値のループ処理を実施する。
      3. 各バインド変数の値を文に設定する。(JDBCのバインド変数APIは1から始まる番号付けを使用するため、0から始まるforループのインデックス変数にコードで1を加えていることに注意する。)
      4. 文を実行する。
      5. 文をクローズする。
      【Helper】
      protected void callStoredProcedure(String stmt, Object[] bindVars) {
        PreparedStatement st = null;
        try {
          // 1. JDBC PreparedStatement を生成
          st = getDBTransaction().createPreparedStatement("begin "+stmt+";end;",0);
          if (bindVars != null) {
            // 2. バインド変数が渡された場合は、値を取得する。
            for (int z = 0; z < bindVars.length; z++) {
              // 3. PreparedStatementにパラメータをセットする。
              st.setObject(z + 1, bindVars[z]);
            }
          }
          // 4. ステートメントを実行。
          st.executeUpdate();
        }
        catch (SQLException e) {
          throw new JboException(e);
        }
        finally {
          if (st != null) {
            try {
              // 5. ステートメントをクローズ。
              st.close();
            }
            catch (SQLException e) {}
          }
        }
      }


      2011年8月23日火曜日

      Call Stored Procedure① (OracleADF)

      Oracle ADFからストアド・プロシージャをコールするサンプル。DBTracsactionインターフェースのexecuteCommand()メソッドを使用して procedure_with_no_argsプロシージャをコールする。
       
      // In StoredProcTestModuleImpl.java
      public void callProcWithNoArgs() {
        getDBTransaction().executeCommand(
          "begin dev_sample.procedure_with_no_args; end;");
      }

      2011年8月20日土曜日

      TEMP Estimation

      [Reuquirement Defenition & Design]
      TEMP表領域を見積場合、最大取得テーブル件数の2倍が最初の見積

      [Intgration Test]
      Temp表領域のHWM、負荷テストにおけるTEMP表領域のHWM(特にオンライン負荷を徹底的に)

      ===領域管理をLOCALとした場合===
      v$temp_extent_pool を使用したSQL。RACの場合、gv$temp_extent_pool

      SELECT d.tablespace_name "Tablespace",
                      to_char(nvl(t.hwm, 0)/1024/1024,'99999990.999')  "Used (MB)"
      FROM    sys.dba_tablespaces d,
                     (SELECT tablespace_name, sum(bytes_cached) hwm
                      from v$temp_extent_pool group by tablespace_name) t
      WHERE d.tablespace_name = t.tablespace_name(+)
      AND       d.extent_management like 'LOCAL'
      AND       d.contents like 'TEMPORARY'
      ;


      ===領域管理をDICTIONARYとした場合===
      SELECT  total.TABLESPACE_NAME "Tablespace",
                       to_char((A/1024/1024 - B/1024/1024),'99999990.999') "Used(MB)"
      FROM
            (SELECT       sum(bytes) A,
                                   tablespace_name
              FROM          dba_data_files
              GROUP BY tablespace_name) TOTAL,
            (SELECT       sum(bytes) B,
                                   tablespace_name
              FROM         dba_free_space
              GROU BY  tablespace_name) FREE
      WHERE   total.TABLESPACE_NAME=free.TABLESPACE_NAME(+)
      AND        total.TABLESPACE_NAME='TEMP_DIC';



      2011年8月19日金曜日

      Oracle Application FAH (仕訳転送テンポラリテーブル)

      Oracle Application のFAHは仕訳転送後のGLへのインポート時にGL_INTERFACEのようなテンポラリテーブルを作成する。(GL_INTERFACEはテンポラリではなく通常のテーブルである。)テンポラリテーブルは、そのままDBに残る為、パージプログラムを実施する必要がある。パージ・プログラムは、GLの会計期間がクローズされていない限り、有効にならない。

      また、FAHで蓄積されていく取引データはGLのパージと連動して設計することが原則である。それはFAHが提示している機能を使用することを前提とした場合のオラクルの設計方針になっている為である。

      2011年8月18日木曜日

      UNDO TBS Estimation

      実績ベースのUNDOの見積は以下の考え方で実施する。
      OTN & KROWNで判る。また、R10.1より、V$UNDOSTAT の TUNED_UNDORETENTION でUNDO_RETENTIONはチューニングが実施されている。

      (A × B + 64 ÷ C + D × 2) × C + 余裕値(単位:キロバイト)

      A:UNDO_RETENTIONの値(0の場合は1)
      B:V$UNDOSTATビューのUNDOBLKSの値を600で除算した値
              一番更新が多い時間帯のレコードを元にすること
              事前見積の場合は1秒あたりの発生UNDOブロック数を仮定
               (1秒あたりのブロック数をどのように見積れば?)

      C:ブロックサイズ(2/4/8/16/32のいずれか)
      D:V$UNDOSTATビューのMAXCONCURRENCYの値
              事前見積の場合は最大同時トランザクション数を仮定


      <<UNDO_RETENTION < TUNED_UNDORETENTION の考え方>>

        |<---------------------- TUNED_UNDORETENTION ------------------>|
        |<--- UNDO_RETENTION ---->|                                                       |
        |+++++++++++++++++++++++ |++++++++++++++++++++++++|
        |<---------- 完全に保証 ---------->|<--- 保証されるとは限らない --->|

      2011年8月16日火曜日

      Oracle Applications [GL]

       OracleEBS 12.1.1 Information.
       
      ApplicationGL - General Ledger
      Table222 Tables
      View282 Views
      Concurrent Program278 Concurrent Programs
      Lookup190 Lookup Types
      File12 Diagrams & Reports
      Event16 Workflow Events 

      V$CACHE

       データベース・バッファ・キャッシュ上にあるオブジェクトをブロック順に降順に並べる
       スクリプト .catclust.sql, catparr.sqlをsysdba権限のあるユーザーで実施すると
       v$cacheが作成される。
      ========================================================================
      SELECT    dbu.username        OWNER_NAME
               ,vca.name            OBJECT_NAME
               ,vca.partition_name  PARTITION_NAME
               ,vca.kind            OBJECT_TYPE
               ,count(*)            BLOCK_COUNT
      FROM     v$cache vca,  DBA_USERS dbu
      WHERE    vca.owner# <> 0
      AND      vca.owner# =  dbu.user_id
      GROUP BY dbu.username, vca.name, vca.partition_name, vca.kind
      ORDER BY count(*) desc
      ;

      ========================================================================

      About Oracle SQL Developer

      SI Object Browser、PL/SQL Developerは、Oracle PL/SQL の開発やDBA管理に有効なツールだったけど、今はOracle SQL Developerが一押しである。通常のDML操作、DDL作成、PL/SQL開発(デバック機能含)だけでなく、UT Function等のUnit Test用の機能とPL/SQL Profilerを利用したCoverlage機能、Oracle社が提示している各種レポート機能(DBA系やCPU上位別SQL)、リアルタイムSQLモニタリング 、ドリルダウンによる実行計画の把握等、前はScriptにしてテキストファイルで大事に持っていた機能がツール化されている。更にSQL Developer Modelingと呼ばれるERツールとも連携しています。それが全てフリーで使えるのは素晴らしい。(決して、オラクル社の回し者ではない)
       まあ、ますます、技術の中身を理解していく人が少なくなっていく気がするのだが、それは今の流れなのかもしれない。