Oracel--解決刪除表空間的.DBF文件後,重啓電腦無法打開數據庫問題

表現出的錯誤:

Navicat鏈接oracle數據庫的時候彈出的錯誤信息:
錯誤一:ORA-12541:TNS:no listener
錯誤二:ORA-01033:ORACLE 正在初始化或關閉

錯誤一:解決歷程

找到該文件:進行編輯
 
注意:
  1. SID_NAME的名字是數據庫實例的名字
  2. 對ora文件進行修改後都需要重新啓動監聽服務
  • cmd--命令;lsnrctl stop; lsnrctl start
  • 任務資源管理器--服務--OracelOraDb10g_home1TNSListener
到此第一個問題OK。

驗證:

網上還有一些說法,做的驗證

1、先找(GLOBAL_DBNAME = BJPOWERNODE.COM) 找不到再找SID_NAME?  

(SID_DESC =
    (GLOBAL_DBNAME = BJPOWERNODE.COM)
    (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
    (SID_NAME = BJPOWERNODE)
)
 BJPOWERNODE.COM是服務器的名字,監聽配置的文件中可以不寫這個,也一樣運行成功。
但不寫SID_NAME = BJPOWERNODE,會出現以下(在Lisstener.ora中的參數不正確,指定路徑不存在)錯誤。
找不到對應的oracle服務在服務中用的是數據庫實例的名字

2、HOST = 電腦名稱 要改爲IP嗎?

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-ASVGKT1)(PORT = 1521))
    )
  )
我把HOME = 192.168.1.2 改爲電腦名稱後,在Navicat中主機填寫localhost;IP;127.0.0.1都可以成功登陸

錯誤二:ORA-01033:ORACLE 正在初始化或關閉 

問題原因:刪除了創建表空間時候的.DBF文件,但是刪了文件並不代表表空間也刪了,所以會出現找不到文件的情況,也就鏈接不上數據庫了。

在cmd下輸入如下內容;

C:\Users\Administrator>sqlplus "/as sysdba"
 
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 4 11:51:29 2020
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
 
SQL> shutdown immediate
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
 
SQL>  startup
ORACLE 例程已經啓動。
Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size              92275368 bytes
Database Buffers          192937984 bytes
Redo Buffers                7139328 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 6 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERNACTIVEDB.DBF'
 
SQL> select   name   from  v$datafile;
 
NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\EXAMPLE01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERNACTIVEDB.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERN\DRP.DBF
 
已選擇7行。
 
SQL> alter   database  datafile  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERNACTIVEDB.DBF' offline;
alter   database  datafile  D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERNACTIVEDB.DBF offline
*
第 1 行出現錯誤:
ORA-01145: 除非啓用了介質恢復, 否則不允許立即脫機
 
 
SQL>  alter   database  datafile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BJPOWERNACTIVEDB.DBF'OFFLINE  DROP ;
 
數據庫已更改。
 
SQL> shutdown immediate;
ORA-01109: 數據庫未打開
 
 
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啓動。
 
Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size              92275368 bytes
Database Buffers          192937984 bytes
Redo Buffers                7139328 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL>
PS:
sqlplus "/as sysdba"
以操作系統權限認證的oracle sys管理員登陸
shutdown immediate
馬上關閉開啓的應用(終止當前進程)
 startup
開啓當前應用
select   name   from  v$datafile;
從控制文件中獲取數據庫某基表下的name
alter   database  datafile XXX offline;
offline drop命令相當於把一個數據文件至於離線狀態
alter   database  datafile XXX OFFLINE  DROP ;
是將數據文件的狀態更改爲recover(同上)
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章