| Oracle Database管理者リファレンス 11gリリース1(11.1) for Linux and UNIX-Based Operating Systems E05786-05 |
|
![]() 戻る |
![]() 次へ |
この付録では、LinuxシステムでOracle Databaseを管理する方法について説明します。次の項目について説明します。
|
注意: この項の内容は、Linux x86にのみ適用されます。 |
Oracle Databaseでは、データベース・バッファ・キャッシュとして、4GBを超えるメモリーを割り当てて使用できます。この項では、Linux x86システムの拡張バッファ・キャッシュ機能の制限事項と要件について説明します。
|
関連項目: 拡張バッファ・キャッシュ機能の詳細は、『Oracle Database概要』を参照してください。 |
拡張バッファ・キャッシュ機能を使用するには、データベース・バッファ・キャッシュに使用するメモリー量以上のサイズのメモリー内ファイル・システムを/dev/shmマウント・ポイントに作成します。たとえば、8GBのファイル・システムを/dev/shmマウント・ポイントに作成するには、次の手順を実行します。
rootユーザーで次のコマンドを実行します。
# mount -t tmpfs shmfs -o size=8g /dev/shm
システムの再起動時にメモリー内ファイル・システムが確実にマウントされるようにするには、/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パラメータを使用してデータベース・キャッシュ・サイズを指定する必要があります。
拡張バッファ・キャッシュ機能が有効になっている間は、次の動的キャッシュ・パラメータを使用しないでください。
DB_CACHE_SIZE
DB_2K_CACHE_SIZE
DB_4K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
拡張バッファ・キャッシュ機能には、次の制限事項が適用されます。
作成または使用できる表領域はデフォルト・ブロック・サイズの表領域のみです。DB_BLOCK_SIZEパラメータで指定されたブロック・サイズのみを使用した表領域を作成できます。
インスタンスの実行中はバッファ・キャッシュのサイズを変更できません。
|
関連項目: CREATE TABLESPACEコマンドで使用するデフォルト・ブロック・サイズの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
注意: デフォルトのVLMウィンドウ・サイズは512MBです。このメモリー・サイズは、プロセスのアドレス空間に割り当てられます。この値を増減させるには、環境変数VLM_WINDOW_SIZEをバイト単位の新しいサイズに設定します。たとえば、VLM_WINDOW_SIZEを256MBに設定するには、次のコマンドを実行します。
$ export VLM_WINDOW_SIZE=268435456 環境変数 |
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)に設定します。
|
注意: この項の内容は、Linux x86にのみ適用されます。 |
Linuxのディストリビューションに応じて、次のいずれかの項の説明を適用してSGAアドレス空間を増やします。
SUSE Linux Enterprise Server 10
SUSE Linux Enterprise Server 10でSGAアドレス空間を増やすには、次の手順を実行します。
oracleユーザーでログインします。
$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アドレス空間は小さくなる場合があります。 |
次のコマンドを実行し、oracleユーザーのシェル・プロセスのプロセスIDを確認します。
$ echo $$
戻される数値はプロセスIDです。
次のコマンドを実行し、ユーザーをrootに切り替えます。
$ sudo sh
次のコマンドを実行し、oracleユーザーのシェル・プロセスのmapped_base設定を変更します。pidは、手順3で識別したプロセスIDです。
# echo 268435456 > /proc/pid/mapped_base
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アドレス空間を増やすには、次の手順を実行します。
oracleユーザーでログインします。
$ORACLE_HOME/rdbms/libディレクトリで、次のコマンドを実行します。
$ genksms -s 0x15000000 > ksms.s $ make -f ins_rdbms.mk ksms.o $ make -f ins_rdbms.mk ioracle
Oracle Databaseを起動します。
|
注意: Linuxでは、デフォルトにより、自動ストレージ管理で非同期入出力が使用されます。ネットワーク・ファイル・システムに格納されたデータベース・ファイルでは、非同期入出力はサポートされません。 |
Oracle Databaseでは、カーネルの非同期入出力がサポートされます。この機能は、デフォルトでは無効になっています。
デフォルトでは、パラメータ・ファイルのDISK_ASYNCH_IO初期化パラメータはtrueに設定されています。ファイル・システムのファイルに対して非同期入出力を有効にするには、次の手順を実行します。
すべてのOracle Databaseファイルが、非同期入出力をサポートしているファイル・システム上にあることを確認します。
パラメータ・ファイル内のFILESYSTEMIO_OPTIONS初期化パラメータをASYNCHに設定します。
マルチスレッド同時処理が有効になっている場合、v$osstatビューは、オンライン論理(NUM_LCPUS)および仮想CPU(NUM_VCPUS)に対応した2つの行を追加して報告します。
MEMORY_TARGETまたはMEMORY_MAX_TARGET機能を使用するには、次のカーネル・パラメータを変更する必要がある場合があります。
/dev/shmマウント・ポイントは、SGA_MAX_SIZEの値が設定されていれば、その値以上にするか、MEMORY_TARGETとMEMORY_MAX_TARGETのうちいずれか大きいほうの値以上に設定する必要があります。たとえば、MEMORY_MAX_TARGET=4GBのみが設定されている場合、4GBのシステムを/dev/shmマウント・ポイントに作成するには、次の手順を実行します。
rootユーザーで次のコマンドを実行します。
# mount -t tmpfs shmfs -o size=4g /dev/shm
システムの再起動時にメモリー内ファイル・システムが確実にマウントされるように、/etc/fstabファイルに次のようなエントリを追加します。
# shmfs /dev/shm tmpfs size=4g 0
各Oracleインスタンスのファイル記述子の数は、512*PROCESSESだけ増加します。したがって、ファイル記述子の最大数は、少なくともこの値以上にし、オペレーティング・システムの要件に応じてさらに数を足す必要があります。たとえば、cat /proc/sys/fs/file-maxコマンドで32768が返され、PROCESSESが100である場合、Oracleに対して51200使用可能にするには、rootとしてこの値を65536以上に設定します。次のどちらかのオプションを使用して、file-max記述子の値を設定します。
次のコマンドを実行します。
echo 65536 > /proc/sys/fs/file-max
または
/etc/sysctl.confファイル内で次のエントリを変更し、rootとしてシステムを再起動します。
fs.file-max = 65536
プロセスごとのファイル記述子の数は、512以上である必要があります。たとえば、rootとして次のコマンドを実行します。
bashおよびshの場合
# ulimit -n
cshの場合
# limit descriptors
前のコマンドで200が返される場合、次のコマンドを実行して、プロセッサごとのファイル記述子の上限の値(たとえば、1000)を設定します。
bashおよびshの場合
# sudo sh # ulimit -n 1000
cshの場合
# sudo sh # limit descriptors 1000
LOCK_SGAが有効になっている場合、MEMORY_TARGETおよびMEMORY_MAX_TARGETは使用できません。MEMORY_TARGETおよびMEMORY_MAX_TARGETは、LinuxでHugeページと関連して使用することもできません。
Oracle Database 11gリリース1(11.1) for 32-bit LinuxをOracle Database 11gリリース1(11.1) for 64-bit Linuxに移行するには、次の手順を実行する必要があります。
オンライン・バックアップでは、データベースを停止せずに、データベースのバックアップを取ることができます。これを実行する手順を次に示します。
SYSDBAとしてデータベース・インスタンスに接続します。
SQL> CONNECT / AS SYSDBA;
次のコマンドを実行して、データベースが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
次のコマンドを実行してRMANを起動します。RMANは$ORACLE_HOME/binディレクトリにあります。
RMAN>connect target
32ビットのデータベースとすべてのアーカイブREDOログ・ファイルをバックアップするには、次のコマンドを実行します。
RMAN>backup database plus archivelog delete input;
|
注意: アーカイブREDOログは、データベースのリカバリに非常に重要です。データベースとともにアーカイブREDOログをバックアップすることをお薦めします。次のコマンドを発行することで、アーカイブREDOログを随時バックアップできます。RMAN>backup archivelog all delete input; |
この項では、次の項目について説明します。
ターゲット・コンピュータの制御ファイル、データファイル、REDOログ・ファイルの構造がソース・コンピュータと同じである場合は、次の手順を実行します。
移行処理を開始する前に、データベースのオンライン・バックアップを実行します。詳細は、「RMANを使用したデータベースのオンライン・バックアップ」を参照してください。
Oracle Database 11gリリース1(11.1) for 64-bit Linuxを新しいOracleデータベース・ホームにインストールします。32ビット・コンピュータと同じバージョンのOracleデータベース・ホームを使用することをお薦めします。
|
関連項目: 『Oracle Databaseインストレーション・ガイド for Linux』 |
32ビットLinuxコンピュータから、init.ora、データファイル、制御ファイルおよびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。
init.oraファイルを編集して、次の変更を含めます。
ファイルに含まれるメモリー要件を更新します。
必要に応じて、制御ファイルの場所を編集します。
|
注意: init.oraファイルにリストされた共有プール、Javaプール、sga_targetおよびラージ・プールの値を2倍にすることをお薦めします。 |
SYSDBAとしてデータベース・インスタンスに接続します。
SQL> CONNECT / AS SYSDBA;
後で成功を確認できるように、ログ・ファイルに結果をスプールするためのシステム設定を行います。たとえば、次のように入力します。
SQL> SPOOL /tmp/utlirp.log
64ビットOracleデータベースを起動します。
SQL> STARTUP UPGRADE pfile=init.ora;
|
注意: 32ビットから64ビットへの変更の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。 |
64ビットOracleデータベースで次のコマンドを実行して、すべてのPL/SQLモジュールを無効化します。
SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
64ビットOracleデータベースを停止します。
SQL>shutdown immediate;
64ビットOracleデータベースを起動します。
SQL> STARTUP pfile=init.ora;
すべての既存のPL/SQLモジュールを、64ビットOracleデータベースに必要な形式で再び有効にします。
SQL>$ORACLE_HOME/rdbms/admin/utlrp.sql;
ソース・コンピュータと比較して、ターゲット・コンピュータの制御ファイル、データファイル、REDOログ・ファイルの構造が異なる場合は、次の手順を実行します。
移行処理を開始する前に、データベースのオンライン・バックアップを実行します。詳細は、「RMANを使用したデータベースのオンライン・バックアップ」を参照してください。
Oracle Database 11gリリース1(11.1) for 64-bit Linuxを新しいOracleデータベース・ホームにインストールします。32ビット・コンピュータと同じバージョンのOracleデータベース・ホームを使用することをお薦めします。
|
関連項目: 『Oracle Databaseインストレーション・ガイド for Linux』 |
64ビット・コンピュータのinit.oraファイルを編集して、次の変更を含めます。
ファイルに含まれるメモリー要件を更新します。
init.oraファイルには、32ビットの制御ファイルのパスが記述されています。control_filesパラメータ値を手動で更新して、64ビットの制御ファイルの場所を含める必要があります。
|
注意: init.oraファイルにリストされた共有プール、Javaプール、sga_targetおよびラージ・プールの値を2倍にすることをお薦めします。 |
64ビットのターゲット・コンピュータに含まれるデータファイルの構造が異なる場合は、制御ファイルを再作成するか、64ビット・コンピュータにデータベースをマウントする必要があります。詳細は、「データファイルのパスおよび名前の再調整」を参照してください。
|
注意: 制御ファイルの再作成時にRESETLOGSオプションを使用することは推奨されません。 |
後で成功を確認できるように、ログ・ファイルに結果をスプールするためのシステム設定を行います。たとえば、次のように入力します。
SQL> SPOOL /tmp/utlirp.log
64ビットOracleデータベースで次のコマンドを実行して、すべてのPL/SQLモジュールを無効化します。
SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
ログ・ファイルへのスクリプト結果のスプーリングを無効化します。
SQL> SPOOL OFF;
64ビットOracleデータベースを停止します。
SQL>shutdown immediate;
64ビットOracleデータベースを起動します。
SQL> STARTUP pfile=init.ora;
すべての既存のPL/SQLモジュールを、64ビットOracleデータベースに必要な形式で再び有効にします。
SQL>$ORACLE_HOME/rdbms/admin/utlrp.sql;
データファイルのパスおよび名前の再調整
データファイルの名前およびパスが正しい場所を指すように再調整するには、次のような方法があります。
制御ファイルの再作成
制御ファイルを再作成するには、次の手順を実行します。
次のコマンドを実行して、制御ファイルをトレース・ファイルにバックアップします。トレース・ファイルは、32ビットLinuxコンピュータのdiagnostic_destディレクトリにあります。次のコマンドにより、制御ファイルの再作成に必要なSQLを含むトレース・ファイルが生成されます。
SQL> alter database backup controlfile to trace;
|
注意: 制御ファイルが作成された後、UPGRADEモードでOracleデータベースをオープンしてください。 |
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;
正しい場所を指すようにファイル・パスを再調整する際に使用した方法に基づいて、ソースの32ビットLinuxコンピュータからターゲットの64ビットLinuxコンピュータに必要なファイルをコピーする必要があります。
NORESETLOGSオプション: 32ビットLinuxコンピュータから、init.ora、データファイル、再作成した制御ファイル(control.sql)およびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。
RESETLOGSオプション: 32ビットLinuxコンピュータから、init.ora、データファイルおよび再作成した制御ファイル(control.sql)を、64ビットLinuxコンピュータの対応する場所にコピーします。
SYSDBAとしてデータベース・インスタンスに接続します。
SQL> CONNECT / AS SYSDBA;
Linux 64ビットのOracleデータベース・ホームから次のコマンドを実行して、32ビットから64ビットに変更します。
sql>set echo on sql>@control.sql
64ビット・コンピュータへのデータベースのマウント
64ビット・コンピュータにデータベースをマウントするには、次の手順を実行します。
32ビットLinuxコンピュータから、init.ora、データファイル、制御ファイルおよびREDOログ・ファイルを、64ビットLinuxコンピュータの対応する場所にコピーします。
SYSDBAとしてデータベース・インスタンスに接続します。
SQL> CONNECT / AS SYSDBA;
64ビットOracleデータベースを起動します。
SQL> STARTUP mount pfile=init.ora;
すべての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.
すべての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.
Linux 64ビットのOracleデータベース・ホームから次のコマンドを実行して、32ビットから64ビットに変更します。
sql> ALTER DATABASE OPEN UPGRADE;
|
注意: 32ビットから64ビットへの変更の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。 |
自動ストレージ管理(ASM)を利用するため、Recovery Manager(RMAN)を使用してOracle 11gリリース1(11.1)データベースをASMディスク・グループとの間で移行することができます。プライマリ・バックアップおよびリカバリ計画にRMANを使用していない場合でも、この移行はRMANを使用して実行できます。
|
関連項目: データベースの移行の詳細は、『Oracle Databaseストレージ管理者ガイド』の、RMANを使用したASMデータの移行の実行に関する章を参照してください。 |