2021年4月28日水曜日

JA16SJISのデータベースにOracle APEXをインストールする

更新: 2026年2月6日

Oracle DatabaseのキャラクタセットをJA16SJISで作成し、Oracle APEXをインストールします。AL32UTF8のデータベースと異なるところはなく、同じようにインストールできます。

作業には、以下の記事にそって作成したARM版のVirtualBoxの仮想マシンを使用しています。Oracle Database 19c Enterprise Editionがインストールされています。SIDがORCL、PDBとしてORCLPDB1が作成済みで、Oracle APEX 24.2およびORDS 25.4が構成されています。

VirtualBoxの仮想マシンにOracle Database 19c/Oracle AI Database 26ai Enterprise Editionをインストールする

確認のためにJA16SJISのデータベースを用意しないといけないので、その作成から始めます。

手順に従って仮想マシンを構成していると、GUIが起動しない様になっています。DBCAを使ってJA16SJISのデータベースを作成したいので、GUIを起動します。また、ORDSが自動起動になっているため、それを停止します。その後、ユーザーoracleに切り替え、作成済みのデータベースORCLを起動します。SIDがORCLのデータベースのキャラクタセットはAL32UTF8です。

rootユーザーでSSH接続します。

ssh -p 2223 root@localhost

% ssh -p 2223 root@localhost           

The authenticity of host '[localhost]:2223 ([127.0.0.1]:2223)' can't be established.

ED25519 key fingerprint is SHA256:DpJo0wmY8oMQu0z70uCy3fCJGrJgQDQZPXqYoTWVk98.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '[localhost]:2223' (ED25519) to the list of known hosts.

root@localhost's password: 

Web console: https://localhost:9090/ or https://10.0.2.15:9090/


Last login: Thu Feb  5 19:31:30 2026 from 10.0.2.2

[root@localhost ~]# 

GUIを起動します。

systemctl isolate graphical.target

[root@localhost ~]# systemctl isolate graphical.target

[root@localhost ~]# 

ORDSを停止します。

systemctl stop ords

[root@localhost ~]# systemctl stop ords

[root@localhost ~]# 


ユーザーoracleに切り替え、TNSリスナーとデータベースを起動します。

su - oracle
export NLS_LANG=American_America.AL32UTF8
. oraenv
ORACLE_SID = [oracle] ? ORCL
The Oracle base has been set to /opt/oracle
lsnrctl start
sqlplus / as sysdba
startup
show pdbs
exit

[root@localhost ~]# su - oracle

最終ログイン: 2026/02/04 (水) 14:47:45 JST日時 pts/0

[oracle@localhost ~]$ export NLS_LANG=American_America.AL32UTF8

[oracle@localhost ~]$ . oraenv

ORACLE_SID = [oracle] ? ORCL

The Oracle base has been set to /opt/oracle

[oracle@localhost ~]$ lsnrctl start


LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 06-FEB-2026 12:06:55


Copyright (c) 1991, 2023, Oracle.  All rights reserved.


Starting /opt/oracle/product/19c/dbhome/bin/tnslsnr: please wait...


TNSLSNR for Linux: Version 19.0.0.0.0 - Production

System parameter file is /opt/oracle/product/19c/dbhome/network/admin/listener.ora

Log messages written to /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production

Start Date                06-FEB-2026 12:06:56

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /opt/oracle/product/19c/dbhome/network/admin/listener.ora

Listener Log File         /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

The listener supports no services

The command completed successfully

[oracle@localhost ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 6 12:07:03 2026

Version 19.19.0.0.0


Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> startup

ORACLE instance started.


Total System Global Area 4664063784 bytes

Fixed Size     9172776 bytes

Variable Size   855638016 bytes

Database Buffers 3791650816 bytes

Redo Buffers     7602176 bytes

Database mounted.

Database opened.

SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 ORCLPDB1   READ WRITE NO

SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0

[oracle@localhost ~]$ 

コンソールからユーザーoracleでサインインします。


JA16SJISのPDBを作成します。JA16SJISのPDBだけを作成することはできないため、CDBを含めて新規にデータベースを作成します。

アクティビティ
より端末を開き、DBCAを起動します。

. oraenv
ORACLE_SID = [oracle] ? ORCL
The Oracle base has been set to /opt/oracle
dbca


データベースの作成を選んで、データベースの作成を開始します。

次へ進みます。


作成済みのデータベースORCLはOracle Managed Filesで構成されていないため、作成するJA16SJISのデータベースもOracle Managed Filesで構成しません。

標準構成ではOracle Managed Filesになるため、ここでは拡張構成を選びます。

次へ進みます。


データベース・タイプOracle単一インスタンス・データベースです。テンプレート汎用またはトランザクション処理を選択します。

次へ進みます。


グローバル・データベース名SIDともにORCLSJISとします。PDB名ORCLSJISPDB1とします。それ以外はデフォルトの設定のまま、標準的なCDB構成でPDBを1つ作成します。

次へ進みます。


データベース記憶域属性に次を使用、を選んで、データベース・ファイルの位置(デフォルトのまま)を指定します。Oracle Managed Filesは使用しません。OMFを使うか使わないかで、PDBをアンプラグ、プラグするコマンドが変わります。

次へ進みます。


データベースを作成する目的はPDBの作成だけなので、高速リカバリ領域の指定アーカイブ有効化ともに、チェックを外します。

次へ進みます。


既存のリスナーをチェックします。

次へ進みます。


Oracle Database Vaultの構成、および、Oracle Label Securityの構成は行いません。

チェックは入れずに、次へ進みます。


構成オプションの指定の画面からキャラクタ・セットのタブを開き、データベース文字セットとしてJA16SJIS - Shift-JIS16ビット日本語を選択します。

PDBを作成するだけでデータベースは運用しないため、それ以外はデフォルトのままとします。

次へ進みます。


Enterprise Manager Database Expressの構成は行いません。

チェックを外して、次へ進みます。


すべてのアカウントに同じ管理パスワードを使用を選択し、パスワードを設定します。(もちろん、SYS、SYSTEM、PDBADMINそれぞれにパスワードを設定してもかまいません。)

次へ進みます。


複雑さが足りないパスワードの場合、警告が表示されます。

そのまま進む場合は、はいをクリックします。


データベースの作成チェックを入れます。

次へ進みます。


サマリーが表示されます。終了をクリックすると、データベースの作成が開始します。


進行状況が表示されます。


データベースが作成されたら、閉じるをクリックして、dbcaを閉じます。


GUIのコンソール作業には制約があるため、sshで接続しているターミナルで作業します。

作成したデータベースに接続し、PDBをアンプラグします。名前がORCLSJISPDB1のPDBをクローズした後、アンプラグします。アンプラグされたPDBは、/home/oracle/orclsjispdb1.pdbというファイルになっています。

export ORACLE_SID=ORCLSJIS
sqlplus / as sysdba
show pdbs
alter pluggable database orclsjispdb1 close immediate;
show pdbs
alter pluggable database orclsjispdb1 unplug into '/home/oracle/orclsjispdb1.pdb';
exit
ls -l /home/oracle/*.pdb

[oracle@localhost ~]$ export ORACLE_SID=ORCLSJIS

[oracle@localhost ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 6 12:59:59 2026

Version 19.19.0.0.0


Copyright (c) 1982, 2023, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 ORCLSJISPDB1   READ WRITE NO

SQL> alter pluggable database orclsjispdb1 close immediate;


Pluggable database altered.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED   READ ONLY  NO

 3 ORCLSJISPDB1    MOUNTED

SQL> alter pluggable database orclsjispdb1 unplug into '/home/oracle/orclsjispdb1.pdb';


Pluggable database altered.


SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0

[oracle@localhost ~]$ ls -l /home/oracle/*.pdb

-rw-r--r--. 1 oracle oinstall 90655944  2月  6 13:00 /home/oracle/orclsjispdb1.pdb

[oracle@localhost ~]$ 


AL32UTF8で作成されているデータベースORCLに、JA16SJISで作成したPDBをプラグします。AL32UTF8で作成したデータベースにあるPDB - ORCLPDB1を削除し、JA16SJISのPDBをORCLPDB1としてプラグします。

export ORACLE_SID=ORCL
sqlplus / as sysdba
show pdbs
alter pluggable database orclpdb1 close immediate;
alter pluggable database orclpdb1 unplug into '/home/oracle/orclpdb1.pdb';
drop pluggable database orclpdb1 including datafiles;
show pdbs
create pluggable database orclpdb1 using '/home/oracle/orclsjispdb1.pdb' file_name_convert=('/home/oracle','/opt/oracle/oradata/ORCL/ORCLPDB1');
!ls /opt/oracle/oradata/ORCL/ORCLPDB1
alter pluggable database orclpdb1 open read write;
show pdbs
alter pluggable database orclpdb1 save state;
exit

[oracle@localhost ~]$ export ORACLE_SID=ORCL

[oracle@localhost ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 6 13:10:21 2026

Version 19.19.0.0.0


Copyright (c) 1982, 2023, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 ORCLPDB1   READ WRITE NO

SQL> alter pluggable database orclpdb1 close immediate;


Pluggable database altered.


SQL> alter pluggable database orclpdb1 unplug into '/home/oracle/orclpdb1.pdb';


Pluggable database altered.


SQL> drop pluggable database orclpdb1 including datafiles;


Pluggable database dropped.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

SQL> create pluggable database orclpdb1 using '/home/oracle/orclsjispdb1.pdb' file_name_convert=('/home/oracle','/opt/oracle/oradata/ORCL/ORCLPDB1');


Pluggable database created.


SQL> !ls /opt/oracle/oradata/ORCL/ORCLPDB1

sysaux01.dbf  system01.dbf  temp01.dbf undotbs01.dbf  users01.dbf


SQL> alter pluggable database orclpdb1 open read write;


Pluggable database altered.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

4 ORCLPDB1   READ WRITE NO

SQL> alter pluggable database orclpdb1 save state;


Pluggable database altered.


SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0

[oracle@localhost ~]$ 


以上でAL32UTF8のPDBがJA16SJISのPDBに入れ替わりました。

PDBにはOracle APEXおよびORDSが構成されていません。

Oracle APEXについては、以下の記事にそってインストールを実施します。/home/oracle/apexにAPEXのメディアは展開済みです。入れ替わったのはPDBだけなので、手順にあるsqlplusによる作業に限り実施します。

Oracle APEXの環境作成(5) - APEXのインストール
https://apexugj.blogspot.com/2022/11/building-oracle-apex-environment-05-apex.html

NLS_LANGは必ずAmerican_America.AL32UTF8を設定します。APEXのメディアがAL32UTF8でエンコードされているためです。NLS_LANGさえ適切に設定されていれば、後はSQL*Netのライブラリがデータベースのキャラクタ・セットに合わせてエンコーディングを変換してくれます。

[oracle@localhost ~]$ export NLS_LANG=American_America.AL32UTF8

[oracle@localhost ~]$ export ORACLE_SID=ORCL

[oracle@localhost ~]$ cd /home/oracle/apex


[oracle@localhost apex]$ sqlplus sys/******@localhost/orclpdb1 as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Fri Feb 6 13:21:18 2026

Version 19.19.0.0.0


Copyright (c) 1982, 2023, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0


SQL> @apexins SYSAUX SYSAUX TEMP /i/24.2.0/

...set_appun.sql


PL/SQL procedure successfully completed.


[中略]


SYS> @load_trans JAPANESE


[中略]


SYS> @apxchpwd

...set_appun.sql

================================================================================

This script can be used to change the password of an Oracle APEX

instance administrator. If the user does not yet exist, a user record will be

created.

================================================================================

Enter the administrator's username [ADMIN] 

User "ADMIN" does not yet exist and will be created.

Enter ADMIN's email [ADMIN] 

Enter ADMIN's password [] *********

Created instance administrator ADMIN.


SYS> set feedback on

SYS> alter user apex_public_user no authentication account unlock;


User altered.


SYS> begin

    dbms_network_acl_admin.append_host_ace(

        host => '*',

        ace => xs$ace_type(

            privilege_list => xs$name_list('connect'),

            principal_name => 'APEX_240200',

            principal_type => xs_acl.ptype_db

        )

     );

     commit;

end;

/  2    3    4    5    6    7    8    9   10   11   12  


PL/SQL procedure successfully completed.


SYS> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.19.0.0.0

[oracle@localhost apex]$ 


ORDSが使用するデータベース・オブジェクトを、PDBにインストールします。ords installコマンドを実行しますが、ORDS自体は構成済みであるため、データベース・オブジェクトのインストールだけが実施されます。

cd /etc/ords/config
ords --config /etc/ords/config install

[oracle@localhost apex]$ cd /etc/ords/config

[oracle@localhost config]$ ords --config /etc/ords/config install

OpenJDK 64-Bit Server VM warning: Unable to get SVE vector length on this system. Disabling SVE. Specify -XX:UseSVE=0 to shun this warning.


ORDS: 金 2月 06 04:29:50 2026のリリース25.4 本番


Copyright (c) 2010, 2026, Oracle.


構成:

  /etc/ords/config


Oracle REST Data Services - 対話型のインストール


  番号を入力して、データベース・プールを選択してORDSをアップグレードするか、追加のデータベース・プールを作成します

    [1] default      jdbc:oracle:thin:@//localhost:1521/orclpdb1

    [C] 追加のデータベース・プールを作成します

  Choose [1]: 

  管理者権限を持つデータベース・ユーザー名を指定します。

    管理者ユーザー名を入力してください: sys

  SYS AS SYSDBAのデータベース・パスワードを入力してください: *********


情報の取得中.

2026-02-06T04:30:15.967Z INFO        ログ・ファイルはデフォルトで、/etc/ords/config/logs/にある現在の作業ディレクトリになります

2026-02-06T04:30:16.003Z INFO        Oracle REST Data Servicesバージョン25.4.0.r3641739をORCLPDB1にインストールしています

2026-02-06T04:30:16.567Z INFO        ... データベース前提条件を確認しました

2026-02-06T04:30:16.698Z INFO        ... Oracle REST Data Servicesプロキシ・ユーザーを作成しました

2026-02-06T04:30:16.850Z INFO        ... Oracle REST Data Servicesスキーマを作成しました

2026-02-06T04:30:17.002Z INFO        ... Oracle REST Data Servicesに権限を付与しました

2026-02-06T04:30:17.928Z INFO        ... Oracle REST Data Servicesデータベース・オブジェクトを作成しました

2026-02-06T04:30:22.368Z INFO        Oracle REST Data Servicesバージョン25.4.0.r3641739のインストールが完了しました。経過時間: 00:00:06.348 


2026-02-06T04:30:22.369Z INFO        ログ・ファイルが/etc/ords/config/logs/ords_install_2026-02-06_043015_96771.logに書き込まれました

[oracle@localhost config]$ 


rootユーザーに戻りORDSを起動します。

exit
systemctl start ords

[oracle@localhost config]$ exit

ログアウト

[root@localhost ~]# systemctl start ords

[root@localhost ~]# 


APEXの管理サービスを開きます。ユーザー名とパスワードは、apxchpwd.sqlを実行して設定しています。



ワークスペースの作成を案内されます。動作確認を実施するため、ワークスペースを作成します。ワークスペースの作成手順は割愛します。


作成したワークスペースにサインインします。



サンプル・データセットEMP/DEPTからアプリケーションを作成します。

試していませんが、データベースのキャラクタ・セットがJA16SJISなので、データセットの言語としてEnglishとJapanese以外を選んだら、エラーが発生するはずです。


サンプル・データセットのインストールから、アプリケーションの作成を実行します。


アプリケーションの動作を確認できます。


ヘルプの情報から、データベースのキャラクタ・セットを確認できます。


一番下にNLS_CHARCTERSETの情報が含まれています。


以上で確認作業は完了です。

確認作業を完了すればJA16SJISのデータベースは不要です。GUIのコンソールでdbcaを起動し、データベースの削除を実行します。

次へ進みます。


削除するデータベースとしてORCLSJISを選択します。SYSのパスワードを指定し、次へ進みます。


Enterprise Manager (EM) Cloud Controlからの登録解除は不要なので、そのままにして次へ進みます。


サマリーが表示されます。終了をクリックします。


確認を求められるので、はいをクリックします。データベースの削除が開始します。


後は進行状況ページが表示されます。


削除が完了したら、閉じるをクリックして、dbcaを終了します。


以上でJA16SJISのデータベースにOracle APEXをインストールする作業は完了です。