• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

关于linux下安装oracle之后,重启系统后oracle不能正常启动的配置总结

点滴 admin 8年前 (2016-06-28) 2537次浏览 已收录 0个评论 扫描二维码

一、linux下无法启动sqlplus

问题描述:

[root@localhost oracle]# su – oracle

[oracle@localhost oracle]$ sqlplus “as/sysdba”

-bash: sqlplus: command not found

[oracle@localhost oracle]$ /u01/app/oracle/oracle/product/11.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@localhost oracle]$

解决方法:

 

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

打开/etc/profile底部插入

 

export ORACLE_SID=demo1(数据库实例id)

export ORACLE_HOME=/u01/app/oracle/product/11.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 10.2.0.1.0 – Production on 14-OCT-2009 19:06:40

Copyright (c) 1991, 2005, Oracle All rights reserved.

Starting /home/oracle/product/10g/bin/tnslsnr: please wait…

TNSLSNR for Linux: Version 10.2.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 UNKNOWN, 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

使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:

Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr

看起来貌似是监听没有起来,可是实际上,监听可以成功启动。

我们来看一下dbstart脚本,该脚本放在$ORACLE_HOME/bin下面。

搜索dbstart里面的tnslsnr:

grep tnslsnr dbstart

返回结果:

 if [ -f $ORACLE

 _HOME_LISTNER/bin/tnslsnr ] ; then

    echo “Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr”

返回结果中发现有$ORACLE_HOME_LISTNER变量,有可能是该变量的路径不对,我们继续搜索ORACLE_HOME_LISTNER 

grep ORACLE_HOME_LISTNER dbstart

返回结果:

# 3) Set ORACLE_HOME_LISTNER

ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

if [ ! $ORACLE_HOME_LISTNER ] ; then

  echo “ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener”

  LOG=$ORACLE_HOME_LISTNER/listener.log

  if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then

    $ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG 2>&1 &

    export VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep “LSNRCTL for ” | cut -d’ ’ -f5 | cut -d’.’ -f1`

    echo “Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr”

        $LOGMSG “Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER: lsnrctl start”

我们发现ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

中,指定的路径不对,需要对这一行重新编辑,使其路径制定到$ORACLE_HOME

用vi编辑dbstart,将ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle更改为

export ORACLE_HOME_LISTNER=$ORACLE_HOME 

然后保存退出,此时再运行dbstart,已经不报错了,但是没有任何反应,ps一下进程,没有oracle的进程,说明oracle实例没有正常启动。

dbstop 同上设置。

 

此时的原因是在/etc/oratab的设置问题,我们cat一下,发现

demo1:/home/oracle/product/11.1.0/db_!:N

最后设置的是”N”(我的环境中只有一个实例,因此只有一行配置语句),我们需要把“N”修改为“Y”。

 

以上的工作做好之后,dbstart就可以正常使用了:

 

[oracle@redhat bin]$ lsnrctl start                                   –“启动监听”

LSNRCTL for Linux: Version 10.2.0.1.0 – Production on 14-OCT-2009 19:44:53

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Starting /home/oracle/product/10g/bin/tnslsnr: please wait…

TNSLSNR for Linux: Version 10.2.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:44:53

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 UNKNOWN, has 1 handler(s) for this service…

The command completed successfully

[oracle@redhat bin]$ dbstart                                   –“启动数据库实例”

Processing Database instance “zgz”: log file /home/oracle/product/10g/startup.log

[oracle@redhat bin]$ dbshut                                    –“关闭数据库实例”

[oracle@redhat bin]$ lsnrctl stop                              –“关闭监听”

LSNRCTL for Linux: Version 10.2.0.1.0 – Production on 14-OCT-2009 19:45:33

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2)))

The command completed successfully

 

三、如何使数据库实例和linux系统一起启动

在/etc/rc.d/rc.local中加入如下语句即可实现同系统启动实例:

su – oracle -c “lsnrctl start”

su – oracle -c “dbstart”

四、oracle em(enterprise managment) 打不开

问题描述:

http://localhost.localdomain:1158/em 提示该页无法显示。

解决方法:

–检查dbconsole服务是否启动,如果没启动执行2,3

1.emctl status dbconsole



–设置ORACLE_SID

–2.SET ORACLE_SID=&ORACLE_SID(我没执行这个,因为在/etc/profile里设置了export ORACLE_SID=demo1)



–启动DBCONSOLE

3.emctl start dbconsole

–设置好ORACLE_SID后输入EMCTL可以查看到此命令的帮助



  五、
启动isqlplus

[oracle@graduate ~]$ isqlplusctl start
iSQL*Plus 10.2.0.1.0
Copyright (c) 2003, 2005, Oracle. All rights reserved.
warning, got duplicate tcp line.
Starting iSQL*Plus ...
iSQL*Plus started.
喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址