AlmaLinuxでOracle DB 19cを使ってみる(自動起動編)SELinuxを無効化状態

スポンサーリンク

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
   : (省略)