通过设置 Systemd unit 实现数据库开机自启。
首先需要修改 /etc/oratab
:
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y
设置为 Y
意味着可以使用 dbstart
脚本来启动数据库。
随后通过使用 dbstart
和 dbshut
脚本测试能否启动数据库:
[oracle@oel7-3 ~]$ $ORACLE_HOME/bin/dbstart $ORACLE_HOME
Processing Database instance "ORCLCDB": log file /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log
[oracle@oel7-3 ~]$ cat /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log
/opt/oracle/product/19c/dbhome_1/bin/dbstart: Starting up database "ORCLCDB"
Thu Jan 9 10:10:37 CST 2025
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 9 10:10:37 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> Connected to an idle instance.
SQL> ORACLE instance started.
Total System Global Area 1660941720 bytes
Fixed Size 9135512 bytes
Variable Size 989855744 bytes
Database Buffers 654311424 bytes
Redo Buffers 7639040 bytes
Database mounted.
Database opened.
SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
/opt/oracle/product/19c/dbhome_1/bin/dbstart: Database instance "ORCLCDB" warm started.
[oracle@oel7-3 ~]$ $ORACLE_HOME/bin/dbshut $ORACLE_HOME
Processing Database instance "ORCLCDB": log file /opt/oracle/product/19c/dbhome_1/rdbms/log/shutdown.log
[oracle@oel7-3 ~]$ cat /opt/oracle/product/19c/dbhome_1/rdbms/log/shutdown.log
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 9 10:11:09 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> Connected.
SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Database instance "ORCLCDB" shut down.
通过日志可以看到数据库实例可以正常的启动和停止,接下来编写 Systemd Unit 文件。
创建 /etc/systemd/system/oracle19c.service
单元文件:
# /etc/systemd/system/oracle19c.service
[Unit]
Description=Oracle 19C
After=syslog.target network.target
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
ExecStart=/opt/oracle/product/19c/dbhome_1/bin/dbstart /opt/oracle/product/19c/dbhome_1
ExecStop=/opt/oracle/product/19c/dbhome_1/bin/dbshut /opt/oracle/product/19c/dbhome_1
[Install]
WantedBy=multi-user.target
修改了 Systemd 单元文件需要 reload:
systemctl daemon-reload
设置为开启自启:
systemctl enable --now oracle19c.service