近來發生一個問題有點頭疼,在linux上的Oracle數據庫突然無法訪問
主要報錯如下:
基於本人的走歪路經驗,分享一下我的解決思路:
首先,最直觀的一點,監聽器起不來,是不是數據庫本身就沒起來
select status from v$instance;
這個語句可以查看數據庫的狀態,啟動的話應該是open
當然,也可以使用如下語句來查看oracle進程,在linux用戶下
ps -ef|grep oracle
如果數據庫沒起來的話↓↓↓↓↓↓↓↓
以下為linux啟動oracle的一些小步驟:
1、root用戶或有相應權限用戶登錄linux服務器,登錄oracle用戶
su -oracle 這里有個-,不加的話可能會登不上
2、以不登陸數據庫方式使用sqlplus
sqlplus /nolog
3、以dba方式登錄
conn /as sysdba
4、啟動
startup
稍等之后正常情況數據庫就起來了
然后就是啟動監聽了
在oracle用戶下
lsnrctl start
之后可以使用
lsnrctl status
查看監聽器狀態
lsnrctl reload 重啟監聽
如果以上方式不奏效的話,可以考慮是不是更改了/etc/hosts文件
如果以下一行沒有的話,建議恢復
127.0.0.1 localhost.localdomain localhost
然后重啟數據庫、監聽等。。。
以上是我所知道確認的兩個原因,有更多的原因歡迎交流分享
以下是一些oracle的啟動關閉等指令
@Rick Sun 借鑒這位博主的經驗
startup參數
不帶參數,啟動數據庫實例並打開數據庫,以便用戶使用數據庫,在多數情況下,使用這種方式!
nomount,只啟動數據庫實例,但不打開數據庫,在你希望創建一個新的數據庫時使用,或者在你需要這樣的時候使用!
mount,在進行數據庫更名的時候采用。這個時候數據庫就打開並可以使用了!
謝謝!不准確的地方請指教!
shutdown
shutdown的參數
Normal 需要等待所有的用戶斷開連接
Immediate 等待用戶完成當前的語句
Transactional 等待用戶完成當前的事務
Abort 不做任何等待,直接關閉數據庫
normal需要在所有連接用戶斷開后才執行關閉數據庫任務,所以有的時候看起來好象命令沒有運行一樣!在執行這個命令后不允許新的連接
immediate在用戶執行完正在執行的語句后就斷開用戶連接,並不允許新用戶連接。
transactional 在擁護執行完當前事物后斷開連接,並不允許新的用戶連接數據庫。
abort 執行強行斷開連接並直接關閉數據庫。