一、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文件可以进行环境变量设置的。 |
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
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.
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
Version
Start Date
Uptime
Trace Level
Security
SNMP
Listener Parameter File
Listener Log File
Listening Endpoints Summary...
Services Summary...
Service "PLSExtProc" has 1 instance(s).
The command completed successfully
[oracle@redhat ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 14 19:06:45 2009
Copyright (c) 1982, 2005, Oracle.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
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.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2)))
The command completed successfully
2.用dbstart和dbshut启动和关闭数据库实例
先启动监听 lsnrctl start
启动实例
使用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
返回结果:
返回结果中发现有$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
我们发现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.
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
Version
Start Date
Uptime
Trace Level
Security
SNMP
Listener Parameter File
Listener Log File
Listening Endpoints Summary...
Services Summary...
Service "PLSExtProc" has 1 instance(s).
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.
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可以查看到此命令的帮助
[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.