AlmaLinux8.7へOracle Database 19cをインストールして使ってみました。
4回に分けて、記事にしています。
(1)AlmaLinuxでOracle DB 19cを使ってみる(準備編)
(2)AlmaLinuxでOracle DB 19cを使ってみる(インストール編)
(3)AlmaLinuxでOracle DB 19cを使ってみる(DB構築編)
(4)AlmaLinuxでOracle DB 19cを使ってみる(自動起動編)
SELinuxのPermissiveモードに変更
SELinuxを有効にしたくない場合は、SELinuxをPermissiveモードに変更することをお勧めします。
設定変更前の状態
$ getenforce
Enforcing ・・・ SELinuxが有効
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
設定の変更
$ sudo vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive ・・・ 「enforcing」から「permissive」に変更
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
マシンリブート
$ sudo systemctl reboot
設定変更後の確認
$ getenforce
Permissive ・・・ SELinuxが無効(実際は動作しているがログが出力されるのみ)
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
SELinuxのPermissiveによるメッセージの出力先変更
SELinuxのメッセージが「/var/log/message」ファイルに大量に出力されるので、違うファイルへ出力を逃がします。
$ sudo vi /etc/rsyslog.d/selinux.conf
:syslogtag, contains, "setroubleshoot" /var/log/selinux.log ・・・ 出力先を変更
$ rsyslogd -N 1 -f /etc/rsyslog.d/selinux.conf ・・・ 文法チェック
rsyslogd: version 8.2102.0-10.el8, config validation run (level 1), master config /etc/rsyslog.d/selinux.conf
rsyslogd: End of config validation run. Bye.
$ sudo systemctl restart rsyslog
$ sudo systemctl status rsyslog
* rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-04-09 05:22:40 JST; 1min 10s ago
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 9348 (rsyslogd)
Tasks: 3 (limit: 23514)
Memory: 1.1M
CGroup: /system.slice/rsyslog.service
`-9348 /usr/sbin/rsyslogd -n
: (省略)
リスナーとインスタンスの自動起動設定
/etc/oratabの設定変更
OracleDBが提供している「dbstart」と「dbshut」スクリプトを使用して、データベースの起動と停止ができるようにします。
$ sudo cp -a /etc/oratab /etc/BK-oratab.original
$ vi /etc/oratab
:
CDB1:/u01/app/oracle/product/19.3.0/dbhome_1:Y ・・・ 「N」から「Y」に変更
OracleDBの環境変数の設定ファイル作成
$ env | grep ORACLE
ORACLE_SID=CDB1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
$ sudo vi /etc/sysconfig/oracle-database-env ・・・ OracleDBの環境変数を格納
ORACLE_SID=CDB1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
リスナー自動起動の設定ファイル作成
$ sudo vi /etc/systemd/system/oracle-database-lsnrctl.service
[Unit]
Description = Oracle Database Listener
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/oracle-database-env
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
Group=oinstall
[Install]
WantedBy=multi-user.target
$ systemctl status oracle-database-lsnrctl.service
● oracle-database-lsnrctl.service - Oracle Database Listener
Loaded: loaded (/etc/systemd/system/oracle-database-lsnrctl.service; disabled; vendor preset: disabled)
Active: inactive (dead)
インスタンス自動起動の設定ファイル作成
$ sudo vi /etc/systemd/system/oracle-database-instance.service
[Unit]
Description=Oracle Database Instance
After=network.target oracle-database-lsnrctl.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/oracle-database-env
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1
User=oracle
Group=oinstall
[Install]
WantedBy=multi-user.target
$ systemctl status oracle-database-instance.service
● oracle-database-instance.service - Oracle Database Instance
Loaded: loaded (/etc/systemd/system/oracle-database-instance.service; disabled; vendor preset: disabled)
Active: inactive (dead)
systemdへの反映
$ sudo systemctl daemon-reload
systemdによるリスナーとインスタンスの起動確認
$ sudo systemctl start oracle-database-lsnrctl.service ・・・ リスナーの起動
$ systemctl status oracle-database-lsnrctl.service
* oracle-database-lsnrctl.service - Oracle Database Listener
Loaded: loaded (/etc/systemd/system/oracle-database-lsnrctl.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-04-08 21:57:00 JST; 17s ago
Process: 3023 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start (code=exited, status=0/SUCCESS)
Main PID: 3028 (tnslsnr)
Tasks: 2 (limit: 23514)
Memory: 82.3M
CGroup: /system.slice/oracle-database-lsnrctl.service
`-3028 /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr LISTENER -inherit
: (省略)
$ systemctl start oracle-database-instance.service ・・・ インスタンスの起動
$ systemctl status oracle-database-instance.service
* oracle-database-instance.service - Oracle Database Instance
Loaded: loaded (/etc/systemd/system/oracle-database-instance.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-04-08 21:59:17 JST; 1min 32s ago
Process: 6351 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhom>
Tasks: 64 (limit: 23514)
Memory: 2.5G
CGroup: /system.slice/oracle-database-instance.service
|-6481 ora_pmon_CDB1
|-6483 ora_clmn_CDB1
|-6485 ora_psp0_CDB1
|-6487 ora_vktm_CDB1
|-6491 ora_gen0_CDB1
|-6493 ora_mman_CDB1
: (省略)
$ sqlplus sys as sysdba ・・・ 起動できているか確認のため
SQL*Plus: Release 19.0.0.0.0 - Production on 土 4月 8 22:06:53 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
パスワードを入力してください:xxxx
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
systemdによるリスナーとインスタンスの自動起動有効化
$ sudo systemctl enable oracle-database-lsnrctl.service
Created symlink /etc/systemd/system/multi-user.target.wants/oracle-database-lsnrctl.service -> /etc/systemd/system/oracle-database-lsnrctl.service.
$ sudo systemctl enable oracle-database-instance.service
Created symlink /etc/systemd/system/multi-user.target.wants/oracle-database-instance.service -> /etc/systemd/system/oracle-database-instance.service.
systemdによるリスナーとインスタンスの停止動作確認
$ sudo systemctl stop oracle-database-lsnrctl.service
$ sudo systemctl status oracle-database-lsnrctl.service
* oracle-database-lsnrctl.service - Oracle Database Listener
Loaded: loaded (/etc/systemd/system/oracle-database-lsnrctl.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sat 2023-04-08 22:18:17 JST; 13s ago
Process: 4948 ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop (code=exited, status=0/SUCCESS)
Main PID: 3028 (code=killed, signal=TERM)
: (省略)
$ sudo systemctl stop oracle-database-instance.service
$ sudo systemctl status oracle-database-instance.service
* oracle-database-instance.service - Oracle Database Instance
Loaded: loaded (/etc/systemd/system/oracle-database-instance.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sat 2023-04-08 22:45:49 JST; 6s ago
Process: 6967 ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1 (code=exited, status=0/SUCCESS)
Process: 6351 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1 (code=exited, status=0/SUCCESS)
: (省略)
マシンリブート
$ sudo systemctl reboot
systemdによるリスナーとインスタンスの自動起動動作確認
$ sudo systemctl status oracle-database-lsnrctl.service
* oracle-database-lsnrctl.service - Oracle Database Listener
Loaded: loaded (/etc/systemd/system/oracle-database-lsnrctl.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2023-04-09 05:25:55 JST; 1min 14s ago
Process: 1526 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start (code=exited, status=0/SUCCESS)
Main PID: 1557 (tnslsnr)
Tasks: 2 (limit: 23514)
Memory: 37.5M
CGroup: /system.slice/oracle-database-lsnrctl.service
`-1557 /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr LISTENER -inherit
: (省略)
$ sudo systemctl status oracle-database-instance.service
* oracle-database-instance.service - Oracle Database Instance
Loaded: loaded (/etc/systemd/system/oracle-database-instance.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2023-04-09 05:26:23 JST; 49s ago
Process: 1579 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1 (code=exited, status=0/SUCCESS)
Tasks: 75 (limit: 23514)
Memory: 2.0G
CGroup: /system.slice/oracle-database-instance.service
|-2633 ora_pmon_CDB1
|-2644 ora_clmn_CDB1
|-2654 ora_psp0_CDB1
|-2663 ora_vktm_CDB1
|-2670 ora_gen0_CDB1
|-2674 ora_mman_CDB1
: (省略)