熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE啟動相關問題

2022-06-13   來源: Oracle 

  在安裝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這樣就可以完成自啟動了


From:http://tw.wingwit.com/Article/program/Oracle/201311/17067.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.