Oracle の表領域の自動拡張の設定、及び自動拡張時の最大サイズの設定変更を説明します。SYSTEM 表領域の拡張に関して、実際のテストプログラムの実行と共に説明します。ここでは無料のOracle 11g Express Edition (64bit版)を使用しました。
|
(1)Oracle 11g XE (Express Editon) 64bit をインストールします。
(2)初期の表領域の使用容量 / 最大値を確認しておきます。SYSTEM 表領域の使用量は354M、最大サイズは600Mであることが分かります。
SYSTEM 表領域に関しては自動拡張設定で最大600Mまで物理ファイルが自動的に拡張されることが分かります。
(3)sqlplus を実行します。
Oracle 11g Express Edition では sqlplus.exe は以下にフォルダに有ります。
C:\oraclexe\app\oracle\product\11.2.0\server\bin
(4)system/<パスワード>でログインします。
<パスワード>は Oracle インストール時に指定したパスワードです。
(5)データソースを作成します。xe という名前に設定しますが、他の名前でも問題ありません。
(6)テスト用のテーブルを作成します。
SQL> create table testtable
(
test VARCHAR(1024)
);
(7)以下のVBScript サンプルプログラム(test.vbs)を作成し、実行しました。cscript test.vbs で実行が可能です。
無限にレコードを挿入する。プログラムです。
Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Oracle in XE};" & "CONNECTSTRING=XE; UID=system; PWD=<パスワード>"
Do Until false
sql = "INSERT INTO testtable (test) VALUES ('01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789')"
objADO.Execute sql
loop
(8)SYSTEMテーブルが最大値に接近しこれ以上SYSTEMテーブルの拡張が不可能となった場合、以下のエラーでプログラムが停止します。
C:\test2.vbs(6, 2) Microsoft OLE DB Provider for ODBC Drivers: [Oracle][ODBC][Ora]ORA-01653: unable to extend table SYSTEM.TESTTABLE by 1024 in table space SYSTEM
(8)プログラム実行の途中で使用量を確認します。SYSTEMは 530 M + 10 M 使用していることが分かります。(最大は600Mでまだ未到着)
(9)SQLPlusより以下のコマンドで、SYSTEM表領域の自動拡張の最大サイズを 1000Mb に変更します。
ALTER DATABASE DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\SYSTEM.DBF' AUTOEXTEND ON MAXSIZE 1000M;
(10)再度サイズを確認します。 SYSTEMテーブルの最大サイズが 1000M に拡張されていることが分かります。(データベースの再起動などは不要で即時反映されるようです。)