2023年4月3日にリリースされた Oracle Database 23c を EC2 にインストールしてみた。

記事タイトルとURLをコピーする

こんにちは、テクニカルサポート課の 佐藤 光晃です。
先日、Oracle 社より Oracle Database 23c 無料版のリリースがありました。
AWS では RDS for Oracle がありますが、RDS for Oracle は本記事執筆時点 (2023年4月13日) では 19c/21c が最新であること、かつ、マルチテナントに制限がある点[1] より、EC2 上で Oracle Database を使用したいというケースが考えられます。
今回はそういったケースと同様に、EC2 検証環境に最新の Oracle Database 23c をインストールしてみたいと思います。 www.oracle.com

[1] RDS for Oracle の機能 - Amazon Relational Database Service

RDS for Oracle でサポートされる機能
・マルチテナント (シングルテナントアーキテクチャのみ)

実行環境について

Oracle Database 23c に必要なスペックは Oracle 社ドキュメントに記載されております。

docs.oracle.com

今回の検証環境は t2.large (8 GB RAM)、ディスク容量 50GB の Red Hat Enterprise Linux release 8.6 (RHEL 8.6) 環境で実施しております。

[ec2-user@oracle ec2-user]$ free (メモリ確認)  
              total        used        free      shared  buff/cache   available  
Mem:        7947340      161572     4880464       18360     2905304     7670664  
Swap:             0           0           0  
[ec2-user@oracle ~]$ df -h (ディスク容量確認)  
Filesystem      Size  Used Avail Use% Mounted on  
/dev/xvda2       50G   1G   49G  2% /  
[ec2-user@oracle ~]$ cat /etc/redhat-release (OS 確認)
Red Hat Enterprise Linux release 8.6 (Ootpa)
[ec2-user@oracle ~]$ hostname
oracle

また、ホスト名は下記リンクを参考に「oracle」に固定しております。

RHEL 7 または CentOS 7 のプライベート EC2 インスタンスに静的ホスト名を割り当てる | AWS re:Post

今回は上記以外の設定は特に何もしておりません。

インストーラーの準備

下記サイトにアクセスしますと、環境に併せて Oracle Database 23c をインストールする手段が記載されています。

www.oracle.com

本検証環境は RHEL 8.6 ですので、下記を実行します。

Red Hat–compatible Linux distribution
・Download oracle-database-preinstall-23c-1.0-1.el8.x86_64.rpm
・Download oracle-database-free-23c-1.0-1.el8.x86_64.rpm
・Run yum -y localinstall oracle-database-free*
・Run /etc/init.d/oracle-free-23c configure

インストール、DB 作成

インストーラーを検証環境に配置し、Get Start の通り実行しましたが、エラーが発生しました。

[ec2-user@oracle ~]$ ls
oracle-database-free-23c-1.0-1.el8.x86_64.rpm
oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm  
[ec2-user@oracle ~]$  
[ec2-user@oracle ~]$ sudo yum -y localinstall oracle-database-free*  
Red Hat Enterprise Linux 8 for x86_64 - AppStre 101 kB/s | 4.5 kB     00:00  
Red Hat Enterprise Linux 8 for x86_64 - BaseOS  102 kB/s | 4.1 kB     00:00  
Red Hat Ansible Engine 2 for RHEL 8 (RPMs) from  98 kB/s | 4.0 kB     00:00  
RHUI Client Configuration Server 8               53 kB/s | 2.0 kB     00:00  
Error:  
 Problem: conflicting requests  
  - nothing provides oracle-database-preinstall-23c needed by oracle-database-free-23c-1.0-1.x86_64  
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

どうやら順番的に先に oracle-database-preinstall-23c の方はインストールしないといけないようです。

docs.oracle.com

上記 Oracle 社ドキュメントを参考に、先に oracle-database-preinstall-23c をインストールします。

[ec2-user@oracle ~]$ sudo yum -y localinstall oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm  
.  
.(出力ログ省略)  
.  
Complete!  

(出力ログが多かったため、内容は省略させていただきますが、oracle-database-preinstall-23c の動作に必要な 45 個の必要なパッケージをインストールしつつ、oracle-database-preinstall-23c がインストールされました。)

[ec2-user@oracle ~]$ rpm -qa oracle-database-preinstall-23c  
oracle-database-preinstall-23c-1.0-0.5.el8.x86_64

次に oracle-database-free-23c-1.0-1.el8.x86_64.rpm のインストールを実行します。

[ec2-user@oracle ~]$ sudo yum -y localinstall oracle-database-free-23c-1.0-1.el8.x86_64.rpm  
Last metadata expiration check: 0:06:11 ago on Thu 13 Apr 2023 07:32:35 AM UTC.  
Dependencies resolved.  
================================================================================  
 Package                       Arch        Version      Repository         Size  
================================================================================  
Installing:  
 oracle-database-free-23c      x86_64      1.0-1        @commandline      1.6 G  
  
Transaction Summary  
================================================================================  
Install  1 Package  
  
Total size: 1.6 G  
Installed size: 5.2 G  
Downloading Packages:  
Running transaction check  
Transaction check succeeded.  
Running transaction test  
Transaction test succeeded.  
Running transaction  
  Preparing        :                                                        1/1  
  Running scriptlet: oracle-database-free-23c-1.0-1.x86_64                  1/1  
  Installing       : oracle-database-free-23c-1.0-1.x86_64                  1/1  
  Running scriptlet: oracle-database-free-23c-1.0-1.x86_64                  1/1  
[INFO] Executing post installation scripts...  
[INFO] Oracle home installed successfully and ready to be configured.  
To configure Oracle Database Free, optionally modify the parameters in '/etc/sysconfig/oracle-free-23c.conf' and then run '/etc/init.d/oracle-free-23c configure' as root.  
  
  Verifying        : oracle-database-free-23c-1.0-1.x86_64                  1/1  
Installed products updated.  
  
Installed:  
  oracle-database-free-23c-1.0-1.x86_64  
  
Complete!

上記インストール後、Oracle Database 管理用ユーザーや、カーネルパラメータの設定が完了してました。

[ec2-user@oracle ~]$ id oracle  
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54330(racdba),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba)  
[ec2-user@oracle ~]$ sysctl -a | grep shmmax  
(一部省略)  
kernel.shmmax = 4398046511104

oracle-database-free-23c インストール時の出力ログと Oracle 社のドキュメントを見ると、次は root で「/etc/init.d/oracle-free-23c configure」を実行しろとの事ですので実行します。

[ec2-user@oracle ~]$ sudo -s  
[root@oracle ec2-user]# /etc/init.d/oracle-free-23c 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 FREE.  
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  
33% complete  
36% complete  
39% complete  
43% complete  
Completing Database Creation  
47% complete  
49% 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/FREE.  
Database Information:  
Global Database Name:FREE  
System Identifier(SID):FREE  
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log" for further details.  
  
Connect to Oracle Database using one of the connect strings:  
     Pluggable database: oracle/FREEPDB1  
     Multitenant container database: oracle  
[root@oracle ec2-user]#

どうやらリスナーと CDB、PDB 作成まで完了したようです。

DB に接続してみる

Linux 上に oracle ユーザーの作成まではされましたが、ec2-user 含め、環境変数までは準備されてないため、oracle ユーザーの .bash_profile に下記記載して読み込みます。

export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree/  
export PATH=${PATH}:${ORACLE_HOME}/bin/
export NLS_LANG=Japanese_Japan.AL32UTF8
export ORACLE_SID=FREE

DB 接続の前に、せっかくリスナー周りも作成されたので設定ファイルを確認してみます。

[oracle@oracle admin]$ cat $ORACLE_HOME/network/admin/listener.ora  
# listener.ora Network Configuration File: /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora  
# Generated by Oracle configuration tools.  
  
DEFAULT_SERVICE_LISTENER = FREE  
  
LISTENER =  
  (DESCRIPTION_LIST =  
    (DESCRIPTION =  
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-10-0-16-250.ap-northeast-1.compute.internal)(PORT = 1521))  
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
    )  
  )  
  
[oracle@oracle admin]$  
[oracle@oracle admin]$ cat $ORACLE_HOME/network/admin/tnsnames.ora  
# tnsnames.ora Network Configuration File: /opt/oracle/product/23c/dbhomeFree/network/admin/tnsnames.ora  
# Generated by Oracle configuration tools.  
  
FREE =  
  (DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal)(PORT = 1521))  
    (CONNECT_DATA =  
      (SERVER = DEDICATED)  
      (SERVICE_NAME = FREE)  
    )  
  )  
  
LISTENER_FREE =  
  (ADDRESS = (PROTOCOL = TCP)(HOST = ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal)(PORT = 1521))  
  
  
[oracle@oracle admin]$  

※IP アドレス部分はすべて xxx-xxx-xxx-xxx でマスクしております。
既に接続の準備が整ってました。今回はリスナーは不要なローカル接続で DB に接続します。

[oracle@oracle ~]$ sqlplus / as sysdba  
  
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 木 4月 13 08:30:35 2023  
Version 23.2.0.0.0  
  
Copyright (c) 1982, 2023, Oracle.  All rights reserved.  
  
  
  
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release  
Version 23.2.0.0.0  
に接続されました。  
SQL> show con_name  
  
CON_NAME  
------------------------------  
CDB$ROOT  
SQL>  
SQL> show pdbs  
  
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED  
---------- ------------------------------ ---------- ----------  
         2 PDB$SEED                       READ ONLY  NO  
         3 FREEPDB1                       READ WRITE NO  
SQL>

無事に接続でき、PDB として FREEPDB1 が作成されている事を確認できました! せっかくなのでもう一個 PDB を作成し、繋いでみたいと思います。

SQL> CREATE PLUGGABLE DATABASE TEST ADMIN USER pdbadmin IDENTIFIED BY oracle123 FILE_NAME_CONVERT = ('/opt/oracle/oradata/FREE/pdbseed/', '/opt/oracle/oradata/TEST/');  
  
プラガブル・データベースが作成されました。  
  
SQL> show pdbs  
  
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED  
---------- ------------------------------ ---------- ----------  
         2 PDB$SEED                       READ ONLY  NO  
         3 FREEPDB1                       READ WRITE NO  
         4 TEST                           MOUNTED  
SQL> 
SQL> alter session set container = TEST;  
  
セッションが変更されました。  
  
SQL> show con_name  
  
CON_NAME  
------------------------------  
TEST  
SQL>  

もう一つ PDB を作成し、繋ぐこともできました。

感想

今回は EC2 インスタンス上の RHEL 8.6 に Oracle Database 23c のインストールを実施してみました。
やってみた感想としては非常に簡単にインストールが実施できるので、新しい機能や初期化パラメータなど、気になる点がある場合には上記の要領で検証環境にインストールしてみるのをお勧めします。

佐藤 光晃 (記事一覧)

マネージドサービス部・テクニカルサポート課

2022年10月にサーバーワークスに入社しました。
前職でもテクニカルサポートに従事しており、情報収集に役立つサービスやツールに興味があります。2024 Japan AWS All Certifications Engineers になりました。