日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORA-01114: 将块写入文件 35 时出现 IO 错误

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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數據關閉了,按照步驟重啟,但是數據庫啟動后,應用程序還是無法連接數據庫。開始查找原因,原來數據庫表空間出現問題。解決過程中,前后出現了三個問題:

  • ORA-01219: 數據庫未打開: 僅允許在固定表/視圖中查詢
  • ORA-01114: 將塊寫入文件 時出現 IO 錯誤
  • ORA-01041: 內部錯誤,hostdef 擴展名不存在
  • 本文分別介紹三個問題的處理過程。

    二、問題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代碼:

  • shutdown?immediate;??
  • startup?mount;??
  • 也就是在我執行startup mount時報了一個"ORA-01041: 內部錯誤,hostdef 擴展名不存在"這樣的錯誤.?

    二、原因:本人頁碰到類似的錯誤,主要是我在toad中執行了sqlpus的命令,關閉了數據庫,此時的監聽也關閉了,然后我直接在服務器上面登錄sqlpus,開啟數據庫,監聽自己開啟,此問題也沒有了。

    三、解決辦法:

  • 關掉當前的sqlplus窗口
  • 打開cmd窗口,輸入sqlplus /nolog
  • conn /as sysdba;
  • startup; 即可
  • 四、驗證:本人為此做了一個錯誤驗證,電腦A為服務器,電腦B為遠程訪問端服務器處于一切正常狀態,客戶端進行訪問,sys用戶連接到服務器后執行shutdown immediate操作,數據庫正常關閉,此時在服務器端登錄cmd執行lsnrctl stop命令停止oracle監聽服務,停止成功后客戶端再執行startup?mount操作,提示報錯:未啟動監聽(該報錯是正常的),然后在服務器端再執行lsnrctl?start命令啟動oracle監聽服務,啟動成功后客戶端再執行startu?mount操作,就會出現上述所產生的錯誤(ORA-01041: 內部錯誤,hostdef 擴展名不存在),按照上述方法可以解決問題。

    總結

    以上是生活随笔為你收集整理的ORA-01114: 将块写入文件 35 时出现 IO 错误的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。