windows xp,資料庫oracle 10.2.0。1
沒有備份,基本上是預設安裝,好像還不是歸檔模式
癥狀:sqlplus只有sysdba使用者能進去,其他使用者進去一概報:ora-01033:oracle正在初始化或關閉
而且sysdba使用者進去之後能執行select sysdate from dual,但是執行select usernam from all_users就
報錯了,ORA-01219: 資料庫未開啟: 僅允許在固定表/視圖中查詢
關閉資料庫
shutdown abort
啟動
sqlplus / as sysdba
startup
啟動資訊如下:
SQL> startup
ORACLE 常式已經啟動。
Total System Global Area 293601280 bytes
Fixed Size 1248624 bytes
Variable Size 121635472 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1:
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF'
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案
在樓上兄弟們的協助下終於把資料庫恢複,再次感謝上面的兄弟們,和推薦我來這邊的兄弟
以下將解決方案共用一下,其實樓上的兄弟們說的基本上都是對的,只是說的還不夠詳細和具體,因此對我這種菜菜還是有點困難的
ORA-01207:檔案比控制檔案更新 - 舊的控制檔案
根據oracle文檔的解釋:
Cause: The control file change sequence number in the datafile is greater than the number in the control file. This implies that the wrong control file is being used. Note that repeatedly causing this error can make it stop happening without correcting the real problem. Every attempt to open the database will advance the control file change sequence number until it is great enough.
Action: Use the current control file or do BACKUP CONTROLFILE RECOVERY to make the control file current. Be sure to follow all restrictions on doing a BACKUP CONTROLFILE RECOVERY.
Solution:
1. Check alert file,kill monitor process
2. Startup mount,
3. “alter database backup control to trace”
4. Find the trace file,and open it
5. Startup nomount
6. recreate controlfile using resetlogs
7. “recover database using backup controlfile”
8. “alter database open resetlogs;”
9. “alter tablespace temp add tempfile '.dbf' reuse;”
其實跟樓上的兄弟們說的差不多,以下再詳細步驟:
1.SQL>shutdown abort 如果資料庫是開啟狀態,強行關閉
2.SQL>sqlplus / as sysdba
3.SQL>startup
ORACLE 常式已經啟動。
Total System Global Area 293601280 bytes
Fixed Size 1248624 bytes
Variable Size 121635472 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1:
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF'
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案
4.SQL>alter database backup controlfile to trace as 'f:aa';
資料庫已更改。
5.SQL>shutdown immediate 如果資料庫是開啟狀態,則關閉
ORA-01109: 資料庫未開啟
已經卸載資料庫
6.SQL>startup nomount;
ORACLE 常式已經啟動。
Total System Global Area 105979576 bytes
Fixed Size 454328 bytes
Variable Size 79691776 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
7.Editplus之類的編輯器開啟在第四步產生的f:aa檔案;
其實在這個檔案中的已經告訴你咋樣恢複你的資料庫了,找到STARTUP NOMOUNT字樣,然後下面可以看到類似語句,這個檔案有好幾個類似的產生控制檔案語句,主要針對不懂的環境執行不同的語句,象我的資料庫沒有做任何備份,也不是在歸檔模式,就執行這句
CREATE CONTROLFILE REUSE DATABASE "ORCLDW" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO01.LOG' SIZE 50M,
GROUP 2 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO02.LOG' SIZE 50M,
GROUP 3 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO03.LOG' SIZE 50M
DATAFILE
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWUNDOTBS01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSAUX01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWUSERS01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWEXAMPLE01.DBF'
CHARACTER SET ZHS16GBK
;
執行上面這段語句,這個語句重建控制檔案,然後你可以看著f:aa檔案完成下面的恢複工作了,
8.SQL>RECOVER DATABASE (恢複指定資料表空間、資料檔案或整個資料庫)
9.SQL>ALTER DATABASE OPEN 開啟資料庫
恭喜你,你的資料庫出院了,itpub真是妙手回春阿
如果不行,那隻能說明一個問題,你實在太背了, 趕緊發帖求醫:)
(注意:
資料庫的啟動(STARTUP)
啟動一個資料庫需要三個步驟:
1、 建立一個Oracle執行個體(非安裝階段)
2、 由執行個體安裝資料庫(安裝階段)
3、 開啟資料庫(開啟階段)
在Startup命令中,可以通過不同的選項來控制資料庫的不同啟動步驟。
1、STARTUP NOMOUNT
NONOUNT選項僅僅建立一個Oracle執行個體。讀取init.ora初始化參數檔案、啟動後台進程、初始化系統全域區(SGA)。Init.ora檔案定義了執行個體的配置,包括記憶體結構的大小和啟動後台進程的數量和類型等。執行個體名根據Oracle_SID設定,不一定要與開啟的資料庫名稱相同。當執行個體開啟後,系統將顯示一個SGA記憶體結構和大小的列表
2.STARTUP MOUNT
該命令建立執行個體並且安裝資料庫,但沒有開啟資料庫。Oracle系統讀取控制檔案中關於資料檔案和重作記錄檔的內容,但並不開啟該檔案。這種開啟檔案常在資料庫維護操作中使用,如對資料檔案的更名、改變重作日誌以及開啟歸檔方式等。在這種開啟檔案下,除了可以看到SGA系統列表以外,系統還會給出"資料庫裝載完畢"的提示。
3.STARTUP
該命令完成建立執行個體、安裝執行個體和開啟資料庫的所有三個步驟。此時資料庫使資料檔案和重作記錄檔線上,通常還會請求一個或者是多個復原段。這時系統除了可以看到前面Startup Mount方式下的所有提示外,還會給出一個"資料庫已經開啟"的提示。此時,資料庫系統處於正常工作狀態,可以接受使用者請求。
如果採用STARTUP NOMOUNT或者是STARTUP MOUNT的資料庫開啟命令方式,必須採用ALTER DATABASE命令來執行開啟資料庫的操作。例如,如果你以STARTUP NOMOUNT方式開啟資料庫,也就是說執行個體已經建立,但是資料庫沒有安裝和開啟。這是必須運行下面的兩條命令,資料庫才能正確啟動。
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
而如果以STARTUP MOUNT方式啟動資料庫,只需要運行下面一條命令即可以開啟資料庫:
ALTER DATABASE OPEN.
4、其他開啟檔案
除了前面介紹的三種資料庫開啟檔案選項外,還有另外其他的一些選項。
(1) STARTUP RESTRICT
這種方式下,資料庫將被成功開啟,但僅僅允許一些特權使用者(具有DBA角色的使用者)才可以使用資料庫。這種方式常用來對資料庫進行維護,如資料的匯入/匯出操作時不希望有其他使用者串連到資料庫操作資料。
(2) STARTUP FORCE
該命令其實是強行關閉資料庫(shutdown abort)和啟動資料庫(startup)兩條命令的一個綜合。該命令僅在關閉資料庫遇到問題不能關閉資料庫時採用。
(3) ALTER DATABASE OPEN READ ONLY;
該命令在建立執行個體以及安裝資料庫後,以唯讀方式開啟資料庫。對於那些僅僅提供查詢功能的產品資料庫可以採用這種方式開啟。
)
轉載自:http://percywang.itpub.net/post/25150/241574