自定义oracle启动服务

1、修改ORACLE ORLCPDB1为默认启动

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ sqlplus / as sysdba                                                                                                                                                                                                                                                                                                                                                                        
SQL> show pdbs;
    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB1			  READ WRITE NO
SQL> alter pluggable database ORCLPDB1 open;
SQL> alter pluggable database ORCLPDB1 save state;

2、编写shell脚本

2.0、切换用户

[root@localhost ~]# su - oracle

2.1、oracle启动脚本

[oracle@localhost ~]$ cat start.sh 
#!/bin/bash
sqlplus / as sysdba << EOF
startup;
EOF

2.2、oracle重启脚本

[oracle@localhost ~]$ cat reload.sh 
#!/bin/bash
sqlplus / as sysdba <<EOF
shutdown immediate;
startup;
EOF

2.3、oracle停止脚本

[oracle@localhost ~]$ cat shut.sh 
#!/bin/bash
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF

2.4、分配权限

chmod +x reload.sh shut.sh start.sh

3、添加启动服务

3.1、数据库启动服务器

su - root
cd /usr/lib/systemd/system
[oracle@oracle system]$ vim oracledb.service
[Unit]
Description=OracleDB Start
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/home/oracle/start.sh" >> /tmp/oracledb.log
ExecReload=/usr/bin/su - oracle -c "/home/oracle/relaod.sh" >> /tmp/oracledb.log
ExecStop=/usr/bin/su - oracle -c "/home/oracle/shut.sh" >> /tmp/oracledb.log
PrivateTmp=true
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

3.2、监听服务

[oracle@oracle system]$ vim lnstctl-server.service 
[Unit]
Description=Oracle RDBMS
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/opt/oracle/product/21c/dbhome_1/bin/lsnrctl start >> /tmp/lsnrctl.log"
ExecReload=/usr/bin/su - oracle -c "/opt/oracle/product/21c/dbhome_1/bin/lsnrctl reload >> /tmp/lsnrctl.log"
ExecStop=/usr/bin/su - oracle -c "/opt/oracle/product/21c/dbhome_1/bin/lsnrctl stop >> /tmp/lsnrctl.log"
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target

3.3、启动服务测试

systemctl start lnstctl-server.service
systemctl start oracledb.service
systemctl enable lnstctl-server.service
systemctl enable oracledb.service