1.

Oracle Database 環境構築完全ガイド (23ai Free/Cloud/Docker)

編集
この記事の要点
  • 無料で試すなら Oracle Database 23ai Free(旧 XE)または Oracle Cloud Free Tier
  • Docker: container-registry.oracle.com/database/free イメージが最も手軽
  • クライアント: SQL*Plus(CLI) / SQL Developer(GUI) / VS Code 拡張
  • 接続設定: tnsnames.ora / listener.oralsnrctl status でリスナー確認
  • マルチテナント: CDB(コンテナ DB)+ PDB(プラガブル DB)が 23ai 以降の標準構成

Oracle Database のエディション

エディション価格用途制限
23ai Free(旧 XE)無料学習・小規模本番CPU 2、メモリ 2GB、ユーザーデータ 12GB
Standard Edition 2 (SE2)有償中規模本番RAC ノード 2、CPU 16
Enterprise Edition (EE)有償大規模・基幹制限なし、オプション課金
Cloud Free Tier (ATP/ADW)無料クラウドお試し2 OCPU × 20GB ストレージ Always Free

最速セットアップ: Docker で 23ai Free

# Oracle Container Registry にログイン(無料アカウント必要)
docker login container-registry.oracle.com

# Pull
docker pull container-registry.oracle.com/database/free:latest

# 起動(SYS パスワードは初回コンテナログから取得 or 環境変数で指定)
docker run -d --name oracle-free \
  -p 1521:1521 \
  -e ORACLE_PWD=Oracle123 \
  -e ORACLE_CHARACTERSET=AL32UTF8 \
  -v oracle-data:/opt/oracle/oradata \
  container-registry.oracle.com/database/free:latest

# 起動完了まで数分。ログで確認
docker logs -f oracle-free | grep -i "DATABASE IS READY"

# 接続
docker exec -it oracle-free sqlplus sys/Oracle123@FREE as sysdba
# PDB へ接続
docker exec -it oracle-free sqlplus system/Oracle123@FREEPDB1

Linux にインストール

Oracle Linux + RPM(最も公式に近い)

# Oracle Linux 8/9 想定。EPEL と Preinstall RPM を入れる
sudo dnf install -y oracle-database-preinstall-23ai

# 公式 RPM をダウンロード(公式サイトから事前取得)
sudo dnf install -y ./oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

# DB 構成(パスワード入力プロンプトあり)
sudo /etc/init.d/oracle-free-23ai configure

# 環境変数(.bash_profile に追記)
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export ORACLE_SID=FREE
export PATH=$ORACLE_HOME/bin:$PATH

# 起動・停止
sudo systemctl start oracle-free-23ai
sudo systemctl stop oracle-free-23ai
sudo systemctl status oracle-free-23ai

Ubuntu でインストール

Ubuntu は公式 RPM が無いため、Docker で立てるのが推奨です。どうしてもバイナリで入れたい場合は alien で RPM 変換しますが、サポート対象外になります。

Windows にインストール

  1. Oracle 公式サイトから Oracle Database 23ai Free for Windows をダウンロード
  2. ZIP を展開して setup.exe を管理者で実行
  3. インストール中に SYS / SYSTEM / PDBADMIN パスワードを設定
  4. サービス OracleServiceFREE が自動起動
  5. 環境変数 ORACLE_HOME / ORACLE_SID がインストーラーで設定される
# サービス確認
Get-Service Oracle*

# SQL*Plus で接続
sqlplus sys/your_password@FREE as sysdba
sqlplus system/your_password@FREEPDB1

# リスナー
lsnrctl status
lsnrctl start
lsnrctl stop

CDB と PDB(マルチテナント)

Oracle 12c から導入され 23ai では必須の構成です:

  • CDB (Container Database): 親 DB。CDB$ROOT 内に共通ユーザーやメタデータを持つ
  • PDB (Pluggable Database): 子 DB。アプリ用のスキーマはここに作る。プラグアンプラグで移動可能
-- CDB に SYSDBA で接続
sqlplus / as sysdba

-- 現在のコンテナを確認
SHOW CON_NAME;

-- PDB 一覧
SHOW PDBS;
-- NAME            OPEN MODE
-- PDB$SEED        READ ONLY
-- FREEPDB1        READ WRITE

-- PDB を起動
ALTER PLUGGABLE DATABASE FREEPDB1 OPEN;

-- PDB に切り替え
ALTER SESSION SET CONTAINER = FREEPDB1;

-- アプリ用ユーザー作成(PDB 内で)
CREATE USER appuser IDENTIFIED BY AppPass123;
GRANT CONNECT, RESOURCE TO appuser;
GRANT UNLIMITED TABLESPACE TO appuser;

-- PDB 自動起動を有効化
ALTER PLUGGABLE DATABASE FREEPDB1 SAVE STATE;

tnsnames.ora と listener.ora

Oracle クライアントはネット・サービス名を使って接続します。設定ファイルの場所:

# Linux
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/listener.ora

# Windows
%ORACLE_HOME%\network\admin\tnsnames.ora

# 環境変数で別場所を指す
export TNS_ADMIN=/etc/oracle
# tnsnames.ora — クライアント側
FREE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FREE)
    )
  )

FREEPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FREEPDB1)
    )
  )
# listener.ora — サーバ側
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = FREE)
      (ORACLE_HOME = /opt/oracle/product/23ai/dbhomeFree)
      (SID_NAME = FREE)
    )
  )
# リスナー起動・状態確認
lsnrctl start
lsnrctl status
lsnrctl stop

# 接続テスト(Easy Connect 形式: host:port/service)
sqlplus appuser/AppPass123@localhost:1521/FREEPDB1

# tnsping で名前解決確認
tnsping FREEPDB1

SQL*Plus の基本

-- 接続
sqlplus / as sysdba                              -- OS 認証
sqlplus system/password@FREE                     -- TNS
sqlplus system/password@//localhost:1521/FREE    -- Easy Connect

-- フォーマット改善
SET LINESIZE 200
SET PAGESIZE 50
COLUMN owner FORMAT A20
COLUMN table_name FORMAT A30

-- 自分のテーブル一覧
SELECT table_name FROM user_tables;

-- 接続中ユーザー / DB
SHOW USER;
SHOW CON_NAME;
SELECT name FROM v$database;

-- 終了
EXIT

SQL Developer(GUI クライアント)

Oracle 公式の無料 GUI。Windows / Mac / Linux で動作:

  1. oracle.com から SQL Developer をダウンロード
  2. JDK 同梱版を選ぶと別途 Java 不要
  3. 「新規接続」でホスト名・ポート・サービス名・ユーザー・パスワードを入力
  4. 接続テスト → 成功すれば「接続」

Oracle Cloud Free Tier (Autonomous Database)

クレジットカード登録は必要ですが、Always Free で 2 つの ADB(Autonomous Database)が永続無料:

  1. Oracle Cloud にサインアップ
  2. コンソール → Oracle Database → Autonomous Database → Create
  3. Workload Type: ATP(Transaction Processing)または ADW(Data Warehouse)
  4. Always Free を選択
  5. ADMIN パスワード設定 → 数分でプロビジョニング完了
  6. 「DB 接続」からWallet(mTLS 用 zip)をダウンロード → クライアントに配置

初期化パラメータの確認・変更

-- 全パラメータ
SHOW PARAMETERS;

-- 特定のパラメータ
SHOW PARAMETER sga;
SHOW PARAMETER processes;

-- 動的変更(メモリ上のみ)
ALTER SYSTEM SET processes = 300 SCOPE = MEMORY;

-- spfile に保存(次回起動後も有効)
ALTER SYSTEM SET sga_target = 2G SCOPE = SPFILE;

-- 両方
ALTER SYSTEM SET open_cursors = 500 SCOPE = BOTH;

-- 再起動を伴うパラメータ変更後
SHUTDOWN IMMEDIATE
STARTUP

FAQ

Q: XE と Free の違いは?
A: Oracle 21c までは XE、23ai 以降は Free という名称に変更されました。中身はほぼ同じ無料エディションです。

Q: Docker と直接インストール、どちらが良い?
A: 学習 & 開発用なら Docker が圧倒的に楽。本番運用は Oracle Linux + RPM を推奨。

Q: ORA-12541: TNS:no listener が出る
A: リスナーが停止しています。lsnrctl start で起動してください。Docker の場合はコンテナ起動完了前に接続している可能性も。

Q: PDB に接続できない
A: PDB が MOUNTED 状態の可能性。ALTER PLUGGABLE DATABASE pdbname OPEN; で開いてください。

編集
Post Share
子ページ
  1. Oracle XE
同階層のページ
  1. 環境構築
  2. データベースの構成
  3. SQL
  4. DBオブジェクト
  5. 表領域
  6. 管理ツール
  7. パフォーマンス関連

最近更新/作成されたページ