CentOS8でOracle Databse19cをインストールし、DBサーバを構築します。
手順
1.OracleDtabaseの用意
2.CentOS83号機にログイン
3.OracleDtabaseのインストール
4.セキュリティ設定
5.動作確認
1.OracleDtabase19cのダウンロード
以下のサイトで、OracleDatabase19cをダウンロードします。
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
Linux x86-64のZIP
ZIPをクリックすると、以下のようにライセンスの確認画面がでます。
お金とかかかるわけではないので、チェックを付けて、Downloadボタンをクリックします。
※ダウンロードするには、oracleのアカウントが必要です。未作成の場合は作成しましょう。

次に、Oracleプロファイルへのサインインをします。
アカウント未作成の場合は、一度作成し、またここに戻ってkきてください。

容量が大きいためダウンロードは時間がかかります。おまんじゅうでも食べて待ちましょう。
ダウンロードが完了したら、インストーラをCentOS3号機に持っていきます。
WinSCPで移動するのが楽でしょう。
WinCSPを起動→「新しいサイト」→以下を入力→「ログイン」
転送プロトコル:FTP
ホスト名:CentOS8 3号機のIPアドレス
ポート番号:21
ユーザ名:root
パスワード:rootのパスワード
※IPとパスワードはご自身の環境のものに置き換えてください。

ログインできたら、/tmpディレクトリに「LINUX.X64_193000_db_home.zip」を移動します。
2.CentOS83号機にログイン
CentOS8 3号機にTera Termでrootでログインします。
3.Gnomeデスクトップのインストール
# Gnomeデスクトップをインストール
[root@CE08PRD103 oracle_db]# dnf -y group install "Server with GUI"
(省略)
完了しました!
# Gnomeデスクトップ起動
[root@CE08PRD103 oracle_db]# startx
VirtualBoxで、コンソール画面から3号機にログインします。画面がGUIになっているはずです。
以下のように入力する。
言語:「日本語」
位置情報サービス:「オフ」
オンラインサービス:「スキップ」

デスクトップ画面が表示されたら、「Activities」→「terminal」

端末が起動したら、TeraTermに戻ります。
###1. Transparent Huge Pagesの無効化
# 設定ファイル編集
# transparent_hugepage=neverを追加
[root@CE08PRD103 ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap"
↓
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap transparent_hugepage=never"
# 設定の有効化
[root@CE08PRD103~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file …
done
# 再起動
[root@CE08PRD103~]# reboot
# 設定の有効化
# transparent_hugepage=neverが設定されていることを確認する
[root@CE08PRD103~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@CE08PRD103~]# cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-193.19.1.el8_2.x86_64 root=/dev/mapper/cl-root ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap transparent_hugepage=never
#2. 必要なパッケージインストール
# インストール済のものがあってもOK。
[root@CE08PRD103 ~]# dnf -y install bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat java-1.8.0-openjdk
# 必要なパッケージインストール2
[root@CE08PRD103 ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
[root@CE08PRD103 ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
#3.
# カーネルパラメータの設定
# catから最後のEOFまつまでまとめてコピーして貼り付け
[root@CE08PRD103 ~]# cat > /etc/sysctl.d/97-oracle.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
# カーネルパラメータ読み込み
[root@CE08PRD103 oracle_db]# sysctl -p /etc/sysctl.d/97-oracle.conf
(省略)
# DB用グループ作成
[root@CE08PRD103 oracle_db]# groupadd -g 54321 oinstall
[root@CE08PRD103 oracle_db]# groupadd -g 54322 dba
[root@CE08PRD103 oracle_db]# groupadd -g 54323 oper
[root@CE08PRD103 oracle_db]# groupadd -g 54324 backupdba
[root@CE08PRD103 oracle_db]# groupadd -g 54325 dgdba
[root@CE08PRD103 oracle_db]# groupadd -g 54326 kmdba
[root@CE08PRD103 oracle_db]# groupadd -g 54327 asmdba
[root@CE08PRD103 oracle_db]# groupadd -g 54328 asmoper
[root@CE08PRD103 oracle_db]# groupadd -g 54329 asmadmin
[root@CE08PRD103 oracle_db]# groupadd -g 54330 racdba
# グループ作成確認
[root@CE08PRD103 oracle_db]# cat /etc/group
(省略)
oinstall:x:54321:
dba:x:54322:
oper:x:54323:
backupdba:x:54324:
dgdba:x:54325:
kmdba:x:54326:
asmdba:x:54327:
asmoper:x:54328:
asmadmin:x:54329:
racdba:x:54330:
# DB用oracleユーザ作成
[root@CE08PRD103 oracle_db]# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
# ユーザ作成確認
[root@CE08PRD103 oracle_db]# cat /etc/passwd
(省略)
oracle:x:54321:54321::/home/oracle:/bin/bash
# oracleユーザのパスワード設定
[root@CE08PRD103 oracle_db]# passwd oracle
ユーザー oracle のパスワードを変更。
新しいパスワード:
(省略)
passwd: すべての認証トークンが正しく更新できました。
# 環境設定
# 以下全行追記
[root@CE08PRD103 oracle_db]# vi /etc/security/limits.d/50-oracle.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
# DB用ディレクトリを作成
[root@CE08PRD103 oracle_db]# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
[root@CE08PRD103 oracle_db]# chown -R oracle:oinstall /u01
[root@CE08PRD103 oracle_db]# chmod -R 755 /u01
# ディレクトリの確認
# u01が作成され、所有者がoracle、グループがoinstall、パーミッションが755であることを確認する。
[root@CE08PRD103 oracle_db]# ll /u01
# oracleユーザの設定
[root@CE08PRD103 ~]$ su - oracle
[oracle@CE08PRD103 ~]$ vi ~/.bash_profile
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export CV_ASSUME_DISTID=RHEL8.2
# 設定の反映
[oracle@CE08PRD103~]$ source /home/oracle/.bash_profile
# インストーラの解凍
[oracle@CE08PRD103 ~]# cd /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@CE08PRD103 dbhome_1]$ unzip /tmp/LINUX.X64_193000_db_home.zip
(省略)
# インストールしたJREは日本語に対応していないため、最初にダウンロードしたjre(jdkの中にある)と入れ替える。
[oracle@CE08PRD103 dbhome_1]$ mv /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre_org
[oracle@CE08PRD103 dbhome_1]$ readlink -e /usr/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-0.el8_2.x86_64/jre
[oracle@CE08PRD103 dbhome_1]$ cp -r /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-0.el8_2.x86_64/jre /u01/app/oracle/product/19.3.0/dbhome_1/jdk/jre
[oracle@CE08PRD103 dbhome_1]$ ll /u01/app/oracle/product/19.3.0/dbhome_1/jdk
4.データベース作成
# データベース作成
# 以下、VirtualBoxのコンソール画面から実施
# ログインユーザは、oracle
[oracle@CE08PRD103 ~]$ startx
[oracle@CE08PRD103 ~]$ su - oracle
[oracle@CE08PRD103 ~]# cd /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@CE08PRD103 dbhome_1]$ ./runInstaller
以下、画面をデスクトップ画面を見ながら実施。
構成オプション:単一インスタンス・データベースを作成および構成します。→「次へ」

システム・クラス:サーバ・クラス→「次へ」

データベースのエディション:Enterprise Edition→「次へ」

インストール場所:そのまま→「次へ」

インベントリの作成:そのまま→「次へ」

構成タイプ:そのまま→「次へ」

データベース識別子:そのまま→「次へ」

構成オプション
メモリーの割り当て:500→「次へ」

データベース識別子:そのまま→「次へ」

管理オプション:そのまま→「次へ」

リカバリ・オプションの指定:そのまま→「次へ」

スキーマ・パスワードの指定:
「すべてのアカウントに同じパスワードを使用」にチェック→「次へ」

権限のあるオペレーティング・システム・グループ:そのまま→「次へ」

rootスクリプトの実行構成:
「構成スクリプトを自動的に実行」をチェック → 「rootユーザーの資格証明を使用」をチェック → パスワード:<rootのパスワード> →「次へ」

前提条件のチェック:「すべて無視」をチェック → 「次へ」

サマリー:そのまま → 「インストール」

データベースのインストールは時間がかかるので、水を飲んで待ちましょう。
※途中で、ファイル「%fileName%が見つかりません」と表示されたら、「続行」を押します。

構成スクリプトの実行の確認が出たら、「はい」を押します。

ステータスが全て「成功」になればOKです。
しばらくすると、次の画面に進みます。

「終了」と表示されればOKです。「閉じる」を押します。

5.セキュリティ設定
以下、Tera Termで実施
# ファイヤーウォールの許可設定
[oracle@CE08PRD103 ~]$ su - root
[root@CE08PRD103 ~]# firewall-cmd --add-port=1521/tcp --permanent
success
[root@CE08PRD103 ~]# firewall-cmd --add-port=5500/tcp --permanent
success
[root@CE08PRD103 ~]# firewall-cmd --reload
success
[root@CE08PRD103 ~]#
# ファイヤーウォールの許可設定確認
# portsに1521/tcpおよび5500/tcpが追加されたことを確認する。
[root@CE08PRD101 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: cockpit dhcpv6-client ftp http ntp ssh
ports: 81/tcp 82/tcp 1521/tcp 5500/tcp
(省略)
6.サーバにOracle Database 19c用のサービス作成
# dbstartおよびdbshutの許可設定
[oracle@CE08PRD103 ~]$ vi /etc/oratab
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N
↓
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y
# サービス用の環境変数設定
[root@CE08PRD103 ~]# vi /etc/sysconfig/oracle.oracledb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_SID=orcl
# リスナー用のサービス作成
[root@CE08PRD103 ~]# vi /usr/lib/systemd/system/oracle@lsnrctl.service
[Unit]
Description=Oracle Net Listener
After=network.targe
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/oracle.oracledb
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop
User=oracle
[Install]
WantedBy=multi-user.target
# Oracle Database19cのサービス作成
[root@CE08PRD103 ~]# vi /usr/lib/systemd/system/oracle@oracledb.service
[Unit]
Description=Oracle Database service
After=network.target lsnrctl.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/oracle.oracledb
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut $ORACLE_HOME
User=oracle
[Install]
WantedBy=multi-user.target
# サービスの登録
[root@CE08PRD103 ~]# systemctl daemon-reload
# サービス起動
[root@CE08PRD103 ~]# systemctl enable --now oracle@lsnrctl oracle@oracledb
Created symlink /etc/systemd/system/multi-user.target.wants/oracle@lsnrctl.service → /usr/lib/systemd/system/oracle@lsnrctl.service.
Created symlink /etc/systemd/system/multi-user.target.wants/oracle@oracledb.service → /usr/lib/systemd/system/oracle@oracledb.service.
7.設定確認
# 1521ポートの確認
[root@CE08PRD103 ~]$ su - oracle
[oracle@CE08PRD103 ~]$ ss -napt | grep 1521
ESTAB 0 0 192.168.0.103:56288 192.168.0.103:1521 users:(("ora_lreg_orcl",pid=13877,fd=13))
LISTEN 0 128 :1521 :* users:(("tnslsnr",pid=10179,fd=8))
ESTAB 0 0 [::ffff:192.168.0.103]:1521 [::ffff:192.168.0.103]:56288 users:(("tnslsnr",pid=10179,fd=15))
TIME-WAIT 0 0 [::ffff:127.0.0.1]:1521 [::ffff:127.0.0.1]:61036
# tnsの確認
[oracle@CE08PRD103 ~]$ tnsping localhost
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-SEP-2020 15:22:22
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
/home/oracle/oracle_db/network/admin/sqlnet.ora
Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
OK (10 msec)
# ポートとSID確認
[oracle@CE08PRD104 ~]$ cat /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration # File:/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = CE08PRD104)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = CE08PRD104)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
# リスナーの確認
[oracle@CE08PRD104 ~]$ cat /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: # /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = CE08PRD104)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
8.動作確認
# SQL Plusでデータベースに接続
[oracle@CE08PRD103 ~]$ sqlplus sys/password as sysdba@192.168.0.103:1521/orcl
# おまじない
SQL> set linesize 200
SQL> column INSTANCE_NAME format a20
SQL> column host_name format a20
# DBの情報確認
SQL> select instance_name, host_name, version, startup_time , status from v$instance;
INSTANCE_NAME HOST_NAME VERSION STARTUP_ STATUS
------------- ----------------- ------------- --------- -------
orcl CE08PRD103 19.0.0.0.0 20-09-15 OPEN
# 接続先DB確認
SQL> show con_name
CON_NAME
-------------
CDB$ROOT
# PDBの確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------ ------------ ------------- ----------
2 PDB$SEED READ ONLY YES
3 ORCLPDB MOUNTED
# PDBの起動
SQL> alter pluggable database all open;
# PDBの確認
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------ ------------ ------------- ----------
2 PDB$SEED READ ONLY YES
3 ORCLPDB READ WRITE
# PDBの自動起動設定
SQL> alter pluggable database all save state;
プラガブル・データベースが変更されました。
# PDBに切り替え
SQL> alter session set container = ORCLPDB;
セッションが変更されました。
# 接続先DB確認
SQL> show con_name
CON_NAME
---------------------------
ORCLPDB
# ユーザ作成
SQL> CREATE USER testuser01
2 IDENTIFIED BY "password"
3 DEFAULT TABLESPACE users
4 TEMPORARY TABLESPACE temp
5 /
ユーザーが作成されました。
# ユーザの確認
SQL> select USERNAME,USER_ID,CREATED from all_users where username = 'TESTUSER01';
# 作成したユーザにDBAロール付与
SQL> GRANT DBA TO testuser01;
権限付与が成功しました。
# 表領域の制限を無制限に設定
SQL> GRANT UNLIMITED TABLESPACE TO testuser01;
権限付与が成功しました。
# 権限の確認
SQL> SELECT * FROM dba_sys_privs where grantee = 'TESTUSER01';
GRANTEE PRIVILEGE ADM COM INH
------------ -------------------- ---- ---- ----
TESTUSER01 UNLIMITED TABLESPACE NO NO NO
SQL> select * from DBA_ROLE_PRIVS where GRANTED_ROLE='DBA';
GRANTEE GRA ADM DEL DEF COM INH
-------------- ------- ------ ------ ------ ----- -------
TESTUSER01 DBA NO NO YES NO NO
SYS DBA YES NO YES YES YES
SYSTEM DBA NO NO YES YES YES
# ログアウト
SQL> exit
# SQL Plusでデータベース(PDB)に接続
[oracle@CE08PRD103 ~]$ sqlplus testuser01/password@192.168.0.104:1521/orclpdb
# テーブル作成
SQL> CREATE TABLE test_table_001
(
NO VARCHAR2(10) NOT NULL,
Name VARCHAR2(50)
);
表が作成されました。
# テストデータ挿入
SQL> INSERT INTO test_table_001
VALUES (
'001',
'太郎'
);
1行が作成されました。
# テストデータ確認
SQL> select * from test_table_001;
NO NAME
----- ----------
001 太郎
9.SQL Developer
次に、ローカルPC(Windows)から、Oracle Database 19cにGUIで接続します。
GUIで接続するのは、SQL Developerを使います。
以下のサイトにアクセスし、SQL Developerをダウンロードします。
https://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html
「Windows 64-bit with JDK 8 included」
※ 「ライセンスに同意する」をクリックする必要があります。
※ Oracleのアカウントが必要です。
ダウンロードが完了したら、zipを解凍します。
解凍後、任意のフォルダに「sqldeveloper」フォルダを移動し、「sqldeveloper.exe」を実行します。

SQL Developerを開いたら、作成したデータベースに接続します。

緑の「接続」を押します。

データベース接続の作成/選択画面で以下を入力します。
Name:任意の名前
ユーザー名:testuser01
ロール:デフォルト
パスワード:<DBのインストール時に設定したパスワード>
ホスト名:<DBサーバのIPアドレス>
ポート:1521
サービス名:orclpdb
「テスト」を押し、左下に「成功」と表示されたら、「接続」を押す。

ログインできたら、以下の順にクリックし、作成したテーブルを確認します。
接続ペイン
CE08PRD103_pdb(ログイン時のName) → 「表」 → 「TEST_TABLE_01」

テーブル定義が開いたら、挿入したデータを確認します。
「データ」を押します。

お疲れさまでした。これで、DBサーバの構築は完了です。
SQL Developerと似たアプリケーションで、A5:SQL Mk-2といアプリケーションがあります。これもなかなか便利です。