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ツールとも連携しています。それが全てフリーで使えるのは素晴らしい。(決して、オラクル社の回し者ではない)
       まあ、ますます、技術の中身を理解していく人が少なくなっていく気がするのだが、それは今の流れなのかもしれない。