成功連到資料庫上之後,查看listener狀態:lsnrctl status
status READY 狀態,需要由非歸檔轉為歸檔模式,故操作如下:
1.關閉資料庫shutdown immediate 正常關閉;
2.啟動資料庫到mount狀態,startup mount,發生報錯:
3.此時查看listener狀態: lsnrctl status
為status BLOCKED狀態,網上搜尋解決方案http://zhidao.baidu.com/question/278798900.html
4.重寫listener.ora檔案(藍色為增加部分)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
(SID_NAME = orcl)
)
)
5.重啟監聽:lsnrctl start;查看狀態lsnrctl status:
為status UNKNOWN狀態。
6.連到執行個體,關閉資料庫,啟動資料庫到mount狀態,均正常!
查看某服務是動態註冊或是靜態註冊。
可以使用命令lsnrctl status 來查看資料庫是動態註冊還是靜態註冊。
執行個體狀態為UNKNOWN時,表示此服務是靜態註冊的設定,監聽器表明他不知道關於該執行個體的任何資訊,只有當使用者發出串連請求時,他才檢查該執行個體是否存在。
而動態註冊的資料庫通過狀態資訊中的狀態為READY或BLOCKED來指明。不管何時關閉資料庫,動態註冊的資料庫都會動態從監聽器中登出掉,而與之相關的資訊將會從狀態列表消失,這樣不管資料庫是在運行還是已經關閉,監聽器都知道他的狀態。
待補充。。。
************************************************************
ORACLE XE 修改方法
解決辦法:
修改目錄E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server\NETWORK\ADMIN下的檔案tnsnames.ora、listener.ora將這兩個檔案中HOST後面的主機都修改為127.0.0.1然後重啟OracleServiceXE、OracleXETNSListener服務這時pl/sql developer串連oracle時報出“ORA-12514: TNS: 監聽程式當前無法識別串連描述符中請求的服務”的錯誤,再次修改listener.ora檔案,修改前該檔案內容為
| SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) |
修改的方式是:再在該檔案中添加一個需要串連的資料庫執行個體的描述,就是添加一個SID_DESC,我自己串連的資料庫執行個體是XE,添加後的檔案內容為:
| SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = XE) (ORACLE_HOME = E:\Oracle10gXEUniv\app\oracle\product\10.2.0\server))/*紅色字型部分即為新加的資料庫執行個體XE的執行個體描述,注意該執行個體描述的ORACLE_HOME後面不能像其它執行個體那樣加(PROGRAM = extproc),否則會報“ORA-28547: TNS: 串連伺服器失敗,可能是Net8管理錯誤。”*/ ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) |