在安裝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