こんにちは、テクニカルサポート課の 佐藤 光晃です。
先日、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 社ドキュメントに記載されております。
今回の検証環境は 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 をインストールする手段が記載されています。
本検証環境は 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 の方はインストールしないといけないようです。
上記 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 になりました。