安装环境
系统: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
如果 compat-libstdc++ 安装提示No package compat-libstdc++ available.
,请使用命令yum install compat-libstdc++-33
安装。
使用rpm -qa | grep "compat-libstdc"
可查看。
三、安装
官网下载地址:Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#11g,这里下载12C版本,两个包都下载,放在/home/oracle/app/oradata/目录下面
解压完成后,database目录如下
切换到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
安装完毕!
三、进行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 Area 411041792 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 dba 64 May 25 15:34 samples
-rw-r--r--. 1 oracle dba 373 Oct 31 2013 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 dba 64 May 25 15:34 samples
-rw-r--r--. 1 oracle dba 373 Oct 31 2013 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
查看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 Date 25-MAY-2022 16:49:14
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
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 Date 25-MAY-2022 16:49:14
Uptime 0 days 0 hr. 0 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
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 pdborcl ping一下监听的服务是否正常
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/dbstart
vi /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 22 2020 functions
-rwxr-xr-x. 1 root root 4569 May 22 2020 netconsole
-rwxr-xr-x. 1 root root 7928 May 22 2020 network
-rw-r--r--. 1 root root 1328 May 25 18:36 oracle
-rw-r--r--. 1 root root 1160 Oct 2 2020 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是否可以连接上数据库