2012年8月27日月曜日

ORACLE速度劣化の確認事項

備忘録です。間違いがあるかもしれません。

1.インデックス情報などが抜けているもしくは削除されていないか確認する。
 (全インデックスを確認)

2.ハードディスク容量は圧迫されていないか確認する。

3.メモリの使用量を確認する。
 (メモリをORACLEで使いすぎると、OSの動作で遅くなる)

4.CPUの使用量は安定しているか確認する。
 (SQLに問題がある可能性がある

5.統計情報を以下コマンドで取り直す。

 例)表ごとの統計情報を取得する場合
 EXECUTE DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP');
 例)スキーマごとの統計情報を取得する場合
 EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');

 例)8i以下の場合
 ANALYZE TABLE tablename COMPUTE STATISTICS

以上です。

2012年6月4日月曜日

C1FlexGrid 5.0Jでの入力制御について

グリッドのセル編集において、不正な値を入力させないために入力制御したいケースは多々あります。
C1FlexGrid 5.0Jでは、グリッドのカスタムエディタを設定することで入力制御ができます。

サンプルとして、新規プロジェクトを用意し、フォーム上にグリッド「Grid1」とテキストボックス「TextBox1」をあらかじめ配置しておきます。
そしてFormのLoadイベント上でカスタムエディタを設定します。

下記ではグリッドの左から2列目のカスタムエディタとして 「TextBox1」を設定してあります。

実行してみると、フォームに張り付けた「TextBox1」が消えているはずです。
カスタムエディタとして指定したコントロールは、普段は画面上から消えた状態になります。

グリッドの左から2列目をクリックし、編集モードになった時、エディタとして表示されます。

次にこの「TextBox1」に入力制御を付けてみます。

すると、セル編集時に10文字までしか入力できないように制御できます。


カスタムエディタには自作のコントロールも指定できますので、拡張テキストボックスを自作すればさまざまな条件での入力制御が行えます。
【ちなみに】
カスタムエディタの使い方について、もっといろいろ知りたい場合は、C1FlexGrid 5.0J付属のサンプルプログラム「CustomEditors」を見てください。
日付をカレンダーから選択したり、色を選択する方法も含まれています。

64bit環境でインストールした場合、デフォルトで以下のZipファイルの中に格納されています。

C:\Program Files (x86)\C1FlexGrid5\Samples\C1FlexGrid_Samples_VB.zip

2012年5月16日水曜日

Oracle11g パスワード設定

Oracle10gまでパスワードのデフォルト有効期限は無期限でした。
11gからは180日がデフォルトになります。

変更が必要な場合・・・・
以下に関連するコマンドを記載します。

・プロファイルのパスワード有効期限を無期限にする
alter profile default limit password_life_time unlimited;

・ユーザーのパスワードを再設定する
alter user ユーザ名 identified by 新パスワード;

・ロックされているアカウントのロックを解除する
alter user ユーザ名 account unlock;

<手順>

1 oracle管理者アカウントにてログイン

2 sysdbaにてOracleログイン

3 現在のパスワード有効期限を確認

3.1 該当アカウントのユーザプロファイルを確認

SQL> select username,profile from dba_users
      where username like 'XXX';

3.2 ユーザプロファイルのパスワード有効期限を確認

SQL> select *  from dba_profiles
      where profile = 'DEFAULT'
       and resource_name = 'PASSWORD_LIFE_TIME';

4 パスワード有効期限の変更

4.1 新規にユーザプロファイルを作成し、有効期限を新たに設定

create profile XXX_PROFILE limit PASSWORD_LIFE_TIME 360;
※無期限にするなら360→UNLIMITEDを指定

4.2 作成プロファイルのパスワード有効期限を確認

SQL> select *  from dba_profiles
     where profile = 'XXX_PROF'
     and resource_name = 'PASSWORD_LIFE_TIME';

4.3 作成したプロファイルを該当アカウントに割り当て

alter user XXX profile XXX_PROFILE;

4.4 該当アカウントのユーザプロファイルを確認

SQL> select username,profile from dba_users
      where username like 'XXX';



以上。

2012年3月14日水曜日

Orcle11g ログ備忘録

前提:備忘録です。間違いがあるかもしれませんのでご注意ください。 

11gからログの管理が大幅に変更されている。
Automatic Diagnostic Repository(ADR)で管理されるようになっている。 

【ADR】
出力先が異なっていたログをADRで一括格納/管理できる。
 初期化パラメータの「BACKGROUND_DUMP_DEST」と「USER_DUMP_DEST」は11gでは廃止。 

<ADRのディレクトリ構造> 
ADR_BASE:ADRのルートディレクトリ。
初期化パラメータ「DIAGNOSTIC_DEST」で指定. ADR_BASE以下にdiagディレクトリが存在。 ADR_HOME:ADR_BASEの直下。トレースファイル、アラート・ログの保存ディレクトリ。
インスタンス用の保存場所は、<製品_id>と<instance_id>で識別。 

上記ディレクトリは、「V$DIAG_INFOビュー」で確認。
SQL>select * from v$diag_info;
【Oracle Database代表的なログ】
・アラート・ログ:データベース個別のイベントとダンプファイル情報 
・トレースファイル:エラー発生時の情報およびメモリダンプ
・リスナー・ログ:クライアントからの接続要求状況
 (リスナー・ログはリスナーへのアクセス情報が出力されるファイル。出力有無の設定は可能。  出力する設定にしているとファイルは増大し続ける定期的に移動・削除する必要がある。)
 【削除について】

<アラートログの削除>
起動中でも削除可能。ShutDownしてからがよい

<リスナーログの削除>
1./oracle/diag/tnslsnr/host名/listener/alert にxmlファイルが出力されている。

2./oracle/diag/tnslsnr/host名/listener/trace にlistener.logが出力されている。 

1.についてはADRで削除ルールを設定し、purgeコマンドで削除。
C:\> adrci
adrci> set homepath
adrci> purge -age 14400 -type alert 

2については設置当初からのログがそのまま残る。
Oracle停止後、OSより物理削除可能。(基本は移動、圧縮で対応) 

※Oracleサポートに確認するのが一番良い。
※テスト機にて検証してからが基本。

【補足①:アラートログの参照】
 C:\>adrci adrci>show home
adrci >  set editor notepad
adrci >  show alert
adrci >  show problem
adrci >  show incident 

【補足②:削除手順(案)】
※緊急性を要して、肥大化してしまったログの削除しなければならない場合についてですので、  
基本は削除ではなく退避、移動が基本と考えます。 

①データベースのバックアップ
②リスナーログのPURGE
③Oracleの停止
④アラートログの削除
⑤リスナーログの削除