ORA-01114: 将块写入文件 35 时出现 IO 错误
參考文檔:
https://blog.csdn.net/z_x_1000/article/details/17263077
https://www.cnblogs.com/login2012/p/5775602.html
https://www.iteye.com/blog/yangyangcom-2200174
一、問題背景
最開始發現應用服務打不開,于是登錄服務器發現Oracle數據關閉了,按照步驟重啟,但是數據庫啟動后,應用程序還是無法連接數據庫。開始查找原因,原來數據庫表空間出現問題。解決過程中,前后出現了三個問題:
本文分別介紹三個問題的處理過程。
二、問題1-ORA-01219: 數據庫未打開: 僅允許在固定表/視圖中查詢
問題描述:
我們在操作Oracle時常常會遇到一個莫名其妙的問題,首先是用plsql登錄的時候用sys能夠登錄,但是無法操作左邊的表啊,表空間之類的,報錯為ORA-01219: 數據庫未打開: 僅允許在固定表/視圖中查詢
到網上一查應該是某個.dbf文件殘留;或者誤刪除(有意刪除).dbf文件導致出現上述警告
解決方案:
一、首先介紹3種進入sql*plus操作的方式(編輯代碼后續給出)
方式1:登錄到本地sql*plus解決
?
?
以管理員身份登錄,用戶名Scott 密碼為tiger(是具體情況而定)
方式2.登錄當本地網頁版主頁處
utl:http://localhost:1158/em
?
sysdba身份登錄上去,用戶名可以是sys,至于登錄口令是你安裝的時候設置的(哈哈傻了吧,忘了吧。。。)登錄后顯示右邊圖片中的維護,找到sql*plus鏈接處,或者直接點擊下面的sql*plus處
如圖
?
顯示如下sql*plus登錄頁面,登錄時需要以數據庫管理員身份登錄
就可以進入編碼階段了
?
?
方式3.到運行處輸入sqlplus/nolog 命令即可(如果顯示你的命名無效之類的,說明你的Oracle路徑沒配置到path上,路徑配置直參考:C:\oracle\product\10.2.0\db_1\bin)
然后就顯示如下頁面
?
?
二、接下來說到核心了,進入sql*plus可編輯處窗口后即輸入以下編碼(文字可忽略)
1.先鏈接 輸入SQL> conn 用戶名/密碼 as sysdba 參考SQL> conn sys/orcl as sysdba
2.查看你的數據庫信息SQL> select * from v$log;
3.關閉 例程,并卸載了數據庫(放心,不是那個卸載意思,沒事兒!) SQL> shutdown immediate;
4.從啟數據庫,并裝載數據庫 SQL> startup
5.修改數據庫打開方式SQL> alter database open;?
6.SQL> alter database open resetlogs;
三、問題2-ORA-01114: 將塊寫入文件 時出現 IO 錯誤
今天應用服務器后臺報一下錯誤:
2015-04-08 08:59:56,986 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 1114, SQLState: 64000>
2015-04-08 08:59:56,986 ERROR [org.hibernate.util.JDBCExceptionReporter] - <ORA-01114: 將塊寫入文件 ?時出現 IO 錯誤 (塊 # )
ORA-01114: 將塊寫入文件 201 時出現 IO 錯誤 (塊 # 47520)
ORA-27072: 文件 I/O 錯誤
Additional information: 4
Additional information: 47520
Additional information: 65536
在網上找資料說,是數據庫臨時表空間滿了或者壞掉了。
查詢臨時表空間的大小
?select name, bytes/1024/1024 as "大小(M)" from v$tempfile order by bytes;
看到系統中最大數據文件/oradata/esbmonitor/temp01.dbf大小為372M,初步估計是temp表空間無法擴展的原因。
解決辦法:
?
1、查詢該用戶下的默認臨時表空間
?? select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
2、創建新的臨時表空間
?? create temporary tablespace temp01?? tempfile '/oradata/esbmonitor/temp01.dbf'
?? size 1000M autoextend on;
3、修改默認表空間
?? alter database default temporary tablespace temp01;
四、問題3-ORA-01041: 內部錯誤,hostdef 擴展名不存在
在工作中打算將生產環境的數據庫設置成歸檔模式時,遇到的問題。
一、重啟數據庫?
Sql代碼:
也就是在我執行startup mount時報了一個"ORA-01041: 內部錯誤,hostdef 擴展名不存在"這樣的錯誤.?
二、原因:本人頁碰到類似的錯誤,主要是我在toad中執行了sqlpus的命令,關閉了數據庫,此時的監聽也關閉了,然后我直接在服務器上面登錄sqlpus,開啟數據庫,監聽自己開啟,此問題也沒有了。
三、解決辦法:
四、驗證:本人為此做了一個錯誤驗證,電腦A為服務器,電腦B為遠程訪問端服務器處于一切正常狀態,客戶端進行訪問,sys用戶連接到服務器后執行shutdown immediate操作,數據庫正常關閉,此時在服務器端登錄cmd執行lsnrctl stop命令停止oracle監聽服務,停止成功后客戶端再執行startup?mount操作,提示報錯:未啟動監聽(該報錯是正常的),然后在服務器端再執行lsnrctl?start命令啟動oracle監聽服務,啟動成功后客戶端再執行startu?mount操作,就會出現上述所產生的錯誤(ORA-01041: 內部錯誤,hostdef 擴展名不存在),按照上述方法可以解決問題。
總結
以上是生活随笔為你收集整理的ORA-01114: 将块写入文件 35 时出现 IO 错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IC信用卡
- 下一篇: TFS创建团队项目(三)