在安装ORACLE g完成后发现不少问题现整理如下
首先用oracle用户登陆
sqlplus sys as sysdba
提示输入密码(安装oracle时第一步设置的密码)
启动数据库
SQL>startup
ORACLE instance started
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted
Database opened
若之前已启动系统将提示ORA: cannot start alreadyrunning ORACLE shut it down first
可用如下命令关闭数据库
·shutdown normal正常方式关闭数据库
·shutdown immediate 立即方式关闭数据库
·shutdown abort直接关闭数据库正在访问数据库的会话会被突然终止
SQL> conn scott/tiger
Connected
若scott用户在安装oracle时没被解锁可通过以下方法解锁scott用户
首先以system帐户登陆sqlplus密码为安装时设置的
然后 alter user scott account unlock;
提示重输密码OK了
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
哈哈又看到久违的这几张表了说明oracle服务端已正常启动
以下测试通过远程登陆判断监听是否正常
首先执行在linux下用oracle用户登陆输入命令开启监听lsnrctl start
如果无法正常启动监听屏幕应该会有一些打印信息不过我没碰到所以暂时就先不讨论异常情况啦!
oracle我是在vm虚拟机上装的(ps:机子配置太低一路上那个卡啊还好我意志坚强再卡都装起来了^_^)把虚拟机ip设为(用setup命令里面有个关于网络配置功能)我的xp系统ip为
默认网关都设为 可通过ping命令判断局域网是否能通哇一ping就通了先恭喜自己一下!
在保证了oracle的服务和监听都能起来两台机也能ping通的前提下接着在xp安装oracle客户端我是装i的选择好安装目录其他的按默认就行了装好后在安装目录ora\network\admin下用记事本编辑tnsnameora文件我的配置如下
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
#orcl 为oracle的sid host为要oracle服务器地址
配置好之后可以cmd里面用tnsping orcl看看是不是能通诶延迟才毫秒~~成功啦~
之前有遇到过执行tnsping命令时提示不是内部或外部命令这是因为环境变量的造成的只要在path里面加一个oracle安装目录下的bin路径就可以啦或者土一点先cd到bin目录下再执行tnsping~~~不过还是不建议用这种土鳖的方法配个环境变量可以一劳永逸嘛~~~~(ps:这里说的都是在xp里执行的不是linux里哇只是友情提醒一下高手看了您别笑我~)
之后我又安装了PLSQL Developer (这个东西那是相当好用啊!)
一切准备就绪!打开PLSQL Developer输入username/passwd database选择刚才在tnsname里配的orcl哎哟登上去了灰常开心啊!!!
看来一切都很顺利下面麻烦来了······
关于dbstart的设置
每次通过上述的方法来启动数据库比较麻烦下面尝试用dbstart启动数据库
首先用oracle用户登陆输入dbstart 发现如下屏幕打印提示
Failed to autostart Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
baidu一下发现下面这篇文章(截取部分)
看来是listener服务没有起来但是执行lsnrctl start却能启动listener服务
搜索dbstart文件中的tnslsnr字符串
grep tnslsnr dbstart
返回结果:
if [ f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
echo Failed to autostart Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr
看来可能是ORACLE_HOME_LISTNER环境变量引起的查找 ORACLE_HOME_LISTNER
grep ORACLE_HOME_LISTNER dbstart
返回结果
# ) 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 autostart Oracle Net Listener
LOG=$ORACLE_HOME_LISTNER/listenerlog
if [ f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
$ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG >& &
export VERLIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep LSNRCTL for | cut d f | cut d f`
echo Failed to autostart 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环境变量赋值但是这个路径是不对的编辑dbstart文件
vi dbstar
将该行改为export ORACLE_HOME_LISTNER=$ORACLE_HOME
保存退出
满心欢喜的再次dbstart昏没反应还有个dbshut也是没反应继续baidu如下
dbstart需要修改/etc/oratab
your_sid:/oracle/product/:N
将最后N修改为Y
更加满心欢喜的再次dbstart哇哈哈起来了~~~果然baidu一下你就知道!!(虽然心里觉得似乎更牛不知道为什么每次第一反应就是baidu ^_^)
用dbshut也能正常关闭数据库了怎么有种妇唱夫随的感觉····
再次回到xp用PLSQL Developer登陆oh yeah~~~连上了!!!看来一切都正常了~~~
终于可以心安理得的休息一下啦···(boo同学借您的心安理得用一下您没意见吧?)
以下是之前看到自动启动数据库的方法先贴上来等有空又有心情的时候再试试吧
数据库的启动
欲启动数据库服务在系统启动后登录oracle用户
su – oracle
lsnrctl start
dbstart
emctl start dbconsole
isqlplusctl start
这样可以手工启动数据库若要让数据库在系统启动时随之启动就需要多动点手了
. 首先修改/etc/oratab 把orcjava:/home/oracle/OraHome_:N改为orcjava:/home/oracle/OraHome_:Y
. 然后修改/etc/rclocal
添加如下几行
su oracle c lsnrctl start
su oracle c dbstart
su oracle c emctl start dbconsole
su oracle c isqlplusctl start
进入/home/oracle/OraHome_/bin 修改dbstart文件将oratab=etc/oratab
重新启动reboot 看看系统能否自动加载服务
如果仍然不能请检查环境变量是否正确如果/etc/下无oratab文件到/home/oracle/install/目录下复制oratab文件到/etc下并修改
#自动启动
~~~~~~~~~~~~~~~~~~~~华丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
前两天在linux里成功的安装了OracleG每次启动oracle数据库都是用oracle用户登陆然后执行dbstart启动数据库每次启动时都会报错
Failed to autostart Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
看来是listener服务没有起来但是执行lsnrctl start却能启动listener服务
搜索dbstart文件中的tnslsnr字符串
grep tnslsnr dbstart
返回结果:
if [ f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
echo Failed to autostart Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr
看来可能是ORACLE_HOME_LISTNER环境变量引起的查找 ORACLE_HOME_LISTNER
grep ORACLE_HOME_LISTNER dbstart
返回结果
# ) 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 autostart Oracle Net Listener
LOG=$ORACLE_HOME_LISTNER/listenerlog
if [ f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
$ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG >& &
export VERLIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep LSNRCTL for | cut d f | cut d f`
echo Failed to autostart 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环境变量赋值但是这个路径是不对的编辑dbstart文件
vi dbstar
将该行改为export ORACLE_HOME_LISTNER=$ORACLE_HOME
保存退出然后执行dbstart就没问题了呵呵
想系统启动是自动启动数据库可以通过修改/etc/rcd/rclocal文件
一开始我写的命令是
su oracle c ora_App/product//db_/bin/lsnrctl start
su oracle c ora_App/product//db_/bin/dbstart
但是su oracle c ora_App/product//db_/bin/lsnrctl start是参数start不起作用它进入了lsnrctl命令提示符并没有启动后来把命令用双引号引起来就可以了如下
su oracle c ora_App/product//db_/bin/lsnrctl start
是可以启动了但是启动时报错如下:
Message not found; No message file for product=network facility=TNSTNS: Message not found; No message file for product=network facility=TNS
TNS: Message not found; No message file for product=network facility=TNS
但是如果我用oracle用户登陆执行lsnrctl start就不报错看来是在root用户中执行su oracle c ora_App/product//db_/bin/lsnrctl start有些Oracle环境变量没有设置查了一下su 命令的参数其中有个l参数
l或login 改变身份时也同时变更工作目录以及HOMESHELLUSERLOGNAME此外也会变更PATH变量
加上参数
su oracle lc ora_App/product//db_/bin/lsnrctl start
正常了!呵呵终于弄完了总算是一晚上没白费
或许这么做比较专业点
可以在/etc/initd/下写一个shell就叫oracle好了内容如下
#!/bin/sh
ORACLE_HOME=/home/oracle/oracle/product//db_
ORACLE=oracle
case $ in
start)
echo start oracle
su oracle c $ORACLE_HOME/bin/dbstart $ORACLE_HOME &
su oracle c $ORACLE_HOME/bin/lsnrctl start ;;
stop)
echo stop oracle
su oracle c $ORACLE_HOME/bin/dbshut &
su oracle c $ORACLE_HOME/bin/lsnrctl stop ;;
*)
echo usage: $ {start|stop}
exit
;;
esac
这个就可以控制oracle的启动和关闭为了完成自启动可以在/etc/rcd/(runlevel 是如果runlevel是就在/etc/rcd/下)建立一个链接文件ln s /etc/initd/oracle /etc/rcd/Soracle这样就可以完成自启动了