一、linux下无法启动sqlplus

问题描述:

[root@redhat oracle]# su – oracle
[oracle@redhat oracle]$ sqlplus “as/sysdba”
-bash: sqlplus: command not found
[oracle@redhat oracle]$ /opt/oracle/oracle/product/19.1.0/db_1/bin/sqlplus
Error 6 initializing SQL*Plus
Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
[oracle@redhat oracle]$

解决方法:

由于环境变量没有设置导致的。可以编辑.profile文件可以进行环境变量设置的。

打开/etc/profile底部插入

export ORACLE_SID=ORCLCDB(数据库实例id)
export ORACLE_HOME=/opt/oracle/oracle/product/19.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

保存关闭,重启系统或执行source /ect/profile设置立即生效。

二、启动数据库实例,分为两步:第一步,启动监听;第二步,启动数据库实例。

1.进入到sqlplus启动实例

[oracle@redhat ~]$ su - oracle                                 --"切换到oracle用户"
Password:
[oracle@redhat ~]$ lsnrctl start                               --"打开监听"
LSNRCTL for Linux: Version 19.1.0.1.0 – Production on 14-OCT-2019 19:06:40
Copyright (c) 1991, 2005, Oracle.  All rights reserved
Starting /home/oracle/product/10g/bin/tnslsnr: please wait…
TNSLSNR for Linux: Version 19.1.0.1.0 – Production
System parameter file is /home/oracle/product/10g/network/admin/listener.ora
Log messages written to /home/oracle/product/10g/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC2)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat)(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2)))
STATUS of the LISTENER
————————
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 – Production
Start Date                14-OCT-2009 19:06:40
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/product/10g/network/admin/listener.ora
Listener Log File         /home/oracle/product/10g/network/log/listener.log
Listening Endpoints Summary…
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC2)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat)(PORT=1522)))
Services Summary…
Service “PLSExtProc” has 1 instance(s).
  Instance “PLSExtProc”, status UNKNOW, has 1 handler(s) for this service…
The command completed successfully
[oracle@redhat ~]$ sqlplus /nolog                                --"进入到sqlplus"
SQL*Plus: Release 10.2.0.1.0 – Production on Wed Oct 14 19:06:45 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba                                              --"连接到sysdba"
Connected to an idle instance.
SQL> startup                                                     --"启动数据库实例"
ORACLE instance started.
Total System Global Area  285212672 bytes
Fixed Size      1218968 bytes
Variable Size     88082024 bytes
Database Buffers   188743680 bytes
Redo Buffers      7168000 bytes
Database mounted.
Database opened.
SQL> shutdown immediate                                          --"关闭数据库实例"
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
[oracle@redhat ~]$ lsnrctl stop                                 --"关闭监听"
LSNRCTL for Linux: Version 10.2.0.1.0 – Production on 14-OCT-2009 19:08:06
Copyright (c) 1991, 2005, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2)))
The command completed successfully

2.用dbstart和dbshut启动和关闭数据库实例

先启动监听 lsnrctl start
启动实例  dbstart

注意:安装ORACLE时 listener.ora 会默认使用主机名而不是127.0.0.1,后续如果更改了主机名也会导致无法启动,启动失败查看 listener.ora 中的监听是否等于当前主机名,不同的话修改listener.ora或者在/etc/hosts文件加入hosts解决问题