Linux下的Oracle在安装结束后是处于运行状态的。运行top –u oracle可以看到以Oracle用户运行的进程。在图形化界面下,运行$ORACLE_HOME/sqldeveloper/sqldeveloper.sh可以出现Oracle自带的免费Oracle管理客户端SQL Developer。试着连接刚安装的Oracle,连接成功。
这时需要重启服务器,看服务器重启后,Oracle是否可以正常启动。以Root用户运行reboot命令可以重启Linux,重启完成后,默认情况下Oracle并不像Windows中的Oracle那样注册成服务,随机器一起启动的,所以需要手动敲入命令来启动。启动方式:以oracle用户登录运行以下语句:
1,进入sqlplus:
sqlplus /nolog
2,以sysdba的身份连接到数据库,并启动Oracle数据库引擎:
SQL> conn /as sysdba
SQL> startup
3,退出sqlplus,运行Listener
SQL> exit
$ lsnrctl start
这样数据库的TNS也启动了,可以通过网络连接数据库了。一般情况下就启动这两个就够了,如果想用Oracle提供的EM来管理Oracle的话还需要启动EM控制台,运行如下命令:
$ emctl start dbconsole
这样就可以通过https://servername:1158/em/console来访问EM控制台了。
这里我在实际操作中运行sqlplus出现了错误,大致如下:
sqlplus / as sysdba
sqlplus: error while loading shared libraries: /u01/app/oracle/product/11.1.0/db_1/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied
网上也有很多人遇到了这个问题,原来是SELinux在作怪,我采用的解决办法是禁止掉SELinux:
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled,然后重启服务器。
好像这个办法不是很好,也有说的解决办法是使用chcon 命令
示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
另外我在启动Listener时也报错TNS-12555: TNS:permission denied
后来网上搜了下,发现是oracle用户就无法进入/var/tmp/.oracle文件夹,方法很简单,执行:chmod 777 /var/tmp/.oracle 之后就ok了.
还有,我在启动EM控制台的时候又遇到了错误:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.
设置了这个变量后(运行export ORACLE_UNQNAME=xxxx实例名)后,再启动EM控制台,又出现了新的错误:OC4J Configuration issue. /u01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_xxxx not found.没有这个文件?去查了一下,确实是没有这样一个文件存在,怎么办呢?其实很简单,运行:
emca -config dbcontrol db
根据向导重新配置一下就可以了。
3.配置Oracle为开机自启动
虽然说Oracle作为服务器不会经常关机,但是偶尔重启一下,每次都要去手动启动Oracle还是太麻烦了,希望的是能够像在Windows中一样,每次开机的时候自动启动Oracle,只需要将Oracle配置为Linux的服务就可以了。操作如下:
1,以root用户建立/etc/rc.d/init.d/oracle11g脚本文件,内容如下(环境变量设置根据实际情况进行修改):
#!/bin/bash
#
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 11g, TNS listener, EM
#
#
#
# match these values to your environment:
ORACLE_BASE=http://www.likecs.com/home/oracle_11/app
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/db_1
ORACLE_SID=BRDWDEV
ORACLE_UNQNAME=BRDWDEV
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG
# see how we are called:
case $1 in
start)
su - oracle<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - oracle<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
2,以root用户执行以下命令
chmod 755 /etc/rc.d/init.d/oracle11g
chkconfig --add oracle11g
3, 重启服务
service oracle11g stop
service oracle11g start
这样在开关机的时候oracle自动启动和停止。
另外,还有说,需要修改/etc/oratab这个文件,将最后的N改为Y,如下:
xxxxTEST:/home/oracle_11/app/oracle/product/11.2.0/db_1:Y
最后,我们要测试一下这个自启动是否真的有效,重启一下服务器吧,过几分钟后,可以看到客户端可以正常连接到Oracle了。Oracle环境配置成功!