DockerでOracle Database 23c FreeをセットアップしMAX_STRING_SIZEを拡張する手順
はじめに
Oracle Database 23ai FreeをDocker環境でセットアップし、拡張文字列サイズ(MAX_STRING_SIZE=EXTENDED)の設定とPDB操作を行う手順を解説します。開発環境構築時の参考にしてください。
環境準備
ディレクトリ作成
データ永続化用のディレクトリを作成(権限設定は開発環境用):
bash
mkdir -p /u01/data/free/
chmod 777 /u01/data/free/ # 本番環境では適切な権限設定を推奨
Dockerコンテナ起動
Oracle Database 23c Freeのコンテナを起動:
bash
docker run -d --name oracle-db \
-p 1521:1521 \
-e ORACLE_PDB=FREEPDB1 \
-e ORACLE_PWD=<任意のパスワード> \
-v /u01/data/free/:/opt/oracle/oradata \
container-registry.oracle.com/database/free:23.7.0.0-amd64
データベース設定変更
コンテナ内でSQL*Plus起動
bash
docker exec -it oracle-db bash
sqlplus / as sysdba
PDB操作と文字列サイズ拡張
sql
-- PDB状態確認
SHOW PDBS;
-- PDBをアップグレードモードで再オープン
ALTER PLUGGABLE DATABASE FREEPDB1 CLOSE;
ALTER PLUGGABLE DATABASE FREEPDB1 OPEN UPGRADE;
-- コンテナ切り替え
ALTER SESSION SET CONTAINER=FREEPDB1;
-- 文字列サイズ拡張設定
ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;
-- 変更適用スクリプト実行
@?/rdbms/admin/utl32k.sql
-- 通常モードで再起動
ALTER PLUGGABLE DATABASE FREEPDB1 CLOSE;
ALTER PLUGGABLE DATABASE FREEPDB1 OPEN;
設定検証
sql
-- 拡張文字列サイズでのテーブル作成テスト
CREATE TABLE large_text_table (
large_text_column VARCHAR2(20000)
);
DROP TABLE large_text_table;
管理者ユーザー作成
sql
-- DBA権限付与
CREATE USER admin IDENTIFIED BY <パスワード>;
GRANT DBA TO admin;
GRANT EXECUTE ON CTX_DDL TO admin; -- Text検索機能利用の場合
注意事項
- データ永続化のためボリュームマウントを実施
MAX_STRING_SIZE
変更はデータベース作成直後のみ可能- 本番環境では権限設定を見直し(777は開発用)
- パスワードは強固なものを設定
まとめ
Dockerを使ったOracle Databaseのセットアップと重要な設定変更の流れを解説しました。開発環境構築の参考になれば幸いです。本番環境ではセキュリティ設定の見直しをお忘れなく!