程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 11g參數修改錯誤導致數據庫無法啟動的處理方法(不斷更新)

Oracle 11g參數修改錯誤導致數據庫無法啟動的處理方法(不斷更新)

編輯:Oracle數據庫基礎
昨天剛裝的Oracle 11g ,裝完之後挺好用的。安裝步驟:
http://hi.baidu.com/qqzone_QQ/blog/item/8db320f3a7139c5d342acc31.Html
帶圖,寫得很清楚。
今天打開機子,以為可以操作Oracle 了。但是卻一直報錯,協議適配器錯誤。(這往往是一些服務沒啟動的原因)
正確的應該是這樣的:
Oracle 11g參數修改錯誤導致數據庫無法啟動的處理方法(不斷更新)ORA-12541:TNS:無監聽程序
怎麼回事?昨天還好好的呢。經過一番Google 總結如下:
1、在計算機 開始--->管理-->服務中沒有看到 OracleOraHome92TNSListener 服務,但服務已經啟動
2、C:\>lsnrctl start 執行完後報open service error。然後在計算機 開始--->管理-->服務中看到  了 OracleOraHome92TNSListener 服務
3、運行regedit.exe啟動注冊表編輯器,在HKEY_LOCAL_MacHINE/SYSTEM/ControlSet002/下的 Services和CurrentControlSet/Services下找到OracleOraHome92TNSListener項,在右邊窗口按右鍵,新建/字符串,取名ImagePath。
雙擊新見的建,在“數值數據”項輸入D:\Oracle\ora92\bin\TNSLSNR.EXE(根據你自己的實際情況進行修改),確定完成。
再次在服務中雙擊打開OracleOraHome92TNSListener的服務看到其“可執行文件的路徑”一欄已經顯示了其正確的值。這時你可以啟動監聽了。
4、C:>tnsping 數據庫SID。看看tns服務沒有起來。如果沒有起來,用下面的命令
c:\>lsnrctl
lsnrctl>start把這個服務起動起來。
c:\>lsnrctl start 後open service error錯誤消失,但例程中有一個狀態為UNKNOWN,另一個為READY.命令執行成功。WIN-R ---Services.msc 去看下服務啟動沒?嗯,發現OracleOraDB11g_home1TNSListenerListener1 無法啟動。
忽然想起,早上監聽總啟動不了的時候,我刪了再建,建了再刪,也忘記備份了。折騰了好久,會不會是我把什麼文件給折騰壞了?哎,這怎麼辦?於是上網找了好久。終於找到解決方案了。
首先,你在F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
可以看到,你修改的文件,在你修改時它已自動備份了。先去恢復到昨天(Oracle 正常 )時的文件內容。
也就是說把listener.ora sqlnet.ora tnsnames.ora 恢復到最最初的狀態。
Oracle 11g參數修改錯誤導致數據庫無法啟動的處理方法(不斷更新)再接著執行下面的步驟:
轉自:http://fronkx.blog.hexun.com/33704658_d.Html
由於為了更快的處理一個大表,我對Oracle 11g的參數做了修改導致部分參數出現錯誤,進而導致Oracle實例無法啟動.
症狀如下:
D:\>sqlplus hr/hrSQL*Plus: Release 11.1.0.6.0 - Production on 星期三 6月 10 09:39:59 2009Copyright (c) 1982, 2007, Oracle. All rights reserved.ERROR:
ORA-01034: Oracle not available
ORA-27101: shared memory realm does not exist
進程 ID: 0
會話 ID: 0 序列號: 0

於是登錄系統的控制台嘗試手工啟動實例:
D:\>sqlplus / as sysdbaSQL*Plus: Release 11.1.0.6.0 - Production on 星期三 6月 10 09:41:27 2009Copyright (c) 1982, 2007, Oracle. All rights reserved.已連接到空閒例程。alter session set nls_language = "American"
*
第 1 行出現錯誤:
ORA-01034: Oracle not available
進程 ID: 0
會話 ID: 0 序列號: 0SQL> startup
ORA-00824: cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings, see alert log for more information
啟動失敗的過程進一步的證實了我的判斷;
處理辦法: 恢復系統上次正常啟動的配置文件,Oracle 11g已經將配置文件備份到了pfile目錄下,我們可以根據需要進行恢復.
SQL> create spfile from pfile='D:\ora11g\admin\orcl\pfile\init.ora.4262009164718'
最後再次啟動數據庫實例,終於啟動成功了,數據庫配置恢復正常.
SQL> startup
Oracle 例程已經啟動。Total System Global Area 535662592 bytes
Fixed Size                  1334380 bytes
Variable Size             171967380 bytes
Database Buffers          356515840 bytes
Redo Buffers                5844992 bytes
數據庫裝載完畢。
ORA-01092: Oracle 實例終止。強制斷開連接
進程 ID: 632
會話 ID: 170 序列號: 5
SQL> exit
從 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開

走到這,以為沒事了,終於修復了。哎,沒想到又報錯:(如圖示,再下的步驟就又進行不了了,接看綠色文字以下部分)
Oracle 11g參數修改錯誤導致數據庫無法啟動的處理方法(不斷更新)

數據庫實例還是啟動失敗。查看數據庫實例啟動的日志(alert_<實例名>.log)。
分析日志文件在文檔尾部(最新的記錄)發現如下信息:

Wed Jun 10 11:14:49 2009
SMON: enabling cache recovery
Errors in file d:\ora11g\diag\rdbms\orcl\orcl\trace\orcl_ora_5704.trc:
ORA-30012: 還原表空間 'UNDOTBS1' 不存在或類型不正確
Error 30012 happened during db open, shutting down database
USER (ospid: 5704): terminating the instance due to error 30012
Instance terminated by USER, pid = 5704
ORA-1092 signalled during: ALTER DATABASE OPEN...
ORA-1092 : opiodr aborting process unknown ospid (812_5704)
Wed Jun 10 11:14:53 2009
ORA-1092 : opitsk aborting process
Wed Jun 10 11:22:48 2009

再看看數據庫的回滾段參數是怎麼樣的:

SQL> show parameter undo;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS1

這下就清楚了,是回滾段的設置被恢復到了最初狀態,從而無法找到現在的新回滾段.
手工修改先前的參數配置文件:init.ora.4262009164718
然後從新更新pfile的設置; 再次從起數據庫,到此,數據庫恢復正常.


哎,上面的步驟又走不下去了。於是,再用PL/SQL Developer再連接下試試。

報錯:ORA-12514:TNS:監聽程序當前無法識別連接描述符中請求的服務
於是再次修改
listener.ora文件。
正常Oracle配置

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORCL)
(Oracle_HOME = F:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME=ORCL)
)
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(Oracle_HOME = F:\app\Administrator\product\11.2.0\dbhome_1)
)
)
對比一下吧,照上面改完了,問題就已全部解決了。再次:
lsnrctl start
怎麼樣?可以了吧?再執行數據庫回滾那段(黃色命令行那段),也可以了吧?

===========================================

‍(2010-11-26)

ORA-01034:Oracle not available
ORA-27101:shared memory realm does not exist

ORA-00119:invalid specification for system parameter LOCAL_LISTENER
ORA-00132:syntax error or unresolved network name 'LISTENER_ORCL'

這幾個錯就是我機子重起後報得錯,其實不用上面那麼麻煩。(很奇怪,不知為什麼,有知道的朋友希望你能告訴我下解決方案,不用每次重起都去設置了)

1 去服務裡啟動所有有關Oracle 的服務。

2 根據提示可知tnsnames.ora少配置東東了。

LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

LISTENER_MYTEST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

也就是這個東東沒配置。(我機子上兩個實例,一個是orcl 一個是mytest 。)

配置完確保監聽已啟動,例程也要啟動啊,不然數據庫還是用不了。

sqlplus / as sysdba

startup

即可。

如果你操作完依然不行就試試下面的吧?

http://www.100ksw.com/JSj/Oracle/xxjc/208751.sHtml

http://hi.baidu.com/benmaoer/blog/item/41a3b31948bdaf4c42a9ad1d.Html終於把Oracle 給整好了。真不容易。呵呵,在此記錄一下,省得以後再不知所措。

(2010-11-29) 今又遇到以下兩個錯誤:補充一下,

ORA-01031:insufficIEnt privileges

法一: 打開--F:\app\Administrator\product\11.2.0\dbhome_1\database\oradba.exe
然後雙擊oradba.exe文件即可解決問題

法二:‍http://zpball.Javaeye.com/blog/683887

http://blog.csdn.Net/dingyingguidyg/archive/2008/12/20/3564816.ASPx

ORA-28056:Writing audit records to Windows Event Log failed

‍在命令行輸入:c:\>net helpmsg 1502
輸出:事件日志文件已滿。
那麼看到這個信息就知道解決方案了:
控制面板->管理工具->事件查看器
找到“系統”,然後右鍵“清除所有事件”,這樣就解決了問題;

我是先用了法一,然後再清除了事件日志,然後Oracle就恢復正常了。如果你問題依舊,請嘗試法二的那兩個鏈接。

(2010-12-06)

http://jzgl-javaeye.Javaeye.com/blog/717224

帶圖示:http://statsoft.blog.163.com/blog/static/27653132201062742236745/

‍http://dev.firnow.com/course/7_databases/oracle/OracleJS/20100628/216619.Html

‍http://hi.baidu.com/%B3%F3%C5%AEyuyu/blog/item/ba36da3fbeb193f4838b13e6.Html

上面這兩個錯可難纏了,我全試過了,一個都不好用。但還是記錄下,以後遇到了再說,呵呵。

我的庫 (共享成公用數據庫了) 是被別人誤操作,連系統表都被人刪除了,執行了drop 與delete 然後就這樣了,不是日志的問題。

最後,一氣之下,關閉共享,新建數據庫,刪除以前的數據庫。這樣是可以使用了,可是我總覺得不太好,‍不知道有沒有還未顯現的隱患。

另:
如何在不安裝Oracle客戶端的情況下,使用PL/SQL Developer連接數據庫
      
(不知可不可行,沒試過,感興趣的朋友可以試一下,呵呵 )
通常情況下,用PL/SQL Developer連接Oracle是需要安裝Oracle客戶端軟件的,這也就意
味著你的硬盤將被占用大約1G-2G的空間,對於Windows操作系統來說,你還會多出一些開機
自啟動的服務。當然對於大部分人來說,並不會在自己的機器上應用所創建的數據庫,而只是
希望通過他的一些配置來連接訪問服務器上的數據庫。其實Oracle為我們提供了輕便的工具Oracle InstantclIEnt package,也有人稱他為
“Oracle即時客戶端”。使用此工具,我們就可以在不安裝Oracle客戶端軟件的情況下訪問存
在於其他計算機上的數據庫了。首先,需要在Oralce官方網站上下載Oracle InstantclIEnt Basic package。地址如下:
http://www.Oracle.com/technology/software/tech/oci/instantclIEnt/htdocs/winsoft.Html
在這個頁面的中部找到Instant Client,在Instant ClIEnt Downloads中選擇合適的版本下載。
下載時需要Accept License Agreement,並且需要一個Oracle帳號。下載完成後,解壓壓縮文件至本地某路徑下,例如c:\instantclIEnt 。在此路徑下建立文
件夾NETWORK/ADMIN,在ADMIN文件夾下建立tnsnames.ora文件,文件內容即為希望連
接的數據庫的TNS信息。啟動PL/SQL Developer,點擊Tools->Preferences,在Connection中需要配置如下兩
個參數:
Oracle Home:c:\instantclIEnt
OCI Library:c:\instantclIEnt\oci.dll到此為止,配置工作就基本完成了。現在我們就可以通過用戶名,密碼及實例別名來連
接tnsnames.ora文件中配置過的數據庫了。在查詢包含有中文信息的記錄時,會顯示亂碼,
這時就需要設置環境變量:右擊我的電腦-屬性-高級-環境變量 新建環境變量NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK保存後重新啟動PL/SQL,問題就解決了。 PS:我們也可以在任意路徑下創建tnsnames.ora文件。而不需要如前所述創建
NETWORK/ADMIN文件夾,然後象新建環境變量NLS_LANG一樣新建環境變量TNS_ADMIN
值為tnsnames.ora文件所在路徑。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved