Linux系统安装oracle12C并配置pdb和开机自启动详细教程

发布时间:

今天给大家带来一篇Linux系统下面oracle12C的安装,配置pdb并开机自启动的详细教程,有需要的朋友可以看一看!

安装环境:

系统:Linux CentOS7 64位

Oracle版本:Oracle 12C

一、安装前准备

1、创建运行oracle数据库的系统用户和用户组

[root@bogon ~]# groupadd oinstall
[root@bogon ~]#groupadd dba
[root@bogon ~]# useradd -g oinstall -g dba -m oracle
[root@bogon ~]# passwd oracle
Changing password for user oracle.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@bogon ~]# id oracle
uid=1001(oracle) gid=1002(dba) groups=1002(dba)

2、修改/etc/sysctl.conf文件,输入命令:vi /etc/sysctl.conf ,将下列内容加入该文件。

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

使用/sbin/sysctl -p命令使 sysctl.conf 配置生效。

3、修改操作系统核心参数 输入命令:vi /etc/security/limits.conf,将下列内容加入该文件。

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

4.、修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,将下列内容加入该文件。

session required /lib/security/pam_limits.so
session required pam_limits.so

5、 编辑 /etc/profile ,输入命令:vi /etc/profile,将下列内容加入该文件。

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

export DISPLAY=:0.0
[root@bogon ~]# source /etc/profile
[root@bogon ~]# export DISPLAY=:0.0
[root@bogon ~]# xhost +
access control disabled, clients can connect from any host

6、创建数据库软件目录和数据文件存放目录,注意磁盘空间即可,这里我放到oracle用户下,输入如下命令

[root@bogon ~]# mkdir /home/oracle/app
[root@bogon ~]# mkdir /home/oracle/app/oracle
[root@bogon ~]# mkdir /home/oracle/app/oradata
[root@bogon ~]# mkdir /home/oracle/app/oracle/product

7、更改目录属主为 oracle 用户所有,输入命令:

[root@bogon ~]# chown -R oracle:oinstall /home/oracle/app

8、切换为oracle用户登录

su - oracle

9、配置 oracle 用户环境变量 编辑 bash_profile ,输入命令:vi .bash_profile,添加如下环境变量

export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/12.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
[oracle@bogon ~]$ source .bash_profile 

10、切换为 root 用户,关闭 selinux

su root

# 修改/etc/selinux/config文件 vi /etc/selinux/config

修改SELINUX为disabled,如下:

# 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=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected. 
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

二、软件包依赖

安装oracle之前需要许多软件包依赖,如果可用外网,使用如下命令安装。

yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel compat-libcap1.x86_64 0:1.10-7.el7 

查看这些软件包版本,可使用如下命令,如有未安装的会有提示。

rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel 

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

如果 compat-libstdc++ 安装提示No package compat-libstdc++ available.,请使用命令yum install compat-libstdc++-33安装。 使用rpm -qa | grep "compat-libstdc"可查看。

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

三、安装

1、下载安装包

官网下载地址:这里下载12C版本,两个包都下载,放在/home/oracle/app/oradata/目录下面

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

解压完成后,database目录如下

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

切换到oracle用户,进入 database 目录,使用./runInstaller命令安装,安装前先声明一下环境变量,如下:注意这里不能用xshell连接后进行安装,因为xshell不支持图形。

[oracle@bogon database]$ export DISPLAY=:0.0
[oracle@bogon database]$ xhost +
access control disabled, clients can connect from any host
[oracle@bogon database]$ ./runInstaller

Linux系统安装oracle12C并配置pdb和开机自启动详细教程 Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程 Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

安装完毕!

三、进行PDB模式的启动,监听启动。

1、服务器配置防火墙:

查看防火墙开放端口:

firewall-cmd --zone=public --list-ports

开放防火墙端口

firewall-cmd --zone=public --add-port=1521/tcp --add-port=5500/tcp --add-port=5520/tcp --add-port=3938/tcp --permanent

重启防火墙端口

firewall-cmd --reload

[root@bogon ~]# firewall-cmd --zone=public --add-port=1521/tcp --add-port=5500/tcp --add-port=5520/tcp --add-port=3938/tcp --permanent
success
[root@bogon ~]# firewall-cmd --reload
success
[root@bogon ~]# firewall-cmd --zone=public --list-ports
1521/tcp 5500/tcp 5520/tcp 3938/tcp

2.启动数据库

sqlplus / as sysdba  登录数据库

>startup   启动数据据库:

>shutdown immediate  停止数据库

[oracle@bogon ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed May 25 15:59:46 2022

Copyright (c) 1982, 2014, Oracle.All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> startup	
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> 
SQL> 
SQL> 
SQL> 
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area411041792 bytes
Fixed Size		2925024 bytes
Variable Size		276827680 bytes
Database Buffers	125829120 bytes
Redo Buffers		5459968 bytes
Database mounted.
Database opened.

3、配置listener.ora和tnsnames.ora文件

[oracle@bogon admin]$ ll
total 16
-rw-r--r--. 1 oracle dba 345 May 25 15:38 listener.ora
drwxr-xr-x. 2 oracle dba64 May 25 15:34 samples
-rw-r--r--. 1 oracle dba 373 Oct 312013 shrept.lst
-rw-r--r--. 1 oracle dba 203 May 25 15:38 sqlnet.ora
-rw-r-----. 1 oracle dba 336 May 25 15:45 tnsnames.ora
[oracle@bogon admin]$ pwd
/home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin

备份两个文件,替换成改好的文件:

listener.ora,IP记得修改成本地ip并核对ORACLE_HOME路径是否正常。


# listener.ora Network Configuration File: /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/app/oracle/product/12.2.0/dbhome_1)
(PROGRAM = extproc)
)
 (SID_DESC =
 (GLOBAL_DBNAME = PDBORCL)
 (ORACLE_HOME = /home/oracle/app/oracle/product/12.2.0/dbhome_1)
 (SID_NAME = orcl)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.46.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY=extproc))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PDBORCL)
)
)
)
~

tnsnames.ora文件,IP记得修改成本地ip。

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

#LISTENER_ORCL =
#(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.214)(PORT = 1521))
#
#
#ORCL =
#(DESCRIPTION =
#(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.214)(PORT = 1521))
#(CONNECT_DATA =
#(SERVER = DEDICATED)
#(SERVICE_NAME = orcl)
#)
#)

LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.46.1)(PORT = 1521))

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.46.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.46.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PDBORCL)
)
)

如果传输的文件涉及权限问题,需要修改权限:

root@bogon admin]# chown oracle:dba listener.ora
[root@bogon admin]# 
[root@bogon admin]# 
[root@bogon admin]# 
[root@bogon admin]# 
[root@bogon admin]# chown oracle:dba tnsnames.ora
[root@bogon admin]# ll
total 24
-rw-r--r--. 1 oracle dba 778 May 25 16:08 listener.ora
-rw-r--r--. 1 oracle dba 345 May 25 16:06 listener.ora.bak20220525
drwxr-xr-x. 2 oracle dba64 May 25 15:34 samples
-rw-r--r--. 1 oracle dba 373 Oct 312013 shrept.lst
-rw-r--r--. 1 oracle dba 203 May 25 15:38 sqlnet.ora
-rw-r--r--. 1 oracle dba 871 May 25 16:08 tnsnames.ora
-rw-r-----. 1 oracle dba 336 May 25 16:06 tnsnames.ora.bak20220525

4.数据库执行启动pdb启动,并重启数据库:

CREATE TRIGGER open_all_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE  'alter pluggable database all open'; END open_all_pdbs; /

>startup

Linux系统安装oracle12C并配置pdb和开机自启动详细教程

查看pdb服务名:select con_id,name,open_mode from v$pdbs;

SQL> select con_id,name,open_mode from v$pdbs;

CON_ID NAME 			OPEN_MODE
---------- ------------------------------ ----------
	 2 PDB$SEED			READ ONLY
	 3 PDBORCL	

启动监听:

lsnrctl start

[oracle@bogon admin]$ lsnrctl start 启动监听
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 25-MAY-2022 16:49:14
Copyright (c) 1991, 2014, Oracle.All rights reserved.
Starting /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/app/diag/tnslsnr/bogon/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date25-MAY-2022 16:49:14
Uptime0 days 0 hr. 0 min. 0 sec
Trace Level off
SecurityON: Local OS Authentication
SNMPOFF
Listener Parameter File /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/app/diag/tnslsnr/bogon/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
Services Summary...
Service "PDBORCL" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@bogon admin]$ 
[oracle@bogon admin]$ 
[oracle@bogon admin]$ 
[oracle@bogon admin]$ lsnrctl status 查看监听状态
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 25-MAY-2022 16:49:57
Copyright (c) 1991, 2014, Oracle.All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date25-MAY-2022 16:49:14
Uptime0 days 0 hr. 0 min. 43 sec
Trace Level off
SecurityON: Local OS Authentication
SNMPOFF
Listener Parameter File /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/app/diag/tnslsnr/bogon/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
Services Summary...
Service "PDBORCL" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@bogon admin]$ 
[oracle@bogon admin]$ tnsping pdborclping一下监听的服务是否正常
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 25-MAY-2022 16:50:58
Copyright (c) 1997, 2014, Oracle.All rights reserved.
Used parameter files:
/home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.46.15)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDBORCL)))
OK (0 msec)

四、数据库服务开机自启动

1:查看数据库变量:

[oracle@bogon admin]$ echo $ORACLE_HOME 
/home/oracle/app/oracle/product/12.2.0/dbhome_1 

2、启动数据库启动自带脚本/home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbstart发现缺少文件

[oracle@bogon admin]$ /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbstart 
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbstart ORACLE_HOME
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory

3、root用户创建缺少的/etc/oratab文件,并对/etc/oratab文件进行配置:

root用户生成/etc/oratab文件

[root@bogon ~]# cd /home/oracle/app/oracle/product/12.2.0/dbhome_1
[root@bogon dbhome_1]# 
[root@bogon dbhome_1]# 
[root@bogon dbhome_1]# 
[root@bogon dbhome_1]# 
[root@bogon dbhome_1]# sh root.sh 
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=/home/oracle/app/oracle/product/12.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]: yes
Creating yes directory...
Copying dbhome to yes ...
Copying oraenv to yes ...
Copying coraenv to yes ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

用root用户给/etc/oratab文添加一行配置

orcl:/home/oracle/app/oracle/product/12.2.0/dbhome_1:Y

4、编辑dbstart和dbshut脚本文件

vi /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbstartvi /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbshut

将ORACLE_HOME_LISTNER=$1

修改为:ORACLE_HOME_LISTNER=$ORACLE_HOME


[oracle@bogon ~]$ bash/home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbstart
[oracle@bogon ~]$ sh/home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/dbshut

5、编辑listener.ora文件,这里如果切换了pdb模式应该配置的有,我们上面配过pdb,此步忽略。

没有配置PDB,添加如下内容:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /home/oracle/app/oracle/product/12.2.0/dbhome_1) 注意路径为实际路径
(SID_NAME = orcl)
)
)

6、创建自启动脚本

su - 切到root用户

vim  /etc/rc.d/init.d/oracle

#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/rc.d/init.d/oracle
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/12.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle" 
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
touch /var/lock/Oracle
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl start"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl stop"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
rm -f /var/lock/Oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

设置oracle文件权限和配置启动服务

[root@bogon ~]# cd /etc/rc.d/init.d/
[root@bogon init.d]# ll
total 44
-rw-r--r--. 1 root root 18281 May 222020 functions
-rwxr-xr-x. 1 root root4569 May 222020 netconsole
-rwxr-xr-x. 1 root root7928 May 222020 network
-rw-r--r--. 1 root root1328 May 25 18:36 oracle
-rw-r--r--. 1 root root1160 Oct22020 README
[root@bogon init.d]# chmod 755 oracle 
[root@bogon init.d]# chkconfig oracle on
[root@bogon init.d]# 
[root@bogon init.d]# 
[root@bogon init.d]# 
[root@bogon init.d]# chkconfig --add oracle

测试服务是否可以启动关闭

[oracle@bogon ~]$ service oracle stop
Shutdown Oracle: Password: 
-bash: /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/emctl: No such file or directory
Password: 
Processing Database instance "orcl": log file /home/oracle/app/oracle/product/12.2.0/dbhome_1/shutdown.log
Password: 
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 25-MAY-2022 19:16:39
Copyright (c) 1991, 2014, Oracle.All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.46.15)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=extproc))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDBORCL)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 2: No such file or directory
rm: cannot remove '/var/lock/Oracle': Permission denied
OK
[oracle@bogon ~]$ service oracle start
Starting Oracle: Password: 
Processing Database instance "orcl": log file /home/oracle/app/oracle/product/12.2.0/dbhome_1/startup.log
Password: 
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 25-MAY-2022 19:17:05
Copyright (c) 1991, 2014, Oracle.All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started
touch: cannot touch '/var/lock/Oracle': Permission denied
Password: 
-bash: /home/oracle/app/oracle/product/12.2.0/dbhome_1/bin/emctl: No such file or directory
OK

最后重启主机看sqlplus是否可以连接上数据库