环境:centos 6.5 + oracle 11g
自启动之前问题
虚拟机里的oracle环境,每次重启完系统,用plsql developer连接,先是报错:
无TNS监听程序
解决方法是切换到系统的oracle用户,执行lsnrctl start,但是执行之前,因为ORACLE_HOME环境变量没有生效,还要是环境变量文件生效,步骤如下:
[oracle@localhost ~]$ source .bash_profile
[oracle@localhost ~]$ echo $ORACLE_HOME
/home/oracle/app/oracle/product/11.2.0/dbhome_1
[oracle@localhost ~]$ lsnrctl start
启动完成后,再次连接,又报错:
oracle没有启动。启动步骤如下:
[oracle@localhost ~]$ sqlplus /nolog
sql*Plus: Release 11.2.0.1.0 Production on Wed Oct 19 14:29:10 2016
Copyright (c) 1982,2009,Oracle. All rights reserved.
sql> conn / as sysdba
Connected to an idle instance.
sql> startup
ORACLE instance started.
Total System Global Area 776646656 bytes
Fixed Size 2217384 bytes
Variable Size 490736216 bytes
Database Buffers 281018368 bytes
Redo Buffers 2674688 bytes
Database mounted.
Database opened.
配置自启动
下面把上述过程都配置成开机启动。
环境变量生效
可能是因为我的oracle用户不是桌面登录的,是从终端su切换过来的,.bash_profile文件没有运行。我把文件里的内容写入.bashrc文件后,重启就可以了。
TNS监听以及oracle服务自启动
编辑: /etc/oratab文件,把最后一行的N改成Y
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon,':',is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign,'#',are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should,"Y",or should not,
# "N",be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl:/home/oracle/app/product/11.2.0/dbhome_1:Y
路径可能不同
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
service smb restart
su - oracle -c 'lsnrctl start'
su - oracle -c 'dbstart'
su - oracle -c 'emctl start dbconsole'
dbstart是数据库自带的启动脚本,我们只要加到rc.local中让它开机调用就可以了。但是还需要编辑一下它。修改dbstart的ORACLE_HOME_LISTNER,使其指向$ORACLE_HOME:
# First argument is used to bring up OracleNet Listener
ORACLE_HOME_LISTNER=$ORACLE_HOME
重启虚拟机,发现plsql developer可以直接连接上了。