Oracleのデータベースには、無償のExpress Editionがあります。
以下の制限がありますが、ISVが自分のパッケージに小さなOracle DBをBundleさせたい場合など小規模のデータベースで良ければ十分に使えると思います。
https://www.oracle.com/jp/database/technologies/appdev/xe.html
リソース:
最大12GBのユーザー・データ
最大2GBのデータベースRAM
最大2つのCPUスレッド
最大3つのプラガブル・データベース
#Oracle Database 18c Express Editionのインストールと初期データベース構築
試しに、以下の手順に沿ってExpress Databaseをインストール・構築しました。
https://docs.oracle.com/cd/E96517_01/xeinl/
Oracle Cloud Infrastructureで任意のCompartmentにVM.Standard2.2のComputeインスタンスを1つ作成。
そこにExpress Editionをインストールしました。
1.rootユーザにスイッチ
[opc@instance-20210423-1501 ~]$ sudo -s
2.プリインストールパッケージをダウンロード・インストール
[root@instance-20210423-1501 opc]# curl -o oracle-database-preinstall-18c-1.0-1.el6.x86_64.rpm
[root@instance-20210423-1501 opc]# yum -y localinstall oracle-database-preinstall-18c-1.0-1.el6.x86_
64.rpm
3.Oracle Technology Networkから、Oracle Database RPMをダウンロードします。
https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
4.ダウンロードしたRPMをインストールします。
[root@instance-20210423-1501 ~]# yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm
5.サービス構成スクリプトを実行して、データベースを構築します。
このコマンドを実行すると、oracleユーザの作成からDB内のsys、system、pdbadminユーザを作成してくれます。
[root@instance-20210423-1501 tmp]# /etc/init.d/oracle-xe-18c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
Enter SYS user password:
************
Enter SYSTEM user password:
************
Enter PDBADMIN User Password:
*********
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
31% complete
34% complete
38% complete
41% complete
43% complete
Completing Database Creation
47% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/XE.
Database Information:
Global Database Name:XE
System Identifier(SID):XE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
Connect to Oracle Database using one of the connect strings:
Pluggable database: instance-20210423-1501/XEPDB1
Multitenant container database: instance-20210423-1501
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
[root@instance-20210423-1501 tmp]#
6.oracleユーザにスイッチし、環境変数をセットしてリスナーの実行状況の確認やsqlplusの実行が可能か確認します。
[oracle@instance-20210423-1501 ~]$ . oraenv
ORACLE_SID = [oracle] ? XE
The Oracle base has been set to /opt/oracle
[oracle@instance-20210423-1501 ~]$ echo $ORACLE_HOME
/opt/oracle/product/18c/dbhomeXE
[oracle@instance-20210423-1501 ~]$ which lsnrctl
/opt/oracle/product/18c/dbhomeXE/bin/lsnrctl
[oracle@instance-20210423-1501 ~]$ lsnrctl status
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 23-APR-2021 11:45:47
Copyright (c) 1991, 2018, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=instance-20210423-1501.subnet04231504.vcn04231504.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date 23-APR-2021 11:32:20
Uptime 0 days 0 hr. 13 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/instance-20210423-1501/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hogehoge.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=127.0.0.1)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "c0a3464253cb487ae0534c00000ae93f" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "xepdb1" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@instance-20210423-1501 ~]$
[oracle@instance-20210423-1501 ~]$ sqlplus /nolog
SQL*Plus: Release 18.0.0.0.0 - Production on Fri Apr 23 11:46:37 2021
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
------------- ----------
PDB$SEED READ ONLY
XEPDB1 READ WRITE
これでPDBを1つ搭載したデータベースができました。
#PDB最大数制限抵触確認
ここで、PDBが最大3つまでということを確認しようと思い、以下のような構成を作ってみます。
PDB名 | 用途 |
---|---|
APPCON | アプリケーション・コンテナ |
CUSTOMER1 | エンドユーザ1用PDB |
CUSTOMER2 | エンドユーザ2用PDB |
サンプルで作ったXEPDB1をDropしておき、以下を実行してアプリケーション・コンテナ、アプリケーションPDBを作成します。
SQL> CREATE PLUGGABLE DATABASE appcon AS APPLICATION CONTAINER ADMIN USER appcon IDENTIFIED BY [password] FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/appcon/');
Pluggable database created.
SQL>alter session set container=APPCON;
Session altered.
SQL> CREATE PLUGGABLE DATABASE customer1 ADMIN USER customer1 IDENTIFIED BY [password] FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/customer1/');
Pluggable database created.
SQL> CREATE PLUGGABLE DATABASE customer2 ADMIN USER customer2 IDENTIFIED BY Kazuma0215 FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/customer2/');
Pluggable database created.
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
---------- ---------------
PDB$SEED READ ONLY
CUSTOMER2 READ WRITE
APPCON READ WRITE
CUSTOMER1 READ WRITE
SQL>
これでアプリケーション・コンテナ1つ、アプリケーションPDB2つの構成ができました。
ここから、アプリケーション・コンテナでさらにもう1つアプリケーションPDBを作成してみます。
SQL> CREATE PLUGGABLE DATABASE customer3 ADMIN USER customer3 IDENTIFIED BY [password] FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/customer3/');
CREATE PLUGGABLE DATABASE customer3 ADMIN USER customer3 IDENTIFIED BY [password] FILE_NAME_CONVERT=('/opt/oracle/oradata/XE/pdbseed/','/opt/oracle/oradata/XE/customer3/')
*
ERROR at line 1:
ORA-65010: maximum number of pluggable databases created
SQL>
ORA-65010が出力され、PDB制限数に抵触してCreateできませんでした。