您的位置:首页 > 数据库 > Oracle

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

2012-04-19 15:19 1136 查看
一、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) 打不开

[b]问题描述:[/b]

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: