ヘッダーをスキップ
Oracle Database管理者リファレンス
11gリリース1(11.1) for Linux and UNIX-Based Operating Systems
E05786-05
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

C LinuxシステムでのOracle Databaseの管理

この付録では、LinuxシステムでOracle Databaseを管理する方法について説明します。次の項目について説明します。

C.1 拡張バッファ・キャッシュのサポート


注意:

この項の内容は、Linux x86にのみ適用されます。

Oracle Databaseでは、データベース・バッファ・キャッシュとして、4GBを超えるメモリーを割り当てて使用できます。この項では、Linux x86システムの拡張バッファ・キャッシュ機能の制限事項と要件について説明します。


関連項目:

拡張バッファ・キャッシュ機能の詳細は、『Oracle Database概要』を参照してください。

メモリー内ファイル・システム

拡張バッファ・キャッシュ機能を使用するには、データベース・バッファ・キャッシュに使用するメモリー量以上のサイズのメモリー内ファイル・システムを/dev/shmマウント・ポイントに作成します。たとえば、8GBのファイル・システムを/dev/shmマウント・ポイントに作成するには、次の手順を実行します。

  1. rootユーザーで次のコマンドを実行します。

    # mount -t tmpfs shmfs -o size=8g /dev/shm
    
  2. システムの再起動時にメモリー内ファイル・システムが確実にマウントされるようにするには、/etc/fstabファイルに次のようなエントリを追加します。

    shmfs /dev/shm tmpfs size=8g 0 0
    

拡張バッファ・キャッシュ機能を有効にしてOracle Databaseを起動すると、Oracleバッファ・キャッシュに対応するファイルが/dev/shmディレクトリに作成されます。


注意:

メモリー内ファイル・システムが/dev/shmマウント・ポイントにすでにマウント済の場合は、その大きさがデータベース・バッファ・キャッシュに使用するメモリー量以上であることを確認します。

USE_INDIRECT_DATA_BUFFERS初期化パラメータ

拡張バッファ・キャッシュ機能を有効にするには、パラメータ・ファイルでUSE_INDIRECT_DATA_BUFFERS初期化パラメータをtrueに設定します。これによって、Oracle Databaseは大きいバッファ・キャッシュを指定できるようになります。

動的キャッシュ・パラメータ

拡張キャッシュ機能が有効になっている場合は、DB_BLOCK_BUFFERSパラメータを使用してデータベース・キャッシュ・サイズを指定する必要があります。

拡張バッファ・キャッシュ機能が有効になっている間は、次の動的キャッシュ・パラメータを使用しないでください。

制限事項

拡張バッファ・キャッシュ機能には、次の制限事項が適用されます。


関連項目:

CREATE TABLESPACEコマンドで使用するデフォルト・ブロック・サイズの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。


注意:

デフォルトのVLMウィンドウ・サイズは512MBです。このメモリー・サイズは、プロセスのアドレス空間に割り当てられます。この値を増減させるには、環境変数VLM_WINDOW_SIZEをバイト単位の新しいサイズに設定します。たとえば、VLM_WINDOW_SIZEを256MBに設定するには、次のコマンドを実行します。
$ export VLM_WINDOW_SIZE=268435456

環境変数VLM_WINDOW_SIZEに指定する値は、64KBの倍数である必要があります。


C.2 SUSE Linux Enterprise Server 10またはRed Hat Enterprise Linux 4でのhugetlbfsの使用

SUSE Linux Enterprise Server 10またはRed Hat Enterprise Linux 4において、Oracle Databaseでラージ・ページ(Hugeページとも呼ばれる)を使用可能にするには、vm.nr_hugepagesカーネル・パラメータの値を設定し、予約するラージ・ページ数を指定します。データベース・インスタンスのSGA全体を保持するだけの十分なラージ・ページ数を指定する必要があります。必要なパラメータ値を判断するには、インスタンスのSGAサイズをラージ・ページのサイズで除算してから、結果の端数を切り上げて最も近い整数にします。

デフォルトのラージ・ページ・サイズを判断するには、次のコマンドを実行します。

# grep Hugepagesize /proc/meminfo

たとえば、/proc/meminfoにラージ・ページのサイズが2MBとリストされ、インスタンスの総SGAサイズが1.6GBの場合は、vm.nr_hugepagesカーネル・パラメータの値を820(1.6GB / 2MB = 819.2)に設定します。

C.3 SGAアドレス空間の増加


注意:

この項の内容は、Linux x86にのみ適用されます。

Linuxのディストリビューションに応じて、次のいずれかの項の説明を適用してSGAアドレス空間を増やします。

SUSE Linux Enterprise Server 10

SUSE Linux Enterprise Server 10でSGAアドレス空間を増やすには、次の手順を実行します。

  1. oracleユーザーでログインします。

  2. $ORACLE_HOME/rdbms/libディレクトリで、次のコマンドを実行します。

    $ genksms -s 0x15000000 > ksms.s
    $ make -f ins_rdbms.mk ksms.o
    $ make -f ins_rdbms.mk ioracle
    

    注意:

    前述の手順を完了してもOracle Databaseが起動しない場合、またはランタイム・メモリー・エラーが存在する場合は、最初のコマンドで指定した16進の数値を大きくしてください。たとえば、0x15000000の値でOracle Databaseが起動しない場合は、0x20000000の値を指定します。この値を小さくするとSGAアドレス空間が大きくなりますが、PGAアドレス空間は小さくなる場合があります。

  3. 次のコマンドを実行し、oracleユーザーのシェル・プロセスのプロセスIDを確認します。

    $ echo $$
    

    戻される数値はプロセスIDです。

  4. 次のコマンドを実行し、ユーザーをrootに切り替えます。

    $ sudo sh
    
  5. 次のコマンドを実行し、oracleユーザーのシェル・プロセスのmapped_base設定を変更します。pidは、手順3で識別したプロセスIDです。

    # echo 268435456 > /proc/pid/mapped_base
    
  6. exitコマンドを実行してoracleユーザーのシェル・プロセスに戻り、OracleリスナーとOracle Databaseを起動します。


注意:

Oracleプロセスはすべて、この変更したmapped_base値を取得する必要があります。mapped_baseが変更されているシェルからリスナーを起動すると、クライアント接続を正しく接続できます。

Red Hat Enterprise Linux 4およびRed Hat Enterprise Linux 5

Red Hat Enterprise Linux 4およびRed Hat Enterprise Linux 5でSGAアドレス空間を増やすには、次の手順を実行します。

  1. oracleユーザーでログインします。

  2. $ORACLE_HOME/rdbms/libディレクトリで、次のコマンドを実行します。

    $ genksms -s 0x15000000 > ksms.s
    $ make -f ins_rdbms.mk ksms.o
    $ make -f ins_rdbms.mk ioracle
    
  3. Oracle Databaseを起動します。

C.4 非同期入出力サポート


注意:

Linuxでは、デフォルトにより、自動ストレージ管理で非同期入出力が使用されます。ネットワーク・ファイル・システムに格納されたデータベース・ファイルでは、非同期入出力はサポートされません。

Oracle Databaseでは、カーネルの非同期入出力がサポートされます。この機能は、デフォルトでは無効になっています。

デフォルトでは、パラメータ・ファイルのDISK_ASYNCH_IO初期化パラメータはtrueに設定されています。ファイル・システムのファイルに対して非同期入出力を有効にするには、次の手順を実行します。

  1. すべてのOracle Databaseファイルが、非同期入出力をサポートしているファイル・システム上にあることを確認します。

  2. パラメータ・ファイル内のFILESYSTEMIO_OPTIONS初期化パラメータをASYNCHに設定します。

C.5 マルチスレッド同時処理

マルチスレッド同時処理が有効になっている場合、v$osstatビューは、オンライン論理(NUM_LCPUS)および仮想CPU(NUM_VCPUS)に対応した2つの行を追加して報告します。

C.6 共有リソースの割当て

MEMORY_TARGETまたはMEMORY_MAX_TARGET機能を使用するには、次のカーネル・パラメータを変更する必要がある場合があります。

C.7 32ビットLinuxから64ビットLinuxへのデータベースの移行

Oracle Database 11gリリース1(11.1) for 32-bit LinuxをOracle Database 11gリリース1(11.1) for 64-bit Linuxに移行するには、次の手順を実行する必要があります。

C.7.1 RMANを使用したデータベースのオンライン・バックアップ

オンライン・バックアップでは、データベースを停止せずに、データベースのバックアップを取ることができます。これを実行する手順を次に示します。

  1. SYSDBAとしてデータベース・インスタンスに接続します。

    SQL> CONNECT / AS SYSDBA;
    
  2. 次のコマンドを実行して、データベースがARCHIVELOGモードであることを確認します。

    SQL> SHUTDOWN IMMEDIATE
    Database closed
    Database dismounted
    Oracle instance shutdown
    
    SQL> STARTUP MOUNT
    Oracle instance started
    
    Total System Global Area  272629760 bytes
    Fixed Size                   788472 bytes
    Variable Size             103806984 bytes
    Database Buffers          167772160 bytes
    Redo Buffers                 262144 bytes
    Database mounted
    
    SQL>ALTER DATABASE ARCHIVELOG;
    Database altered
    
    SQL> ALTER DATABASE OPEN;
    Database altered
    
  3. 次のコマンドを実行してRMANを起動します。RMANは$ORACLE_HOME/binディレクトリにあります。

    RMAN>connect target
    
  4. 32ビットのデータベースとすべてのアーカイブREDOログ・ファイルをバックアップするには、次のコマンドを実行します。

    RMAN>backup database plus archivelog delete input;
    

    注意:

    アーカイブREDOログは、データベースのリカバリに非常に重要です。データベースとともにアーカイブREDOログをバックアップすることをお薦めします。次のコマンドを発行することで、アーカイブREDOログを随時バックアップできます。
    RMAN>backup archivelog all delete input;
    

C.7.2 32ビットLinuxデータベースから64ビットLinuxデータベースへの移行

この項では、次の項目について説明します。

C.7.2.1 データファイルのディレクトリ構造が同一の32ビット・データベースから64ビット・データベースへの移行

ターゲット・コンピュータの制御ファイル、データファイル、REDOログ・ファイルの構造がソース・コンピュータと同じである場合は、次の手順を実行します。

  1. 移行処理を開始する前に、データベースのオンライン・バックアップを実行します。詳細は、「RMANを使用したデータベースのオンライン・バックアップ」を参照してください。

  2. Oracle Database 11gリリース1(11.1) for 64-bit Linuxを新しいOracleデータベース・ホームにインストールします。32ビット・コンピュータと同じバージョンのOracleデータベース・ホームを使用することをお薦めします。


    関連項目:

    『Oracle Databaseインストレーション・ガイド for Linux』

  3. 32ビットLinuxコンピュータから、init.ora、データファイル、制御ファイルおよびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。

  4. init.oraファイルを編集して、次の変更を含めます。

    • ファイルに含まれるメモリー要件を更新します。

    • 必要に応じて、制御ファイルの場所を編集します。


    注意:

    init.oraファイルにリストされた共有プール、Javaプール、sga_targetおよびラージ・プールの値を2倍にすることをお薦めします。

  5. SYSDBAとしてデータベース・インスタンスに接続します。

    SQL> CONNECT / AS SYSDBA;
    
  6. 後で成功を確認できるように、ログ・ファイルに結果をスプールするためのシステム設定を行います。たとえば、次のように入力します。

    SQL> SPOOL /tmp/utlirp.log
    
  7. 64ビットOracleデータベースを起動します。

    SQL> STARTUP UPGRADE pfile=init.ora;
    

    注意:

    32ビットから64ビットへの変更の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

  8. 64ビットOracleデータベースで次のコマンドを実行して、すべてのPL/SQLモジュールを無効化します。

    SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
    
  9. 64ビットOracleデータベースを停止します。

    SQL>shutdown immediate;
    
  10. 64ビットOracleデータベースを起動します。

    SQL> STARTUP pfile=init.ora;
    
  11. すべての既存のPL/SQLモジュールを、64ビットOracleデータベースに必要な形式で再び有効にします。

    SQL>$ORACLE_HOME/rdbms/admin/utlrp.sql;
    

C.7.2.2 データファイルのディレクトリ構造が異なる32ビット・データベースから64ビット・データベースへの移行

ソース・コンピュータと比較して、ターゲット・コンピュータの制御ファイル、データファイル、REDOログ・ファイルの構造が異なる場合は、次の手順を実行します。

  1. 移行処理を開始する前に、データベースのオンライン・バックアップを実行します。詳細は、「RMANを使用したデータベースのオンライン・バックアップ」を参照してください。

  2. Oracle Database 11gリリース1(11.1) for 64-bit Linuxを新しいOracleデータベース・ホームにインストールします。32ビット・コンピュータと同じバージョンのOracleデータベース・ホームを使用することをお薦めします。


    関連項目:

    『Oracle Databaseインストレーション・ガイド for Linux』

  3. 64ビット・コンピュータのinit.oraファイルを編集して、次の変更を含めます。

    • ファイルに含まれるメモリー要件を更新します。

    • init.oraファイルには、32ビットの制御ファイルのパスが記述されています。control_filesパラメータ値を手動で更新して、64ビットの制御ファイルの場所を含める必要があります。


    注意:

    init.oraファイルにリストされた共有プール、Javaプール、sga_targetおよびラージ・プールの値を2倍にすることをお薦めします。

  4. 64ビットのターゲット・コンピュータに含まれるデータファイルの構造が異なる場合は、制御ファイルを再作成するか、64ビット・コンピュータにデータベースをマウントする必要があります。詳細は、「データファイルのパスおよび名前の再調整」を参照してください。


    注意:

    制御ファイルの再作成時にRESETLOGSオプションを使用することは推奨されません。

  5. 後で成功を確認できるように、ログ・ファイルに結果をスプールするためのシステム設定を行います。たとえば、次のように入力します。

    SQL> SPOOL /tmp/utlirp.log
    
  6. 64ビットOracleデータベースで次のコマンドを実行して、すべてのPL/SQLモジュールを無効化します。

    SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
    
  7. ログ・ファイルへのスクリプト結果のスプーリングを無効化します。

    SQL> SPOOL OFF;
    
  8. 64ビットOracleデータベースを停止します。

    SQL>shutdown immediate;
    
  9. 64ビットOracleデータベースを起動します。

    SQL> STARTUP pfile=init.ora;
    
  10. すべての既存のPL/SQLモジュールを、64ビットOracleデータベースに必要な形式で再び有効にします。

    SQL>$ORACLE_HOME/rdbms/admin/utlrp.sql;
    

データファイルのパスおよび名前の再調整

データファイルの名前およびパスが正しい場所を指すように再調整するには、次のような方法があります。

制御ファイルの再作成

制御ファイルを再作成するには、次の手順を実行します。

  1. 次のコマンドを実行して、制御ファイルをトレース・ファイルにバックアップします。トレース・ファイルは、32ビットLinuxコンピュータのdiagnostic_destディレクトリにあります。次のコマンドにより、制御ファイルの再作成に必要なSQLを含むトレース・ファイルが生成されます。

    SQL> alter database backup controlfile to trace;
    

    注意:

    制御ファイルが作成された後、UPGRADEモードでOracleデータベースをオープンしてください。

  2. 32ビットLinuxコンピュータで.sql形式で生成されたトレース・ファイルの名前を変更します。たとえば、次のように入力します。

    $ cp trace.ora control.sql
    

    制御ファイルの内容は、たとえば次のようになります。

    • NORESETLOGSオプションを指定して制御ファイルを再作成する場合。

      NORESETLOGSオプションが指定された32ビット制御ファイルを次に示します。

      STARTUP NOMOUNT pfile=t_init1.ora
      CREATE CONTROLFILE REUSE DATABASE "L32" NORESETLOGS  NOARCHIVELOG
          MAXLOGFILES 32
          MAXLOGMEMBERS 2
          MAXDATAFILES 32
          MAXINSTANCES 1
          MAXLOGHISTORY 454
      LOGFILE
           GROUP 1 '/ade/aime_l32/oracle/dbs/t_log1.f'  SIZE 25M,
           GROUP 2 '/ade/aime_l32/oracle/dbs/t_log2.f'  SIZE 25M
      DATAFILE
           '/ade/aime_l32/oracle/dbs/t_db1.f'
           '/ade/aime_l32/oracle/dbs/t_ax1.f'
           '/ade/aime_l32/oracle/dbs/t_undo1.f'
      CHARACTER SET WE8DEC;
      RECOVER DATABASE;
      ALTER DATABASE OPEN UPGRADE;
      ALTER TABLESPACE TEMP ADD TEMPFILE '/ade/aime_l32/oracle/dbs/t_tmp1.f' SIZE 
      41943040  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
      

      次は、変更された64ビット制御ファイルです。

      STARTUP NOMOUNT pfile=t_init1.ora
      CREATE CONTROLFILE REUSE DATABASE "L32" NORESETLOGS  NOARCHIVELOG
          MAXLOGFILES 32
          MAXLOGMEMBERS 2
          MAXDATAFILES 32
          MAXINSTANCES 1
          MAXLOGHISTORY 454
      LOGFILE
           GROUP 1 '/ade/aime_l64/oracle/dbs/t_log1.f'  SIZE 25M,
           GROUP 2 '/ade/aime_l64/oracle/dbs/t_log2.f'  SIZE 25M
      DATAFILE
           '/ade/aime_l64/oracle/dbs/t_db1.f'
           '/ade/aime_l64/oracle/dbs/t_ax1.f'
           '/ade/aime_l64/oracle/dbs/t_undo1.f'
      CHARACTER SET WE8DEC;
      RECOVER DATABASE;
      ALTER DATABASE OPEN UPGRADE;
      ALTER TABLESPACE TEMP ADD TEMPFILE '/ade/aime_l64/oracle/dbs/t_tmp1.f' SIZE 
      41943040  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
      
    • RESETLOGSオプションを指定して制御ファイルを再作成する場合。

      RESETLOGSオプションが指定された32ビット制御ファイルを次に示します。

      STARTUP NOMOUNT pfile=t_init1.ora
      CREATE CONTROLFILE REUSE DATABASE "L32" RESETLOGS  NOARCHIVELOG
          MAXLOGFILES 32
          MAXLOGMEMBERS 2
          MAXDATAFILES 32
          MAXINSTANCES 1
          MAXLOGHISTORY 454
      LOGFILE
           GROUP 1 '/ade/aime_l32/oracle/dbs/t_log1.f'  SIZE 25M,
           GROUP 2 '/ade/aime_l32/oracle/dbs/t_log2.f'  SIZE 25M
      DATAFILE
           '/ade/aime_l32/oracle/dbs/t_db1.f'
           '/ade/aime_l32/oracle/dbs/t_ax1.f'
           '/ade/aime_l32/oracle/dbs/t_undo1.f'
      CHARACTER SET WE8DEC;
      RECOVER DATABASE USING BACKUP CONTROLFILE;
      ALTER DATABASE OPEN RESETLOGS UPGRADE;
      ALTER TABLESPACE TEMP ADD TEMPFILE '/ade/aime_l32/oracle/dbs/t_tmp1.f' SIZE 41943040
      REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
      

      次は、変更された64ビット制御ファイルです。

      STARTUP NOMOUNT pfile=t_init1.ora
      CREATE CONTROLFILE REUSE DATABASE "L32" RESETLOGS  NOARCHIVELOG
          MAXLOGFILES 32
          MAXLOGMEMBERS 2
          MAXDATAFILES 32
          MAXINSTANCES 1
          MAXLOGHISTORY 454
      LOGFILE
           GROUP 1 '/ade/aime_l64/oracle/dbs/t_log1.f'  SIZE 25M,
           GROUP 2 '/ade/aime_l64/oracle/dbs/t_log2.f'  SIZE 25M
      DATAFILE
           '/ade/aime_l64/oracle/dbs/t_db1.f'
           '/ade/aime_l64/oracle/dbs/t_ax1.f'
           '/ade/aime_l64/oracle/dbs/t_undo1.f'
      CHARACTER SET WE8DEC;
      RECOVER DATABASE USING BACKUP CONTROLFILE;
      ALTER DATABASE OPEN RESETLOGS UPGRADE;
      ALTER TABLESPACE TEMP ADD TEMPFILE '/ade/aime_l64/oracle/dbs/t_tmp1.f' SIZE 41943040
      REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
      
  3. 正しい場所を指すようにファイル・パスを再調整する際に使用した方法に基づいて、ソースの32ビットLinuxコンピュータからターゲットの64ビットLinuxコンピュータに必要なファイルをコピーする必要があります。

    • NORESETLOGSオプション: 32ビットLinuxコンピュータから、init.ora、データファイル、再作成した制御ファイル(control.sql)およびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。

    • RESETLOGSオプション: 32ビットLinuxコンピュータから、init.ora、データファイルおよび再作成した制御ファイル(control.sql)を、64ビットLinuxコンピュータの対応する場所にコピーします。

  4. SYSDBAとしてデータベース・インスタンスに接続します。

    SQL> CONNECT / AS SYSDBA;
    
  5. Linux 64ビットのOracleデータベース・ホームから次のコマンドを実行して、32ビットから64ビットに変更します。

    sql>set echo on
    sql>@control.sql
    

64ビット・コンピュータへのデータベースのマウント

64ビット・コンピュータにデータベースをマウントするには、次の手順を実行します。

  1. 32ビットLinuxコンピュータから、init.ora、データファイル、制御ファイルおよびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。

  2. SYSDBAとしてデータベース・インスタンスに接続します。

    SQL> CONNECT / AS SYSDBA;
    
  3. 64ビットOracleデータベースを起動します。

    SQL> STARTUP mount pfile=init.ora;
    
  4. すべての32ビットのデータファイルの場所を更新して、64ビットのデータファイルの場所を含めます。たとえば、次のように入力します。

    sql> alter database rename file '/ade/aime_l32/oracle/dbs/t_db1.f' to '/ade/aime_l64/oracle/dbs/t_db1.f'
    sql> Database altered.
    
  5. すべての32ビットのログ・ファイルの場所を更新して、64ビットのログ・ファイルの場所を含めます。たとえば、次のように入力します。

    sql> alter database rename file '/ade/aime_l32/oracle/dbs/t_log.f' to '/ade/aime_l64/oracle/dbs/t_log.f'
    sql> Database altered.
    
  6. Linux 64ビットのOracleデータベース・ホームから次のコマンドを実行して、32ビットから64ビットに変更します。

    sql> ALTER DATABASE OPEN UPGRADE;
    

    注意:

    32ビットから64ビットへの変更の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

C.7.3 ASMとの間のデータの移行

自動ストレージ管理(ASM)を利用するため、Recovery Manager(RMAN)を使用してOracle 11gリリース1(11.1)データベースをASMディスク・グループとの間で移行することができます。プライマリ・バックアップおよびリカバリ計画にRMANを使用していない場合でも、この移行はRMANを使用して実行できます。


関連項目:

データベースの移行の詳細は、『Oracle Databaseストレージ管理者ガイド』の、RMANを使用したASMデータの移行の実行に関する章を参照してください。