【ナレッジ】Oracle RDBMS②

1900-01-04

TEST

Oracle9iR1

(Oracle9iR1 Oracle9i AS、データ破損の検出、オンラインの分析検証)
Oracle9i AS
・Oracle HTTP Server Powered by Apache
 <主要mod>
 ・mod_plsql・・・PL/SQL及びJavaストアド・プロシージャのHTTPリクエストの処理
 ・mod_jserv・・・ServletへのHTTPリクエストをApache Jservへディスパッチ
 ・mod_oprocmgr・・・Oracle HTTP Server Powered by Apache内のアプリケーション・プロセス管理
           及びロード・バランシング・サービス
 ・mod_perl・・・PerlプログラムへのHTTPリクエストをOracle HTTP Serverに組み込まれた
         Perlインタプリタへディスパッチ
 ・mod_fastcgi・・・C、C++、Javaで記述されたCGI及びFast CGIプログラムの実行
 ・mod_ssl・・・SSL認証に基づいた公開鍵方式のセキュリティ機能を提供し、Oracle HTTP Server間の
         通信を暗号化
 Oracle PL/SQL Server Pages(Oracle PSP)

 SOAP(Single Object Access Protocol)
 :非集中化された分散環境下で情報を交換するための、XMLに基づいた軽量プロトコル。
  → 既存のソフトウェア・コンポーネントをWebサービスとして公開するプロセスが効率化される。
 EJB・・・Enterprise Java Beans
 JSP・・・Java Server Pages

 Oracle9i AS Forms Services
 ・・・Oracle Formsで開発されたOLTPアプリケーションとWebブラウザへ配布するためのサービス
    cf) MS Active Directory ソフトウェアの割り当て/公開(グループポリシー)
 Enterprise Information Protocol(EIP)・・・ポートレット技術
 Oracle9iAS Web Cache
 ・・・頻繁に利用されるWebページをメモリ上に格納。データベースの検索結果を含む動的コンテンツの
    高速配信を実現。
 Oracle9iAS Database Cache・・・データベースの一部のデータをキャッシュとして複製。

・Oracle9iAS Wireless Edition概要図・・・メモファイル(.png)参照。

・ITL・・・トランザクション・エントリ

・Oracle データ破損の検出
 ・物理破損の検出 → ORA-1578
  7.0.1 ~ 7.1.6 DB_BLOCK_COMPUTE_CHECKSUM = TRUE
  7.2.0 ~ 9.0.1 DB_BLOCK_CHECKSUM = TRUE
  (8i~:ログファイルも)
  cf) ログ・ブロック・チェックサム
    7.2.0 ~ 8.0.6
     LOG_BLOCK_CHECKSUM = TRUE
    8.1.5 ~ 9.0.1
     DB_BLOCK_CHECKSUMに統合
  ※ UPDATE、INSERT文等、データブロックの更新が多い程、オーバーヘッドは大きくなる
    (数パーセントのオーバーヘッドでしかない)
  ※ パラメータがFALSEに設定されていても、SYSTEM表領域では常にチェックサムは計算される。

 ・論理破損の検出・・・ブロック一貫性チェック
  7.0 ~ 8.0.6
  ・データブロック EVENT='10210 trace name context forever、level 10'
  ・索引ブロック EVENT='10211 trace name context forever、level 10'
  8.1.5 ~ 9.0.1 DB_BLOCK_CHECKSUM = TRUE
  ※ パラメータがFALSEに設定されていても、SYSTEM表領域では、常に一貫性はチェックされる。

  ◎ ANALIZE TABLE 表名 VALIDATE STRUCTURE;
    ANALIZE INDEX 索引名 VALIDATE STRUCTURE;
    ・・・表または索引構造の整合性をチェックする。cf) 8iまではI/Oと競合してしまう。

  cf) ANALIZE TABLE 表名 COMPUTE STATISTICS; 全表走査によるオプティマイザ統計情報収集
     ANALIZE TABLE 表名 ESTIMATE STATISTICS SAMPLE 5 PERCENT; サンプリング
    ANALIZE TABLE 表名 DELETE STATISTICS; 統計情報の削除(ルールベースに変更)

・遅延ブロッククリーンアウト
 ・・・ブロック内のロック情報は、トランザクションがコミットされた時ではなく、次の問合せがブロックを読み込んだ時
    にクリアされ、最新の状態になる。クリアを行うために、問合せはロールバック・セグメント・ヘッダーの
    トランザクション表に保存されているトランザクションのステータスとSCNをチェックする。
 データブロックのヘッダー
  → TXスロット・・・行データへロック情報と使用するロールバックセグメントの情報が格納される。
  → 行・・・TXスロットの識別子

(Oracle9i)
・オンラインでの分析検証
 ・Oracle9iでは、ANALYZE VALIDATE STRUCTUREコマンドをオンラインで実行できる。
 ・このコマンドは、検証するオブジェクトでDML文による変更は発生している間でも実行できる。
  新しいモードが、データの可用性に影響することはない。
   ANALYZE TABLE employee VALIDATE STRUCTURE ONLINE;

gc_files_to_locks = FILEID = ***

FILEID・・・データファイルID
*** ・・・ PCMロックの数

このデータファイルに2つ以上の表が含まれている
→ 各々の表にアクセス → gc_files_to_locksの値によってPINGは発生する(ロック・リソースの問題)

ブロックリカバリ(RMANより実行)
BLOCKRECOVER DATAFILE x BLOCK y;
BLOCKRECOVER TABLESPACE 表領域名 DBA x;
BLOCKRECOVER CORRUPTION LIST;

← ・ANALYZE  ・アラートファイル

(Oracle)
プロセスごとのメモリー領域・・・PGA、但し、MTS構成では、UGAは共有プールに含まれる
                    (ユーザー・セッション・データ + ソート領域)  カーソル情報
→ ALTER SYSTEM FLUSH SHARED_POOL;
ROWID 18バイト
2002/02/07 NSSOL スキーマ担当 佐藤氏との談話
・現行システム値をベースに、予想される行数を算出。新規導入テーブルについては、別途検討(各業務Gの見積結果待ち)
・PCTFREE、PCTUSEDについては、更新の頻度により、以下の値を採用予定。
 更新頻度   大 ←-------→ 小
 PCTFREE     30     20    10     5  
 PCTUSED     60    70    80        85
・利用料金、明細サマリについては、更新が多いので、PCTFREEを30、PCTUSED 60を採用予定。

TBL容量 = レコード長 × 行数 × PCTFREE × 1.5 (安全率)
Oracle9i グロバリゼーション・サポートガイド・・・多言語対応
・環境変数ORA_NLS33を $ORACLE_HOME/ocommon/nls/data
・クライアント・セッションとサーバーが異なるキャラクタセットを指定した場合、Oracle9iでは、キャラクタセットの文字列を自動的に変換する。
 → パフォーマンスを最適化するために、クライアント、サーバー 同じキャラクタセット(変換はできるだけさける)
・正しく設定されたキャラクタセット 2 ~ 3 ・・・自動的に変換されるので問題なし。Cf) 将来的な言語要件
・マルチバイトコード系・・・日本語、中国語など
・データベース・スキーマ・・・CHAR/VARCHAR2・・・1文字1バイト以上 → キャラクタ・セマンティクスに切り替える。
・ASCII - ASCII、EBCDIC - EBCDIC <プラットフォーム>
・キャラクタセット変換・・・同じ文字が含まれているかどうかを確認する。 cf) 置換文字
・DB作成後のキャラクタセットの変換:全Import/Export  JA16SJIS JA16EUC ドイツ語WE8DECには要注意! → UTF-8
・NLS_TERRITORY  
% setenv NLS_LANG JAPANESE_JAPAN.JA16EUC
              言語          地域  キャラクタセット
・NLSビュー NLS_SESSION_PARAMETERS  NLS_INSTANCE_PARAMETERS  NLS_DATABASE_PARAMETERS
         v$NLS_VALID_VALUE
・環境変数ORA_SDTZ・・・OS_TZ(DBのタイムゾーンはOSのタイムゾーンと同じ)
cf) NLS_CALENDER = Japanese Imperial (日本の元号暦) → DATA型の表示 H14-02-12

 
(Oracle9iR1 Oracle9i for Unix Systems インストレーション・ガイド リリース1_001)
・Oracle 9i データベース構成
 1 汎用目的
 2 トランザクション処理
 3 データ・ウェアハウス
 → 事前構成済
 4 カスタマイズ済(事前構成済より時間かかる)
 5 ソフトウェアのみ
・Oracle構成アシスタント
 ・Oracle Database Configuration Assistant
 ・Apache Web Server Configuration Assistant(HTTPリスナーポート 7777)
 ・Oracle Data Migration Assistant
 ・Oracle Enterprise Manager Configuration Assistant (OEMリポジトリ)
  ① [使用可能な製品] → [Oracle9i Management and Integartion] → [インストールタイプ]
     → [Oracle Management Server]
  ② [カスタム] → [Oracle Management Server]
 ・Oracle Internet Directory Configuration Assistant
 ・Oracle Net Configuration Assistant
 ・Oracle Workflow Configuration Assistant

・Oracle Database Configuration Assistant
 ・Oracle9iインストール中に、Oracle9iデータベース作成後、自動的に起動
 ・汎用目的
  ・初期化パラメータはデフォルト
  ・Oracleオプション及びinterMediaコンポーネントの自動インストールと構成
  ・アドバンスド・レプリケーション機能
  ・専用サーバーモード
  ・NOARCHIVELOG
 ・カスタマイズ済・・・以下をカスタマイズ
  ・データファイル、CTLファイル、REDOログ・ファイル
  ・表領域及びエクステントのサイズ
  ・データベース・メモリ・パラメータ
  ・アーカイブモード、アーカイブ形式及びアーカイブ先
  ・トレース・ファイルの書き込み先
  ・キャラクタセット値

・Oracle Real Application Clustersのインストールに関する制限事項
 ・Oracle Real Application Clustersデータベースのロードサイズは、Cluster Group Services
  7ビットモードで一致していなければならない。
  32ビット/64ビット・・・同じ9.0.1データベースを共有できない。
  × Server Manager → ◎ SQL*Plus
・MS WindowsよりOracle9iをサーバーにインストール
 → X-Windowエミュレータを使用(Window Managerで「Native」モードに設定)
   (Hummingbird Exceed X-Window)
   ・表示の問題 → 全てのX-Windowを終了して、新しいセッションを開始

・システム資源の確認
 ・Oracle9iソフトウェアでは、2GBより大きなファイルをサポートする。
 ・Oracle9iデータベースに接続する全てのユーザーのファイルサイズのシェル制限は、最も大きなデータファイルのサイズよりも
  大きくする必要がある。(unlimitedに設定)
   $ ulimit -Sa・・・弱いシェル制限(現在値)
   $ ulimit -Ha・・・強いシェル制限(最大値)
     2k -  86G
     4k - 171G
     8k - 343G
     16k - 680G
     32k - 1.3T(データファイルサイズ)
   cf) MAX 297G

・製品固有の要件
 Oracle9iオプション
 ・RAC HP・・・MC/Service Guard 11.09 OPS Edition
 ・プリコンパイラ HP・・・HP ANSI Cコンパイラ A.11.01.20以降
              Gcc 2.9-hppa-000310
              HP C++ A.03.27
 ・Pro*COBOL HP・・・Merant Server Express 2.00.10

・インストールの推奨事項
 ・OFA(Optimal Flexible Architecture)
  ・Oracle Universal Installerに含まれるシード・データベース・・・OFAに準拠せず(→ Oracle9i for UNIX管理者リファレンス)

・rootユーザーとして行う設定タスク
 ・カーネルパラメータを構成する。
 ・マウントポイントの作成(OFA準拠)
  ① ソフトウェア用1つ
  ② データベースファイル用に3つ以上
  /pm
   構文
   p・・・文字列定数
   m・・・2桁の数字
 ・データベース管理者用のUNIXグループの作成
  ・OSDBAグループ(通常はdbaグループ)
   ・・・SYSDBA権限(必須)。HPユーザーの場合、OSDBAグループにはRTSCHED、RTPRIO、MLOCK権限が付与される。
       (→ Oracle9i for HP 9000 Series HP-UXリリースノート)
  ・OSOPERグループ(通常はoperグループ)・・・必要に応じて
  グループを追加するためのユーティリティ
  HP・・・システム管理者のためのメニュー(SAM)

 ・ORACLE_BASE・・・Oracleソフトウェア/管理ファイルの最上位
   OFA・・・//app/oracle
        Ex) /u01/app/oracle
 ・ORACLE_DOC・・・オンライン・マニュアルをインストールする場所
 ・ORACLE_HOME
   OFA・・・$ORACLE_BASE/product/
    Ex) /u01/app/oracle/product/9.0.1
 ・ORACLE_SID
  インストール中にデータベースを作成する場合には、ORACLE_SIDにSIDの値を設定しておくことができる。

 ・パスを切る。
  
  % cd
  % .$HOME/.profile
  
  % cd
  % setenv $HOME/.login

<設定手順>
初期化パラメータDISPATCHERSの設定(動的) → spfileにも追加、mc02インスタンスも
 DISPATCHERS = "(ADDRESS = )(PROTOCOL = TCP)(DISPATCHERS = 4)(POOL = ON)(PORT = 1521)
 (同じところに複数記述可)     (SESSIONS = ***)・・・セッション数
                                            (CONNECTIONS = 500)・・・各ディスパッチャごと
・tnsnames.ora・・・(server = shared)を追加 / (server = dedicated)を削除
・jdbc・・・コネクションプーリング

①mc01リスナー・プロセス停止
②Oracleインスタンス停止(全ノード)
③各インスタンス 初期化パラメータdispatchersエントリ追加 mc01本番 02 ~ 04 フェイルオーバー用
④Oracleインスタンス起動、接続確認

・SQL*Plus列の項目毎 サイズ指定
 col 列名 for a **・・・サイズ
 set trims on
 set termout off

・初期データベースの内容
 ・パスワード・ロックの解除及びリセット
  パスワードを使用する前に、SYS、SYSTEM、SCOTT以外の全ての管理ユーザー名のロックを解除して、パスワードをリセットする。
  (Oracle Database Configuration Assistant)
  (自動) [Database Configuration Assistant]ウィンドウで[パスワード管理]ボタンをクリック
  (手動) $ sqlplus /nolog
      SQL> connect / as sysdba
      SQL> ALTER USER IDENTIFIED BY PASSWORD ACCOUNT UNLOCK;
  ・ユーザー名及びパスワードの確認
  ・データベースの識別
   ・グローバル・データース名  sales.us.acme.com  データベース名、8文字以内(DB_NAMEパラメータ)
    DB_NAME + DB_DOMAIN ⇒ SERVICE_NAMES  SID・・・インスタンス名
  ・表領域及びデータファイル
    $ORACLE_BASE/oradata/db_name
  ・初期化パラメータ
     $ORACLE_BASE/admin/db_name/pfile
  ・REDOログ
    $ORACLE_BASE/oradata/db_name
  ・制御ファイル
    $ORACLE_BASE/oradata/db_name
  ・データディクショナリの内容

  ・インストール失敗後のクリーンアップ・・・Oracle Universal Installerを使用。
(Oracle9iR1 Oracle9i for Unix Systems 管理者リファレンス リリース1_001)
1. Oracle9iの管理
  ・Oracle9iのファイル及びプログラムでは、疑問符(?)は、環境変数ORACLE_HOMEの値を表す。
    ALTER TABLESPACE TEMP ADD DATAFILE '?/dbs/dbs2.dbf' SIZE 2M;
  ・「@」はORACLE_SIDを表す。(現行のインスタンスを表す)
    ALTER TABLESPACE ADD DATAFILE db1file@.dbf
  ・環境変数
   Ex) SID echo ORACLE_SID
   ・NLS_LANG .
   ・ORACLE_SID
   ・最後にピリオド(.)が付くことにより、検索パスにカレントディレクトリが追加される。
   ・SQLPATH
    ・SQL*Plusがlogin.sqlファイルを見つけるために検索するディレクトリまたはディレクトリのリスト
     を指定する。
   ・UNIX環境変数
    (・CLASSPATH)
     (・DISPLAY)
    ・HOME
    ・LANGまたLANGUAGE
    ・LD_OPTIONS・・・デフォルトのリンカー・オプションを指定
    ・LD_LIBRARY_PATH
    ◎PATH・・・$ORACLE_HOME/binディレクトリが含まれている必要がある。
      directory1:directory2:directory3:・・・:directoryn:.
    ・PRINTER
    ・SHELL
    ・SHLIB_PATH:共有ライブラリ・ローダーが実行時に共有オブジェクト・ライブラリを検索するディレクトリの
           リストを示す。
    ・TMP及びTMPDIR・・・一時ファイル用のデフォルトディレクトリ
    ・XENVIRONMENT
   ・共通の環境設定
    ・oraenvコマンドファイル
    ・ローカルbinディレクトリ・・・Oracle9iインストール後実行するroot.shファイルで指定する。
                    デフォルト値は/usr/local/bin
cf) root.sh
  ・・・Oracle製品に必要なファイル権限が設定され、他のroot関連の構成アクティビティが実行される。

  ・データベース間の移動
    $ ./usr/local/bin/oraenv
    ORACLE_SID=[default]? sid
  ・現行セッションでの環境変数値の設定及びエクスポート
  ・システム時刻の設定
   ・表の順序を決定する場合は、日付列ではなく、順序番号を使用する。
  ・実行可能ファイルの再リンク
    ・・・OSのパッチ適用後またはOSのアップデート後に必要。
    ※ Oracle Intelligent Agent等のOracleホーム・ディレクトリ内のOracleプログラムを事前に
     シャットダウンする。
     $ relink
          (all/oracle/network/client/interMedia)

  ・システム・グローバル領域
   ・SHMMAXカーネルパラメータで設定
    HP・・・物理メモリーのサイズ
    DB_BLOCK_BUFFER・・・1024 ~ (cf) DB_CACHE_SIZE)
   ・SGAサイズの確認・・・SHOW SGA
  ・Oracle9iのメモリー要件
   cf) sizeコマンド
   <手順>
   1. 次の計算式を使用して、Oracle9iバックグラウンド・プロセスに必要なメモリーの全内容を計算する。
     text + SGA + ( n × ( data + uninitiated_data + 8192 + 2048 ))
    ・text・・・oracle実行可能ファイルのテキストセクションのサイズ
     ・SGA・・・SGAのサイズ(バイト)
    ・n・・・Oracleバックグラウンド・プロセスの数
    ・data・・・oracle実行可能ファイルのデータ・セクションのサイズ
    ・uninitiated_data・・・oracle実行可能ファイルの初期化されていないデータ・セクションの数
    ・8192・・・プロセスのスタックのサイズ(バイト)
    ・2048・・・プロセスのユーザー領域のサイズ

    バックグラウンド・プロセス名「ora_process_sid」
    Ex) SAL1インスタンスのログライター(LGWR)プロセス ora_lgwr_sal1
     2. 次の計算式を使用して、Oracle9iのシャドウ・プロセスに必要な追加メモリーの容量を計算
      data + uninitiated_data + 8192 + 2048 + cursor_area(アプリケーションのカーソル領域のサイズ)
     シャドウ・プロセス名は、oracle_という名前で表示される(・・・ORACLE_SIDの値)

  ・データベースの制限
   ・UNIX固有のOracle9iファイル・サイズ制限の一覧
    ・データファイル 4194303 × DB_BLOCK_SIZE (→ 32G)
  ・オペレーティング・システムのアカウントとグループ
    ・Oracleソフトウェア所有者アカウント(oracleユーザー)
    ・OSDBA、OSPER、ORAINVENTORYグループ
  ・グループとセキュリティ
    ・oracleアカウント
     ・プライマリ・・・oinstallグループ ・セカンダリ・・・dbaグループ
     ・oinstallグループに属することができるのは、oracleアカウントのみ。
  ・外部認証
   OSとOracle認証の両方に同一のユーザー名を使用するには、以下の初期化パラメータをNULL文字列に設定する。
    OS_AUTHENT_PREFIX
  ・orapwdユーティリティの実行(パスワードファイルの作成)
   1. Oracleソフトウェア所有者としてログイン
   2. $ORACLE_HOME/bin/orapwdユーティリティを使用する。
     $ orapwd file= password= entries=
      ・・・$ORACLE_HOME/dbs/orapw
      ・・・SYSユーザーのパスワード
      ・・・エントリの最大数
  ・パスワード管理
   ・Oracle Database Configuration Assistant [SUMMARY]ウィンドウ [パスワード管理]ボタンをクリック
   ・ALTER USER IDENTIFIED BY ACCOUNT UNLOCK;

(Oracle9iR1 初期化パラメータDISPATCHERS CONNECTIONSオプション)
cmrunpkg -n mcdbs0* mcdbs0*_ora

・PROCESSES 1024 インスタンス起動OK
 Total SGA 4372530416
  Variable   1191182336
 共有プール 1191182336

 WebLogicセッション・・・787以上は上がらず
 追加で接続を行おうとすると、ORA-12540エラー発生(TNS内部制限値を超過)

jdbc:oracle:thin@(description=(address_list=
 (address=(protocol=tcp)(port=1521)(host=10.169.1.181)))
 (CONNECT_DATA=(SID=mc01)(SERVER=shared))))
 → NG

shared_servers=100 → sessions 631
           precesses 540
DB側でどこかつまっている・・・要求キューパンク?
shared_servers=100 → sessions 200
           precesses 118

◎OS側の制限 ディスパッチャ
 v$session SERVER = SHARED

・DISPATCHERS初期化パラメータCONNECTIONSオプション
 ・・・デフォルト値はOSによる。 Solaris・・・512/1048

・initmc01.ora dispatchersパラメータ PORTオプション 要削除

・索引・・・PCTFREEは小さく設定する。PCTUSEDは索引に指定できない。
・1つの表で索引を多くする・・・更新時にオーバーヘッド/検索は早くなる。
・PSRパッチ当て・・・インスタンス停止そいた状態で行う。終了後、catalog.sql、catproc.sqlを実行する(時間がかかる)
・動的SGA・・・RAC構成では使用不可(R1)  
・MTS構成・・・SORT_AREA_SIZE初期化パラメータを明示的に設定する必要がある。
         CREATE INDEX時は大きめに設定(OS依存、数Gバイトもあり)  
         通常稼動時は、実際のソートを行う行数をベースにSORT_AREA_SIZEのサイズを設定
・SORT_AREA_SIZE・・・動的、ALTER SESSION、ALTER SYSTEM・・・DEFFFERED デフォルトは65536バイト
・HASH_AREA_SIZE・・・動的、ALTER SESSION デフォルトは2 × SORT_AREA_SIZE
・PGA_AGGREGATE_TARGET
 ・MTS構成の場合、PGA_AGGREGATE_TARGETは使用不可能である、無視される(Oracleの仕様)
  → MSTのPGAは、共有プールの獲得が行われ、SORT_AREA_SIZE、HASH_AREA_SIZEで設定する。
 ・PGA_AGGREGATE_TARGETを設定した場合、設定しない場合に比べてスワップ領域を大量に消費する。
  → PGA_AGGREGATE_TARGETを設定した場合、設定しない場合に比べて、1接続当り約8倍のスワップ領域を消費する。
  → 専用サーバー接続で、PGA_AGGREGATE_TARGETを設定しない場合、接続数2000でも、13.5GBのスワップ領域ですむはず。
・DBリカバリ・・・制御ファイル、データファイル、オンラインREDOログファイルの状態(SCN)が全て同一でなければならない
             (これが同一でないとDB起動できない) → DB起動後、RECOVERコマンドでリカバリを行う。
・PSR9013
 ・PGA_AGGREGATE_TARGET等Oracle9i新機能の障害FIX
 ・RAC障害FIX(検索結果が実データと異なる)
・@/rdbms/admin/catpatch.sql・・・catalog.sqlとcatproc.sqlの両方を実行するようになっている。
・RACGuard・・・RACオプションとは別個の製品。旧称OPFS。2ノードでアクティブ/スタンバイ構成。
・制御ファイルのコピー(RAWデバイス)
 RAWデバイスがマウントされているノードにrootアカウントでログイン、以下のコマンドを実行。
 # dd if=<コピー元のRAWデバイス名> of=<コピー先のRAWデバイス名> bs=8k
  → in recordとout recordが同じであることを確認。
・STATSPACK時刻起動
 ALTER SYSTEMにて、TIMED_STATSISTICS = TRUEに変えてある(商用4ノードとも)
・RAWデバイスファイル・・・クラスタ停止せずに拡張可能(シェルが存在)
・LMONがORA-29740
 ・LMON・・・不要になったリソースをキャッシュからCleanup。
 ・Cleanup中、LMONはリモートメッセージを受け付けない状態になる。Cleanupするリソースが多く存在する場合、長時間メッセージを
  ブロックしてしまい、通信できない状態となり、ORA-29740が発生(BUG#2276622)。PSR9014にて改修予定。
 ・暫定対処・・・初期化ファイルに「_lm_cache_res_cleanup」パラメータ設定(デフォルト25、これより少ない値を明示的に設定)
          ・・・Cleanupされるリソースの比率
          → 確認方法
                         select a.ksppinm "Patrameter", b.kspptvl "Value" from x$ksppi a, x$ksppcv b
             where a.indx = b.indx and a.ksppinm like '「_lm_cache_res_cleanup';

(リカバリ手順)
STARTUP MOUNT
SET AUTORECOVERY ON
RECOVER DATABASE
ALTER DATABASE OPEN

STARTUP MOUNT
RECOVER DATABASE
ALTER DATABASE OPEN

・>>! ・・・リダイレクション ・・・ ログファイルに追記
・ANALYZE INDEX <索引名> VALIDATE STRUCTURE ONLINE;
 → ONLINEを指定すると、OracleがオブジェクトのDML操作中に検証を実行できるようにする。
   Oracleは並行して操作が実行できる程度に、実行する検証の量を減らす。
   (INDEX_STATSビューに情報が格納されていない) (クラスタ化されているオブジェクトを分析する場合に指定できない。
・Oracle9i DataGuard Release2 ・・・ Logical Standby データベース
・Oracle9iR2・・・LogMinerでLOB、LONG、パラレルDMLをサポート。
(DB容量)
 NUMBER・・・(桁数 / 2) + 1
 VARCHAR2・・・桁数
 → × 件数 × 1.8 表
   × 件数 × 2.2 索引
UNDO_RETENTION・・・データベースに保存するコミットされたロールバック情報の量(秒単位で指定) → 時間経過後、上書きされる。
保存期間 → UNDO_RETENTIONパラメータで適切に設定する(長時間問合せが行われる場合)
 alter system set undo_retention = 10800 scope = memory;
 select ・・・・・;
 alter system set undo_retention = 900 scope = memory;

RACには、同じ値を設定する必要がある。

・データマート用表領域・・・MVIEW作成(ON COMMITリフレッシュ)・・・システムの負荷
                   ↑
                 OLAPが検索・・・VIEWとの違い、オンライン業務の影響


v$version・・・Oracleログオン時のBANNER部分を表示。PSRバージョンを調べるときに検索する。
CREATE GLOBAL TEMPORARY TABLE
・ON COMMIT DELETE ROWS ・・・ トランザクション固有の一時表。
 コミット実行後、TRUNCATE処理を行う
・ON COMMIT PRESERVE ROWS ・・・ セッション固有の一時表。
 セッション終了後に、TRUNCATE処理を行う。
・Database Resource Manager
 ・ある操作の実行時間の見積もりが事前定義の制限を超える場合、その操作は実行されない。
  リソース・コンシューマ・グループレベルで、MAX_EST_EXEC_TIMEを秒数で設定。リソースプランディレクティブに割り当てる。
  MAX_EST_EXEC_TIME・・・コストベース・オプティマイザの統計に基づいて計算される(多少はブレる)
 ・要素・・・リソース・コンシューマ・グループ、リソース・プラン、リソース割り当て方法、リソース・プラン・ダイレクティブ
 ・リソース・プラン・ディレクティブ
  ・実行時間制限
   ・・・ある操作に許可される最大の実行時間を指定できる。ある操作についてOracleが見積った実行時間が、指定された
      最大実行時間より長い場合、その操作はエラーを出力して終了する。このエラーはトラップ可能であり、操作は再スケジュールできる。
  ・ペンディング・エリアの作成
   アクティブなプラン・スキーマ
   ・・・Database Resource Managerで使用できるように、既にあるデータ・ディクショナリに格納されるスキーマ。
  ・DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA・・・プラン・スキーマにグループを含めることはできない。
  ・次のプラン・ディレクティブ・パラメータは、リソース・コンシューマ・グループを参照するプラン・ディレクティブでのみ使用できる。
   他のリソースプランを参照するプラン・ディレクティブでは使用できない。・・・MAX_EST_EXEC_TIME
  ・プランとリソース・コンシューマ・グループには、異なる名前を使用する必要がある。
  ・アクティブなプランスキーマ内のどこかに、OTHER_GROUPSのプランダイレクティブが存在する必要がある。
・見積り最大時間
 ・Oracle9iのDatabase Resource Managerでは、操作の実行時間を予め見積ることができる。
 ・MAX_EST_EXEC_TIME
  ・・・セッションで許可される最大の実行時間(秒数)。実行時間の見積もりがMAX_EST_EXEC_TIMEを超える操作は、開始されない。
     デフォルトはUNLIMITED。コストベース・オプティマイザの統計に基づいて算出。
 ・プランディレクティブによって参照されない孤立したコンシューマ・グループを作成
   → 当面は使用しないものの、将来的に実装するプランの一部として、コンシューマ・グループを作成できる。
 ・SUBMIT_PENDING_AREAプロシージャは、変更の妥当性チェックとコミットが成功すると、ペンディング・エリアを消去する。
 注意) VALIDATE_PENDING_AREAが正常終了しても、SUBMIT_PENDING_AREAのコミットが失敗するグループ
    ・・・この間に削除しようとしているプランがインスタンスによってロードされた場合
       ⇒ バッチ実行中にDatabase Resource Managerプロシージャを実行してはならない。
 cf) ペンディング・エリアの強制消去
   exec DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;
・プランの更新 exec DBMS_RESOURCE_MANAGER.UPDATE_PLAN(~);
        exec DBMS_RESOURCE_MANAGER.DELETE_PLAN(~); ・・・プランとそれに対応付けられる全てのプランディレクティブを削除。

lvextendの前後・・・export/importは必要。
lvextend → ALTER DATABASE DATAFILES ~ RESIZE ~ ; を忘れずに実行すること。

export/import・・・テーブル単位なら、ブロックサイズが異なる表領域間でのexport/importができる。 
・パーティション表 ローカル索引
 ・・・基礎となる表の構造を反映するため、表パーティションとサブ・パーティションがメンテナンス・アクティビティの影響を受ける場合に、
   パーティション化は自動的にメンテナンスされる。
・ALTER TABLE ADD PARTITION文で指定されたパーティションバウンドが、表の最終パーティションのものより上位に設定されている
 ことを確認すること。
   
Oracle 8.1以降の場合、Group Membership Services(GMS)環境変数を設定する必要はない。後期バージョンのOracleでは、
GMSはベンダ固有のCluster Manager(CM)とOracleデータベースエンジンに移された。
・SQL*Loader制御ファイル
 ・INFILE句で入力データの配置先を指定。
 ・ロードされるデータ
・PARTITION表 LOCAL索引
 TABLEにパーティションが追加されると、LOCAL索引には、「自動的」に対応するパーティションが追加される。
 PARTITIONの名前は、追加されたパーティション名と同じになる。
 LOCAL索引の表領域が明示的に指定されていない場合、TABLEに新しく追加されたPARTITIONと同じ表領域に格納される。
・Oracle チェンジ・データ・キャプチャ・・・Javaが使用されることに注意。
 ・・・JAVA_POOL_SIZE初期化パラメータに4Mバイト + 1バイト以上を設定すること。
・オンライン表 再定義
 仮表作成時に、トリガー、索引、権限付与、及び制約を作成する。
・権限付与
 表 → シノニム → ビュー ⇒ 表オンライン再定義後、シノニム作成が必要。
STATSPACK
 spreport.sql、sprepsql.sqlで作成されるレポートの「SQL Text」の項目で出力されるSQL文は、stats$sqltext表のsql_text列値を表示。
sql_text列・・・VARCHAR2(64) 64バイトを区切りにして数行のレコードに分割
         ⇒ 日本語の2バイト文字の場合で、その文字を跨って区切られた場合、文字が欠けてしまう。
・ビューの作成
 どのスキーマのビューであっても、その所有者は、ビュー定義で参照される全てのオブジェクトにアクセスする権限を明示的に付与されて
いる必要がある。ロールを介してこれらの権限を付与することはできない。また、ビューの機能は、ビューの所有者の権限によって決まる。
・ANALYZE
 ・・・ONLINEオプション  DML操作は可能。検証の量を減らす。
        OFFLINEオプション   DML操作は不可。検証の量の最大化。
 ・ONLINEオプション・・・VALIDATE STRUCTUREのみ。
 ※COMPUTE STATISTICS及びESTIMATE句で収集された統計情報はOracleオプティマイザで使用されるが、
  VALIDATE STRUCTUREで収集された情報は、オプティマイザで使用されない。
 ・VALIDATE STRUCTURE
  ・ブロックと行の整合性(論理/物理 データ破壊 発見用)
  ・索引 削除エントリ調査用(※ONLINEオプションを使用すると、INDEX_STATSに情報が格納されない)

・DBMS_STATS.GATHER_TABLE_STATSプロシージャ
 引数 block_sample => true ・・・サンプルの単位をレコードよりブロックに変更。統計収集効率が向上する。
・AUDIT_ACTIONS NAME列「LOGOFF BY CLEANUP」
 ・・・あるユーザーがshutdown immediateを実行したことによって、強制的に切断された場合、
  またはあるユーザーがalter system kill sessionを実行したことによって、強制的にセッションが切断された場合。
  ユーザーのセッションが強制的に切断されたことを表す。
  (そのユーザーのアクションに対して、特別注意をしなければならない、というわけではない)

・複合キー・・・1番目のカラムのみIndexスキャン(2番目以降はフルスキャン)
・索引領域見積・・・カラム長 + ROWID(18バイト) 、ROWID分を考慮すること。
・SQL*Loader使用後の注意点
 対象INDEXのSTATUSがUNUSABLEになることがある。→ SQL処理時にORA-01502が発生することがある。
 対処)
 ・主キー・・・以下のSQL文を実行する。
  ALTER TABLE <テーブル名> DISABLE PRIMARY KEY;
  ALTER TABLE <テーブル名> ENABLE PRIMARY KEY;
 ・検索キー・・・索引の再作成が必要。

・実行計画の採取方法
 ① 対象Oracleユーザーに対するplustrace権限付与
   connect / as sysdba
   grant plustrace to
 ② 対象OracleユーザースキーマにPLAN_TABLE作成
   connect <ユーザー名>/<パスワード>
   @?/rdbms/admin/utlxplan.sql
 ③ 実行計画のみ採取(長時間走行しそうなSQL文など)
   connect <ユーザー名>/<パスワード>
   set autotrace traceonly
   ⇒ SQL文実行(実行計画のみ表示され、SQL処理は行われない)

・DBA_OBJ_AUD_OPTS・・・Oracleの全てのオブジェクト監査を表示。

・ハッシュ・パーティションもしくはコンポジット・パーティションの場合、以下のALTER文は必須。
 ALTER TABLE <テーブル名> ENABLE ROW MOVEMENT;
 ・・・ハッシュキーにupdateができるようにする(これを実行しないと、ORA-14402エラーが発生する)

・RAC関連プロセス
 ・LMSプロセス グローバル・キャッシュ・サービス・・・リソース ブロック単位で管理(どのブロックが、どのインスタンスで使用しているかを管理)
 ・LMDプロセス グローバル・エンキュー・サービス・・・ロック(テーブル全体のロックなど)
 ・LMMONプロセス グローバル・エンキュー・サービスモニタ(GCS/GESのメモリクリーンアップ、ノード間通信も行う)

・ディスパッチャプロセスの起動
 ALTER SYSTEM SET DISPATCHERS = "(PROTOCOL=TCP)(DISPATCHERS=10)(CONNECTIONS=210)(LISTENER=mc01)" SCOPE=MEMORY;
・ディスパッチャプロセスの停止
 ALTER SYSTEM SET DISPATCHERS = "(PROTOCOL=TCP)(DISPATCHERS=0)(CONNECTIONS=210)(LISTENER=mc01)" SCOPE=MEMORY;

・DML_LOCKS初期化パラメータ・・・トランザクションで変更される表ごとのDMLロックの最大数を指定する。デフォルト値はTRANSACTIONS × 4

・RACにおける、PSR適用後事後作業(catpatch.sql、update、alter system set ~)
 ・・・1ノードのみにて行う。(他のノードのインスタンスは停止しておくこと)
・PSR適用後事後作業は、データベース単位で行う。

・アーカイブモードの確認
 connect / as sysdba
 archive log list

・CREATE VIEWスクリプトで、複数のカラムの組み合わせで一意にする場合
  CREATE VIEW <ビュー名> AS
   SELECT distinct(<実カラム名1>||<実カラム名1>||<実カラム名1>) 別名,
       カラム名 別名・・・

・PSR9014 products.jar実行後
  update obj$ set status=5 where type#=29 and owner#!=0;
 ・・・Javaクラスに一時的に排他をかける処理。「type#=29」でJavaクラスを、「owner#!=0」でsys以外のスキーマを、それぞれ指定している。
    DBサーバーにOracle Java VMがインストールされていない場合、このupdate文の結果が0件であっても、問題なし
    (日本オラクル 海老坂殿より)

・UNIX
 fork・・・親プロセスが子プロセスを起動(親プロセスの入れ物をメモリ上にコピー)
 exec・・・子プロセスの実行
 ⇒ fork → execの多数の繰り返しで、システム上に大きな負荷がかかる。
(構文)
ANALYZE TABLE 表名 COMPUTE STATISTICS FOR COLUMNS 列名;
・ヒストグラムがない場合には、オプティマイザは、データが均一に分布されていることを前提に
 問合せの選択性を決める。
※次の場合、オプティマイザはヒストグラムを使用しない。
 ・バインド変数が使われる列(解析段階ではバインド変数値を認識できないため)
 ・均一に分布したデータ列
 ・等価条件で使われる一意の列

・トリガーの有効化/無効化
 ALTER TABLE 表名 ENABLE/DISABLE ALL TRIGGERS;
※importをignore=n(既存TBLへの上書き)を行う場合、トリガーは無効にしておくこと。
・共有プール
 ・空き領域0 → ORA-4031エラーでインスタンスダウン
 ・使用済み領域 → 古いものから再利用される。
 ・古いものから再利用 < 新規利用要求 → 共有プール空き領域待ちになる。
 対処) ① 共有プールの拡張  ② メモリフラッシュ

・PSR適用時、クラスタサービスは停止しなくてもよい。

・SQL処理後のメッセージを表示させないようにする → set feedback off
・カラム間の区切り文字 set colsep

・SYSDBAでのインポートユーティリティの起動
 imp \'<ユーザー名>/<パスワード> AS SYSDBA \'
 imp \'<ユーザー名>/<パスワード>@<インスタンス名> AS SYSDBA \'

・Oracle9i 1テーブル当り最大カラム数は1000まで
exportユーティリティ .dmpファイル バックグラウンドでcompressを行う方法
① rootユーザーでログイン
② 作業用ディレクトリに移動(目的とするファイルができる場所)
③ パイプファイルを作成
  mknod <パイプファイル名> p
④ パイプファイルのパーミッション変更
  chmod 777 <パイプファイル名>
⑤ rootよりexit
⑥ oracleユーザーでログオン、作業用ディレクトリへ移動
⑦ 圧縮処理をバックグラウンドで実行
  cat <パイプファイル名> | compress > <エクスポートファイル名>.dmp.Z &
⑧ export実行、但し、file=<パイプファイル名>とする。
⑨ export終了後、パイプファイルを削除する
  rm <パイプファイル名>
cf) HP-UX11i・・・2GB以上のファイルは作れない。(SYSTEM領域)

・商用環境PSR9014適用時、並行してAPのリコンパイルを実施すると
 ・PSR9014適用後、$ORACLE_HOME/rdbms/admin/sprepins.sql、sprepsql.sqlは、元に戻ってしまう。
 ・SPTRUNC実行しても、snapidは0クリアされない。
 ・RAC構成の場合、SPTRUNCは1つのノードで行えばよい(但し、commit;は必須)

・importユーティリティ
 ・・・デフォルトでは、import後に、ANALYZEを行う。impコマンドでANALYZE=nを指定すると、import後のANALYZEは行われない。

・PGA_AGGREGATE_TARGET・・・最大値4096G-1バイト
 ・セッションがPGAを解放するする際に、ORA-7445発生。(SQL処理自体に影響なし) Oracleバグ、R2改修予定。
 ・HP-UX11では、OSパニックの恐れ(HP-UX11iでは改修済み)
・SORT_AREA_SIZE
・・・同時接続ユーザー数 × <サイズ> <= PGA
ハッシュ・パーティショニング 設定例(固定電話キャリア SFA案件)
・「受付番号」キーにして、ハッシュ・パーティショニング(16 or 32パーティション)
・EUC業務には、見えないようにする。
・LOCAL索引  ・格納表領域は32kブロックサイズ
・DB_32K_CACHE_SIZEのバッファもしくはRECYCLEバッファを使用。
・更新/削除処理多い → 定期的なIDX DROP/CREATE必要。
・一時表領域(テンポラリ表領域)データ・ファイル名検索
 select NAME from v$tempfile;
・バックアップ制御ファイルを使用した回復
 ①制御ファイルのバイナリ、バックアップコピーの復元(control_filesの書き換え、ddコマンドなど)
  → 制御ファイル(バックアップ用)向lvolを、STEP3新規追加0.5Tディスク内に作成
 ②バックアップ制御ファイルを使用して、データベースの回復(STARTUP NOMOUNT/MOUNT)
  recover database using backup controlfile;
 ③RESETLOGSオプションを使用して、データベースをオープンする。
  alter database open resetlogs;
・制御ファイルのバイナリ・バックアップ
 alter database backup controlfile to '<ファイル名>';
 alter database backup controlfile to trace; (USER_DUMP_DESTに出力)

・失われた制御ファイルのコピー
 ① 可能であれば、現行のコピーを使用。
 ② CREATE CONTROLFILE(→トレースファイルの使用)
 ③ バックアップ制御ファイル(最後の手段)
・パラレルクエリ・・・8.1.6までは問題、8.1.7より安定して動く(問題なし)。ANALYZE → パラレルクエリ パラレル度数・・・CPU×2
・dbw0・・・1つで十分(非同期I/Oが使用されている場合)
 → dirty buffers inspectedが発生していれば、dbw0のプロセスを増やす。

・共有プール拡張 → APがソフトパースする際、実行計画を見つけに行くのに時間がかかり、SQLパフォーマンスが低下する場合がある。
・OLAP・・・基本的にパラレルクエリで処理すること。
※DBWR_IO_SLAVES・・・余分な共有メモリをI/Oバッファと要求キューに割り当てる必要がある。
            複数dbw0プロセスとI/Oスレーブを併用することはできない。
DBA_PART_INDEXESビュー LOCALITY列・・・パーティション索引がLOCALかGLOBALかを示す。

汚いSQL・・・バインド変数を使っていないSQL文(再利用される可能性が低い)
shared_pool_size
dbライター RACインスタンスmc01/02/.03/04 2つに 1週間ウォッチ
→ 統計
 ・バッファヒット率
 ・cache buffer lru chain
 ・dirty buffers inspected
をモニタの事。
db_block_multiblock_read_count・・・RAC全ノード64
(オンライン系・・・連続したブロック読み込みが多い)
・ディスクソートの有無の調べ方
 select name, value from v$sysstat where name like '%sorts%';
  sorts(memory) ・・・メモリ内で実行されたソート回数
  sorts(disk)   ・・・一時セグメントへのI/Oを必要としたソート回数
  sorts(rows)  ・・・ソートされた全行数
 ポイント)
  メモリソートに対するディスクソートの比率を5%未満にする。5%を超す場合、sort_area_sizeを増やす。

・db_file_multiblock_read_count (DB_BLOCK_SIZEの倍数)
 ・・・システム(OS)I/O値より大きくは設定できない(初期化パラメータエントリは64、有効値は16)

db_file_multiblock_read_count・・・RAC構成の場合、最大値は16(R1)
cf) シングル・インスタンス
  (1) DB_BLOCK_BUFFERS / 4
  (2) 最大I/Oサイズ / 最大ブロックサイズ
  (1)と(2)の小さい方。
・最大I/Oサイズ・・・1Mバイト
・最大ブロックサイズ 32k・・・64bit版Oracle  16k・・・32bit版Oracle
・Oracle8.1.7 ~ Select句のカラムに外部結合演算子(+)を付加すると、ORA-30563エラーが発生する。

・v$temp_space_headerビュー(各インスタンスごと)
 ・・・現在使用されている領域の大きさ及び領域ヘッダーに識別される空き領域の大きさについて、
    一時表領域ごとのファイルの集計情報を示す。

・OLAPビュー ORA-30563の件
 隠しパラメータ _subquery_pruning_enabled = false (Oracle 8.1.6 ~ )
 ・alter session句もしくは初期化パラメータへのエントリ(インスタンス内でのみ有効)
 ・マニュアルに記載されている(一般的な)パーティション・プルーニングが阻害されることはない。
 ・パーティション表を使用している場合は、若干パフォーマンスに影響を与える可能性はあるが、
  大幅に劣化したという報告はなし。
 ・SPFILE(バイナリ)上へのエントリは不可。init.ora上へのエントリは可能。

・dirty buffers inspected
 ・・・LRUリストで空きバッファブロックを探しに行ったが、エラーとなった数。

background_core_dump = full
                                partial・・・OracleはSGAを、生成されるコア・ファイルの一部としてダンプしません。
                (bdumpに出力)
event="29740 trace name errorstack level 3"
event="29740 trace name systemstate level 10"

shadow_core_dump = full ・・・ クライアント・プロセスがコア・ファイルに含められる。
              partial・・・クライアント・プロセスがコア・ファイルに含められない。
              (udumpに出力)

udump・・・ create controlfileスクリプト出力
Windows2000の環境にて、レジストリのORA_sid_AUTOSTARTがTRUEに設定されているのに、データベースが自動起動しない
(ORA/TNS-12640)
・・・Windows2000ドメイン(ActiveDirectory)に参加している場合
   → sqlnet.oraにて、SQLNET.AUTHENTICATION_SERVICES=NONEを設定。

・データベース名の変更
 ・・・create controlfile文で制御ファイルの再作成
    コマンドプロンプトでset <環境変数>=<値>

・Oracleサービス作成・・・oradimユーティリティの使用
 ①コマンドプロンプトで以下を実行
  oradim -NEW - prod -INTPWD <パスワード> -STARTMODE manual -PFILE "<初期化パラメータファイル名(フルパス)>"
 ② set ORACLE_SID=
 ③ sqlplus /nolog
   connect / as sysdba/<パスワード>
 ④ create database スクリプト・・・

Oracleサービス名(Windows2000)・・・OracleService
cf) net START OracleService

Windowsの場合、データベース作成前に、そのデータベースを実行するWindowsサービスを作成する必要がある(oradimユーティリティ)
oradimは、サービス作成と同時にパスワードファイルを作成することが可能。

v$session USERNAME列  空白・・・バックグラウンドプロセス
JDBC Thinドライバ 接続時フェイルオーバー
 CONNECT_DATA句にSERVICE_NAME、HOST=にフローティングIPを使用。
・データベース・インスタンス登録・・・データベース起動時に自分自身の情報をリスナーに登録すること。
・サービス登録・・・リスナーにデータベース・サービス名やインスタンス名等のインスタンス名を登録
・MTSディスパッチャ登録・・・リスナーにディスパッチャ情報を登録する。
※起動順は、リスナー・プロセス → Oracleインスタンスの順。
※LOCAL_LISTENER初期化パラメータでOracleNet接続記述子もしくはtnsnames.oraのネット・サービス名を指定
  ⇒ ネット・サービス名に記述されているIP/PORTを見に行く。
OCIBreak() (SIGTERM) ← Pro*C
 Oracle処理でブロックされている場合に関して、シグナル割り込みをかけて別のOCI関数をCallする場合、OCIのハンドルが初期化状態に
なっていないため、次のOCI関数の呼び出しの際に、OCI-21500が発生したり、coredumpすることがある。
⇒ OCIBrfeak関数の呼び出しによって、OCIハンドルを初期化する必要がある。
Cf) OCIBreak( (dvoid  *) svchp,  ← /*サービスコンテキストハンドルまたはサーバー・コンテキスト・ハンドル
           (OCIError *) errhp);    ← /* エラー発生時、診断情報のためにOCIErrorGet()に渡すエラー・ハンドル
・HASH JOIN
 レコードのハッシュ値算出 → JOIN
・select (*) from (select ~ )・・・インラインビュー

/* ORDERED */ヒント・・・FROM句に指定された順序で表を結合する・

・SYSDBAでのexport構文
 exp \'/<パスワード> AS SYSDBA\'
 exp \'/<パスワード>@<インスタンス名> AS SYSDBA\'
・SYSDBAでのimport構文
 imp \'/<パスワード> AS SYSDBA\'
 imp \'/<パスワード>@<インスタンス名> AS SYSDBA\'

select for update文が実行されると、selectの対象となる各行に対して、以下の処理がREDOLOGに書き込まれる。
・行に対して明示的にロックを獲得する処理
・上記処理のロールバックのためにUNDO情報をロールバックセグメントに記録する処理
この処理はOracle仕様上の動作であり、select for updateの対象となる行数と回数が多いほど、REDO LOGの
生成量が増加する。
例) 10000レコード TBL select for update 1行delete → commitを10000回
  ⇒ 50005000行分のREDO LOGが生成。
・db_file_multiblock_read_count
 ・・・1回の要求で読み込まれるDBブロック数(ブロックサイズによらない)

・SQL実行計画採取
 ・SQL*Trace・・・時間がかかる
 ・TKPROF・・・実行計画のみなら、そんなに時間かからず
・ヒント句・・・表の別名 使用可能
・v$librarycache RELOADS値が0に近くなるまで、ライブラリキャッシュに利用できるメモリー量を増やす。
・共有SQL領域に利用可能な追加のメモリを利用するために、セッションに対して許可されるカーソル数を
 増やすこともある。その場合は、初期化パラメータOPEN_CURSORSの値を増やす。
・OPEN_CURSORS 最大値65535

・sqlplusプロセス (CSVデータ大量ダウンロード)
 ・・・カラム列の加工、spoolログの書き出しにより、CPU等のリソースを消費する。
・ビューのコンパイル(Import後に実行すること)
 ALTER VIEW <ビュー名> COMPILE;
・ALTER SYSTEM REGISTER;
 ・・・PMONバックグラウンド・プロセスによって、リスナーがインスタンスに直ちに登録される。
Cf)PMON・・・60秒に1回の間隔で、リスナー登録を行っている。
・レンジ・パーティションの分割
 ALTER TABLE SPLIT PARTITION <パーティション名> AT ( )

・リスト・パーティションTBLのパーティション追加 → 参照しているビューのrecompileが必要。
・Oracle9iより sys(/ as sysdba)のOracle監査が可能になった。
・audit_file_dest=$ORACLE_HOME/rdbms/audit
・監査証跡ファイル名
・OS監査証跡 ACCESS単位
・SYSTEMスキーマ PRODUCT_USER_PROFILE表(PUP表)・・・コマンド実行を禁止することができる。
(Oracle9iR1 Oracle9i DataGuard_001)
1. Oracle9i DataGuard
・管理リカバリモードのバックグラウンドでの起動・・・コマンドプロンプト返ってくる。
・Oracle9i DataGuardの概要
 ・構成や制御が容易なGUIインターフェース(OEM)・・・「DataGuard」
 ・定期的な保守作業のための別サイトへのスイッチオーバー機能。
 ・予期せぬ障害に対処するための別サイトへのフェイルオーバー機能
 ・Redoログファイルの同期転送により、データの消失がないことを保証。
 ・入力ミスや破損データの伝播を回避。
 ・DataGuard Broker
   GUI・・・Oracle9i DataGuard Manager
   CLI・・・DGMGRL

・Oracle9i DataGuard アーキテクチャ
 概要図は、メモファイル(.png)参照。

・プライマリ・データベースは、OracleNet経由で1つ以上のリモート・スタンバイ・データベースに接続されている。
・DataGuard Brokerは、プライマリ・データベースとそれを保護する1つ以上のスタンバイデータベースで構成される
 フォールト・トレラント・システムの構成・制御及び監視に使用する。
・DataGuard Brokerの構成を使用しなくても、Oracle9i DataGuardは使用できる。
注意) DMONプロセスは、初期化パラメータDRS_START=TRUEを使用して開始する。

・SQL*Plus 9.0.1以降から、SPOOLのファイル入出力を行うライブラリがラージ・ファイル操作が可能なものに置き換えられたため、
8.1.*以前のバージョンよりもSPOOLのパフォーマンスが若干悪くなる。
(Oracle9iR1 Oracle9i 高可用性テクノロジー_001)
2章 一般的な高可用性テクノロジー
・予期しない停止時間の短縮化 概要
 ・予期しない停止時間は、E-Businessにとって最も破壊的な事態。
 ・これは、利益の損失、生産性の低下、顧客の不平を招き、法律問題にさえ発展するおそれがある。
 ・Oracle9iデータベースは、予期しない停止時間を最短にする既存の機能を土台として構築されている。
  ・リカバリの高速化
  ・あらゆる障害のエンドユーザーへの影響の低減
・リカバリ時のI/O最短化
 ・予期しない停止によるダウンタイムを短縮するには、リカバリ時間を最短にする必要がある。
 ・実行されるI/O操作の量は、リカバリ時間に直接影響を与える。
 ・2つの要素により、クラッシュ・リカバリ時間が制御される。
  ・REDOログ・ファイルから変更情報を読み取るのに必要な時間(リストの作成)
  ・これらの変更の影響を受けるデータ・ブロックの読み取り、修正、及び書込みに必要な時間
   (リストを読む → 変更されたブロックを読む)
 ・Oracle9では、リカバリ時間を短縮するために2パスのインスタンス・リカバリまたはクラッシュ・リカバリ
  が採用されている。
 ・REDOログ・ファイルには、障害発生の時点で使用されているデータ・ブロックに対する変更が記録されている
  場合がある。
 ・Oracle9iでは、どのデータブロックがディスクに正常に書き込まれたかを示す追加情報がログに記録される。
 ・これらのデータ・ブロックは、リカバリ時には処理されない。
 ・この結果、全体的なリカバリ時間が短縮される。
 ・この機能はデフォルトで有効にされており、データベース管理者(DBA)による設定は必要ない。

 
 1. 問題があるデータ・ブロックのリカバリに必要なレコードを決定する。
 2. リカバリに必要なレコードのみを適用

 ・障害時にすでにディスクに書き込まれているデータ・ブロックに対応。

・Oracle9i ~ DBMS_OLAP_ESTIMATE_MVIEW_SIZE・・・MVIEWサイズの見積もり
(Oracle9iR1 エクスポート、インポートの拡張、SQL*Loader_001)
・エクスポート/インポートの拡張(STATISTICS)
 ・Oracle8iでは、ANALYZEとRECALCURATE_STATISTICSパラメータの組み合わせを使用する。
 ・Oracle9iのSTATICSは、新しいインポート・パラメータ
  ・ALWAYS:計算済統計を常にインポート
  ・SAFE:計算済統計に問題がない場合のみインポート
  ・RECALCURATE:インポート中に再計算を実行
  ・NONE:統計のインポートと再計算を行わない。
・Oracle9iはNCHARデータのキャラクタセット(各国語キャラクタセット)として、UTF8もしくはAL16UTF16のデータ型のみサポート。
・DB_BLOCK_CHECKSUM 8i・・・デフォルトFALSE / 9i・・・デフォルトTRUE

・Oracle Data Migration Assistant

・SQL*Loaderの概要(概要図はメモファイル(.png)参照)
 ・CONSTANT・・・予約語
 ・制御ファイル内部でデータが指定されている場合(INFILE * が制御ファイルに指定されている場合)、そのデータはデフォルトで
  レコード修了記号を使用したストリーム・レコード形式として解釈される。
 ・INFILE 'datafile_name' 'var n'
   n・・・40より大きな値を指定すると、エラーになる。

・ストリーム・レコード形式
  INFILE datafile_name ['str terninator_string']
   terninator_string
    'char string'・・・一重引用符または二重引用符で囲まれた文字列
    X'hex_string'・・・16進数のバイト列

   \n LF
   \t 水平タブ
   \f 改ページ
   \v 垂直タブ
   \r 改行

 ・UNIXベースのプラットフォームでは、terninator_stringを指定しない場合、デフォルトでLF文字 \nが使用される。

 ・LOBデータは、非常に長いデータであるため、LOBFILEからロードすると有効。
 ・データ・ファイル内のフィールドとデータベース内の列の違いに注意する。
 ・SQL*Loader制御ファイルで定義されているフィールドのデータ型が、データベースの列のデータ型と同じではない。
 ・不良ファイル
  ・SQL*Loaderによる拒否
   ・2番目の囲みデリミタがない。
   ・デリミタ付きフィールドが最大長を超えている場合
  ・Oracleによる拒否
   ・キー重複 ・NOT NULLのカラムにNULL値挿入
   ・Oracleデータ型ではないデータ型の指定
 ・廃棄ファイル・・・データベースのその表にも挿入されなかったレコードが格納される。
 ・パラレル・ダイレクト・パス
  ・・・複数のダイレクト・パス・ロード・セッションで同じデータ・セグメントを同時にロードできる。
 ・Oracle9iR2 SQL*LoaderでサポートされるLOB型
  ・BLOB ・CLOB ・NCLOB ・BFILE
 ・パーティション・オブジェクトがサポートされたことにより、SQL*Loaderでロードが可能になったもの
  ・パーティション表中の個別パーティション
  ・パーティション表中の全パーティション
  ・非パーティション

・sqlldr
 ・BAD(不良サイズ)
  ・制御ファイルで指定した不良ファイル名よりも、コマンドラインで指定した不良ファイル名の方が優先される。
 ・BINDSIZE・・・バインド配列の最大サイズを指定
 ・COLUMNARRAYROWS
  ・行数を指定してダイレクト・パス列配列に割り当てる
 ・CONTROL・・・制御ファイルの名前を指定
 ・DATA・・・ロードするデータが入っているデータ・ファイルの名前を指定する。
 ・DATA_CACHE
  ・日付キャッシュ・サイズ(エントリ数)を指定。デフォルト1000。
  ・日付キャッシュは、表に格納するためにデータ型変換が必要な日付値またはタイムスタンプ値が1つ以上ロード
   された場合にのみ作成される。
  ・ダイレクト・パス・ロードでのみ使用。
 ・DIRECT false(デフォルト)・・・従来型パスロード
      true・・・ダイレクト・パス・ロード
 ・DISCARD・・・SQL*Loaderで作成される廃棄ファイル(オプション)を指定。
 ・DISCARDMAX・・・廃棄レコードの最大数を指定する。
 ・ERRORS
  ・挿入エラーの許容最大数を指定
  ・どのような場合でも、SQL*Loaderでは、エラーになったレコードが不良レコードに書き込まれる。
 ・EXTERNAL_TABLE
  ・NOT_USED(デフォルト)・・・従来型パス・モードまたはダイレクト・パス・モードのいずれかを使用して、
                ロードを行う。
  ・GENERATE_ONLY
   ・・・制御ファイル記述されている通り、SQL*Loaderログ・ファイル内の外部表を使用してロードを
      行うために必要なSQL文を書き込む。
  ・EXECUTE
   ・・・外部表を使用してロードを行うために必要なSQL文を実行。但し、SQL文からエラーが返されると、
      ロードは停止する。
 ・FILE・・・エクステントを割り当てるデータベース・ファイルを指定する。
 ・LOAD
  ・指定した件数のレコードをスキップした後に、ロードする論理レコード件数の最大値を指定。
  ・デフォルト:全てのレコードがロードされる。
 ・LOG・・・SQL*Loaderによって作成されるログ・ファイルを指定。
 ・MULTITHREADING
  ・デフォルト:複数CPUシステムではtrue、単一CPUシステムではfalse
  ・ダイレクト・パス・ロードでのみ使用
  ・2つの単一CPUシステム間でマルチスレッドを使用するには、マルチスレッドを使用可能にする必要がある。
 ・PARALLEL
  ・デフォルト:false
  ・ダイレクト・ロード時に複数の同時セッションによって同じ表にデータをロードできるかどうかを指定する。
 ・PARFILE
  ・コマンドラインで頻繁に使用するパラメータを記述したファイルを指定する。

Oracle9i ~  SGA_MAX_SIZE    グラニュルサイズ
SGAサイズ  128MB以下         ・・・ 4MB
         128MB超            ・・・16MB
         128MB超(Windows)・・・8MB
Timestamp型・・・Oracle9i ~
・Oracle9i ~ INITRANS 1 → ITLの最小値は2
 DBブロックのサイズ8k → ITLの最小値は169。
★ITL数が小さい場合、ロックをかけていない行に対するNOWAITの更新でORA-00054が発生することがある。
 Ex)  select for update nowait
     select for update nowait でORA-00054
→TBLのPCTFREEを増やすか、INITRANSを増やす。 
Oracle9i・・・Unicode3.0
・Unicodeデータベース(UTF-8)ソリューションは、Unicodeデータ型ソリューションと組み合わせることができる。
・データベースキャラクタセットは、データベースの作成時に指定する必要がある([NATIONAL] CHARACTER SET)
・Oracle9i NCHAR → Unicode
・UTF-8
 ・複数言語のサポートに必要なコード変更を最小限にする。
 ・ASCIIからの簡単なデータ移行
 ・多言語ドキュメントBLOB → Oracle Textで内容検索
・Unicodeデータベース、Unicodeデータ 併用可能
・Unicodeデータ型の使用
 1. 多言語サポートを段階的に追加  2. パッケージ・アプリケーション  3. シングル・バイトのDBキャラクタセット
 4. WindowsクライアントでUTF-16のサポートが必要
・Unicodeデータベース・・・AL32UTF8 NCS・・・AL16UTF16
・Unicodeデータベースの移行
 ・全DBのExport/Import
 ・ALTER DATABASE SET CHARACTER SET 文
 ・ALTER DATABASE SET CHARACTER SET及び選択式のインポートとエクスポート
Oracle9i
・NCHAR・・・UTF8とAL16UTF16に限定
・JA16SJISFIXED・・・サポートせず  移行ユーティリティ:altchar.sql

多言語ドキュメントの検索・・・マルチレクサー
・latchfree待機イベント → 9i) DB_WRITER_PROCESSESを2以上に設定する。
・オンライン表再定義・・・Sイン後に検討すること(エクスポート/インポートが許されないケース、オフラインにできない、etc・・・)
 DBMS_REDEFINITIONプロシージャ
 項目A、B、C、Dのテーブル、BとCの間に、項目αを追加
 ⇒ 論理的にはA、B、α、C、D (ディクショナリキャッシュ表示)、物理的にはA、B、C、D、α(データブロック内の配置)
 ⇒ パフォーマンスに影響する可能性あり。
・エクスポート → 表の削除/作成 → インポート
 ⇒ 論理的にはA、B、α、C、D (ディクショナリキャッシュ表示)、物理的にはA、B、α、C、D(データブロック内の配置) 一致する
・v$undostat検索(適切なUNDO表領域の大きさを決定)
・DB_CACHE_ADVICEパラメータの設定(ALTER SYSTEM) → v$db_cache_adviceの検索
・ALTER SYSTEM文 動的にSPFILEエントリ追加・・・scope = SPFILEを追加
 → 追加後、以下のパラメータを確認
   v$SPPARAMETER、ISSPECIFIED列がTRUEであることを確認。
     select sid, name, value, isspecified from v$spparameter where name = 'SPFILE';
・dbms_metadata.get_ddl・・・pagesize = 0、log = できるだけ大きく
・UNDO表領域、ロールバック進捗状況確認(ロールバックが時間かかっている場合)
  select * from v$fast_start_transactions; → UNDOBLOCKSDONEとUNDOBLOCKSTOTALを比較する。
・共有サーバー接続で多セッション(1000以上)
  → sessions初期化パラメータを、想定される接続数 × 1.1にすること。
・リソース・コンシューマ・グループの変更・・・DBMS_RESOURCE_NAMAGERプロシージャ
 ・セッション切替え DBMS_RESOURCE_NAMAGER.SWITCH_CONSUMER_GROUP_FOR_SESS('','','<切替先のコンシューマグループ>')
 ・指定されたOracleユーザー全てのセッションの切替
  DBMS_RESOURCE_NAMAGER.SWITCH_CONSUMER_GROUP_FOR_USER('','<切替先ユーザー名>')
 cf) DBMS_SESSION・・・PL/SQLプロシージャから使用。
・Database Resource Managerを使用可能にする方法
 ・初期化パラメータRESOURCE_MANAGER_PLAN = '<リソースプラン名>'
 ・ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '<リソースプラン名>' sid = scope = MEMORY;
 ・ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '' ・・・ Database Resource Managerの解除
・Database Resource Manager情報の表示 v$RSRC_CONSUMER_GROUP
・スイッチ特権の付与
 DBMS_RESOURCE_NAMAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP (
  GRANTEE_NAME => '', CONSUMER_GROUP => '<コンシューマグループ名>', 
  GRANT_OPTION => 'TRUE' );  GRANT_OPTION・・・付与されたスイッチ特権をカスケードできるかどうかを決める。
          'FALSE'
 特定のコンシューマ・グループに切り替えるユーザー許可を付与すると、そのグループに自分の現行のコンシューマ・グループを
 新しいコンシューマ・グループに切り替えることができる。 
・SQL*Net/Net8/OracleNet トレースの取得方法
 ・クライアントのトレース
  sqlnet.oraに以下のパラメータを記述する(クライアント側)
   TRACE_LEVEL_CLIENT=16 (supportと同等)
   TRACE_DIRECTORY_CLIENT=[ディレクトリ名]
   TRACE_UNIQUE_CLIENT=ON
  8.0.6以降では、以下のパラメータも記述する。
   TRACE_TIMESTAMP_CLIENT=ON
 ・TNSリスナーのトレース
  listener.oraファイルに、以下のパラメータを記述する。
   TRACE_LEVEL_[リスナー名]=16 (supportと同等)
   TRACE_DIRECTORY_[リスナー名]=[ディレクトリ名]
   TRACE_FILE_[リスナー名]=[ファイル名]
  8.0.6以降では、以下のパラメータも記述する。
   TRACE_TIMESTAMP_[リスナー名]=ON
  ※設定後、TNSリスナーを再起動する。(Net8では再起動せずに起動することも可能)
   また、トレースは、listenerを起動するたびに上書きされる。
 ・サーバーのトレース
  サーバーのsqlnet.oraファイルに、以下のパラメータを記述する。
   TRACE_LEVEL_SERVER=16 (supportと同等)
   TRACE_DIRECTORY_SERVER=[ディレクトリ名]
  8.0.6以降では、以下のパラメータも記述する。
   TRACE_TIMESTAMP_SERVER=ON
  ※共有サーバー接続の場合、ディスパッチャの再起動が必要。
   トレースは、専用サーバー接続ごと、またはディスパッチャごとに作成される。

  [TRACE_LEVEL_*****]で高いレベルを設定すると、パフォーマンスに影響を及ぼす。ファイルサイズが大きくなる。
(Oracle9iR1 Oracle9i for Unix Systems インストレーション・ガイド リリース1_002)
・Oracle製品の設定タスク
 ・Oracle9iのコンポーネント
  ・Apacheサーバーの構成
  ・追加のタスク(AIX用)
 ・Oracle Real Application Clusters
  ・インストール前の、rootユーザーで行うタスク
   1. rootユーザーでログイン
   2. クラスタの全てのノード上で、OSDBAが/etc/groupsファイルに定義されていることを確認。
     (全てのノード上で、OSDBAG、グループ番号、OSPERGが共通であること)
   3. 次の条件を満たすoracleアカウントを、クラスタの各ノードに作成する。
     ・ORAINVENTORYGをプライマリ・グループとする。
     ・dbaグループをセカンダリGとする・
     ・Oracleソフトウェアをインストール及び更新する時にのみ使用。
     ・リモート・ディレクトリへの書き込み権限がある。
   4. 次の条件を満たすマウントポイント・ディレクトリを各ノードに作成
     ・各ノードのマウントポイント名が最初のノードのマウントポイントと同一である。
     ・oracleアカウントには、読み込み、書き込み、及び実行権限があること。
   5. ユーザー等価関係を設定する。クラスタ内にある全てのノード(ローカルノードを含む)
     のエントリを、oracleアカウントの.rhostsファイルまたは/etc/hosts.equivファイルに追加する。
     <確認作業>
     oracleユーザーで、以下のコマンドを実行
     % rsh pwd
     % rcp /tmp/dummy_file :/tmp/dummy_file

  ・HP用追加情報
   $ /usr/sbin/cmruncl (MC/Service Guardの起動)
   (HP社 「Configuring OPS Clusters with MC/Service Guard OPS Edition」)

  ・RACをインストールする前に、oracleユーザーとして行うタスク
   1. oracleアカウントとしてログイン
     HP・・・MC/Service Guardが動作していることを確認
     $ /usr/sbin/cmviewcl・・・HP側へ問合せ
   2. クラスタ・メンバーシップ・モニター(CMM)が動作していることを確認。
     $ /usr/sbin/cmviewcl
   3. クラスタ内の各ノードにリモートログイン(rlogin)し、oracleアカウントのユーザー等価関係を確認
     ※パスワードを入力するプロンプト → ユーザー等価関係なし

・プリコンパイラ及びツール
 ・Pro*C/C++ HP・・・/usr/ccs/bin $ which ccコマンド(確認コマンド)

・CD-ROMからのインストール
 ・CD-ROMのマウント/インストール
 ・HP 1. 次の手順にて、device_fileを確認
      $ iosscan -fun -C disk
    2. CD-ROMデバイスのエントリが/etc/pfs_fstabに存在しない場合、エントリを追加する必要がある。
      pfs_fstabファイルに、以下の1行を追加
       
       /dev/rdsk/c4t2d0 /SD_CDROM pfs_rrip xlat=unix 1 0
    3. $ su - root
    4. # nohup /usr/sbin/pfs_mountd &
      # nohup /usr/sbin/pfs &
    5. Oracle9i CD-ROMディスク1をCD-ROMドライブに挿入し、次のコマンドを実行し、CD-ROMをマウントする。
      # /usr/sbin/pfs_mount /SD_CDROM
    6. # exit

    現行の作業ディレクトリがCD-ROM内にある場合
    1. $ cd /
      $ su root
    2. CD-ROMをアンマウントするには、次のコマンドを実行する。
      # /usr/sbin/pfs_umount /SD_CDROM
    3. CD-ROMドライブからCD-ROMを取り出す。
    4. 必要なCD-ROMをCD-ROMドライブに挿入し、次のコマンド使用してCD-ROMをマウント
      # /usr/sbin/pfs_mount /SD_CDROM
    5. 正しいマウントポイントをダイアログボックスに入力。
    6. [OK]をクリックして続行する。

・ハードドライブからのOracle9iインストール・・・2GB以上のハードディスク空き領域
 1. CD-ROMをシステムのハードディスクコピー
   Disk1 → 「Disk1」ディレクトリにコピー
 2. Oracle Universal Installerを起動

・Oracle Universal Installer
 1. oracleユーザーとしてログイン
 2. 次のコマンドを使用して、ルート・ディレクトリ・レベルのCD-ROMマウントポイント・ディレクトリから
   インストーラーを起動する。
   $ /runInstaller
   cf) JREを自動的にインストール
 3. [ようこそ]ウィンドウ [次へ]をクリック・・・既にOracle9iインストールしている場合、8.からの手順を実施。
 4. [次へ]をクリック → [UNIXグループ名]ウィンドウ → ORAINVENTORYグループを指定
 5. [次へ]をクリック
   ( → /var/opt/oracleディレクトリが存在しない場合、もしくはoracleユーザーに「/var/opt/oracle」の書き込み
     権限が存在しない場合、別の端末ウィンドウで/tmp/Orainstall/orainstRoot.shスクリプトを実行するための
     プロンプトが表示)
   → [ファイルの場所]ウィンドウ [ソース]フィールド(インストールファイルの位置が指定)のテキストは変更しない。
 6. Oracleホーム・ディレクトリ・パスを「インストール先」フィールドに入力する。(ORACLE_HOME デフォルト値)

 7. [次へ]をクリック
 8. [使用可能な製品]ウィンドウ インストールカテゴリを選択し、[次へ]をクリック
   (Oracle9i Database)

(Oracle9iR1 Oracle9i for Unix Systems インストレーション・ガイド リリース1_003)
・Oracle9iデータベースのインストール
 1. Enterprise Edition
   Standard Edition
   カスタム
   → 選択 → [次へ]

・Oracle9i Enterprise EditionまたはStandard Editionのインストール
 1. [データベース構成タイプ]・・・汎用目的 or カスタマイズ済
 2. OSDBAグループ、OSOPERグループ名の入力
 3. [次へ]をクリック
 6. グローバル・データベース名(例:sales.acme.com)及びSIDフィールド(データベース・インスタンス名)の入力
 7. [次へ]をクリック → [データベース・ファイルの場所]ウィンドウ
 8. [データベース・ファイルのディレクトリ]フィールドに、データベース・ファイルのディレクトリの位置を入力。
 9. [次へ] → [データベース・キャラクタ・セット]ウィンドウ
 10. [次へ] → [サマリー]ウィンドウ
 11. 情報を参照して、十分なディスク領域があることを確認した上で、[インストール]をクリックする。
 13. プロンプトが表示されたら、root.shスクリプトを実行。
   # cd $ORACLE_HOME
   # ./root.sh
   ※ Oracle Real Application Clustersをインストールした場合は、クラスタ内の全てのノードでroot.shスクリプトを
     実行する必要がある。
 14. [構成ツール]ウィンドウ
   ※ データベースをインストールして、インストール後に管理ユーザー・パスワードをロック解除する場合は、
     [Database Assistant]ダイアログボックスで[パスワード管理]ボタンをクリックする。

・インストール・セッションのログの確認
 ◎oraInventoryディレクトリの位置・・・/var/opt/oracle/oraInst.locに記述される。
 ・最新のインストールのログ・ファイルは
   /logs/installActions.log
 ・以前のインストールのログ・ファイル installActions.log
 ※oraInventoryディレクトリの内容、make.logは変更しないこと。

・Oracle9i Enterprise Editionのインストールの完了
 olap.key構成ファイルが作成されるはず。
 cf) $ORACLE_HOME/olap/admin/regctrl /infile olap.cfg

・非問合せモードのインストール及び構成
 ・レスポンス・ファイルの準備
   enterprise.rsp・・・Oracle9iのEnterprise Editionのインストール
   standard.rsp・・・Oracle9iのStandard Editionのインストール
   dbca.rsp・・・Oracle Database Configuration Assistantのインストール
  $ cd /response
  $ cp enterprise.rsp
 ・レスポンスファイルの位置は、インストーラの起動時に指定する。
  (インストーラ)
  $ //runInstaller [-silent] -responseFile
  (構成)・・・スタンドアロンモード
  $ [-silent] -responseFile

 ・Oracle9i Enterprise Editionインストールを非問合せモードで実行した場合、Oracle Net Configuration Assistant
   によるシステムの構成は行わない。
  → Oracleホーム・ディレクトリよりnetcaコマンドを実行し、Oracle Net Configuration Assistantを使用して
    OracleNet Configurationを実行。
 ・非問合せモードでの初回インストール
  ・非問合せモードでインストーラを起動する前に、oraInst.locファイルを手動で作成する必要がある。
   (oraInventoryディレクトリを指定)
   1. $ su root
   2. # mkdir /var/opt/oracle
   3. # cd /var/opt/oracle
   4. テキストエディタを使用し、次の2行を含むoraInst.locファイルを作成
      inventory_loc= ・・・$ORACLE_BASE/oraInventory
      inst_group= ← 何も設定せず
     # chown oracle:oinstall oraInst.loc
     # chmod 664 oraInst.loc

 ・レスポンス・ファイルのエラー処理
   /logs/silentInstall.log

・Oracle Real Application Clusters
 ・ORACLE_HOME・・・全てのノードに存在し、書き込み可能であること。
 ・インストール位置
  ・・・Oracle Universal Installerを実行するノードにインストールされ、クラスタ内で選択した
     別のノードにコピーされる。

(Oracle9iR1 Oracle9i for Unix Systems インストレーション・ガイド リリース1_004)
4.インストール後の作業
・rootユーザーで行うタスク
 ・追加のUNIXアカウントの作成(システム上のそれぞれのDBAは、OSDBAのメンバ)
 ・データベース・セキュリティの検証
 ・Apacheユーザーのグループ・メンバシップの変更
 ・データベースの起動及び停止の自動化
  1. /etc/oratabの編集
    ::{Y|N}
  2. /etc/init.dディレクトリに、dboraスクリプトを作成
    dbstartユーティリティのフルパスを指定
  3. dboraスクリプトへのシンボリック・リンクを、適切な実行レベルのスクリプト・ディレクトリに作成する。
    # ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
    # ln -s /etc/init.d/dbora /etc/rc0.d/S99dbora

・oracleユーザーとして行う構成タスク
 ・UNIXアカウント起動ファイルの更新
 ・環境変数の設定
  ※ 環境変数には、CKPT、PMON、DBWR等のOracleプロセスで使用される環境変数と同じ名前は設定しないこと・
  CLASSPATH・・・Java
  ORACLE_SID・・・インスタンス名、4文字以内
  TNS_ADMIN・・・HPなら/etcディレクトリ(tnsnames.oraファイルの場所)
  TNS_TASK・・・tnsames.oraファイル ネットサービス名の別名
 ・oraenvスクリプトの初期化
  複数インスタンスのマシン
  複数マシンのインスタンスでは、oracleユーザーアカウントの起動ファイルの最後に、oraenvファイルの初期化に必要な
  インスタンス名とコマンドの一覧を指定する。
 ・oratabファイルの更新
  ・・・Oracle Database Configuration Assistantを使用する代わりに、手動でデータベースを作成した場合。
 ・必要なパッチの適用(9iCD-ROM 「READ ME」ファイル)
 ・root.shスクリプトのバックアップ
 ・初期化パラメータの指定
  デフォルトのinit.oraファイルは、配布から$ORACLE_BASE//pfileディレクトリにコピーされる。
  $ORACLE_HOME/dbsディレクトリ・・・テンプレートのinit.oraも含まれている。

・Oracle製品のインストール後のタスク
 ・共有サーバー・パラメータの構成
   SHARED_POOL_SIZE・・・同時ユーザー毎に1KBずつ追加
 ・Oracle Internet Directoryの構成
 ・Oracle Netの構成

・追加のOracle製品のインストール及び構成
 ・Oracle構成アシスタントの実行
  Oracle Database Configuration Assistantの使用
  調査及び修正可能なシェルスクリプト及びSQLスクリプトを出力し、後で実行することもできる。
   $ORACLE_HOME/binディレクトリ
    $ dbca
 ・新しいデータベースまたはアップグレードしたデータベースの構成
  ・・・utlrp.sqlスクリプトを実行(PL/SQLモジュールの再コンパイル)
     1. $ sqlplus /nolog
     2. SQL> connect sys/ as sysdba
         ※ ・・・デフォルトは「change_on_install」、DBを使用する前に変更する
     3. SQL> startup
     4. SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
 ・追加したOracle製品用のデータベースの構成
  1. $ORACLE_HOME/binディレクトリ
    $ dbca
  2. [データベース内のデータベース・オプションの構成]を選択
  3. データベースのSIDを選択
  4. 一覧から使用する製品を選択し、[完了]をクリック

 ・Oracle Real Application Clustersの構成
  ・RACの管理
   RAC通信デーモンを自動的に起動するには、rootユーザーでログインし、/etc/init.d/dboraシステム起動ファイルに
   次の行を追加する。
    su - oracle -c gsd
  ・RACの再インストール
   「Do you want to reinstall name of a product?」 → 「Yes」をクリック
 ・Oracle Label Securityの構成
 ・Oracleプリコンパイラの構成
 ・Oracle Workflowの構成
 ・Recovery Manager用のリカバリ・カタログの作成
 ・Secure Socket Layerの構成

タグ一覧

ブログ一覧ページへもどる

まずはご相談ください!

0364573908

営業時間
10:00 ~ 18:00
定休日
土・日・祝日

関連記事

不動産売却

売却査定

お問い合わせ