1. 程式人生 > >ORA-01109:數據庫未打開(解決)

ORA-01109:數據庫未打開(解決)

sys 消失 byte ora span color 運行 log 回收

本文轉自:http://www.cnblogs.com/sprinng/p/4616399.html

執行drop user user_name cascade;刪除用戶及用戶,然後又刪除了.dbf文件,想重新創建用戶然後執行sql腳本時,出現標題所示的問題,解決方法如下:

SQL> startup mount

ORA-01081: 無法啟動已在運行的 ORACLE - 請首先關閉它
SQL> shutdown immediate
ORA-01109: 數據庫未打開

已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area 
612368384 bytes Fixed Size 1250428 bytes Variable Size 167775108 bytes Database Buffers 436207616 bytes Redo Buffers 7135232 bytes 數據庫裝載完畢。 SQL> alter database datafile F:\ORADB.DEFoffline drop; (忘了文件名,可以先執行下面的,會有文件名提示的) 數據庫已更改。 SQL> alter database open; 數據庫已更改。 SQL> drop tablespace oradb including contents; 表空間已刪除。

另:刪除用戶對表空間的影響http://bbs.csdn.net/topics/390805356

項目中發現一個疑問。就是Oracle在創建用戶的時候,如果用戶使用的是自己創建的表空間來存放數據,那麽Oracle在刪除此用戶的時候對應的此表空間中數據是否也一並刪除? 但是實際測試發現用戶刪除了但是對應的表空間的數據卻沒有刪除,因為表空間文件大小根本沒變。這是為什麽?我有一點自己的理解,但是對Oracle實現原理不是很了解所以不敢妄自發表意見,請各位高手談談各自的看法。

表空間和用戶沒有直接關系,你創建或者刪除用戶都不會影響表空間。
表空間只是一個容器,用來存放表,索引,存儲過程等。

樓上是對的。用戶和表空間沒有必然聯系。刪除一張表,一般情況下這張表會進入所屬用戶的回收站,如果是刪除用戶,數據會徹底消失,因為回收站隨用戶一起不見了。


當你創建一個表空間時,可以給對應的數據文件指定一個大小,系統會將磁盤空間以指定的格式初始化分配給數據文件,這時候數據文件中的空間並未被分配給segment(表和索引),同樣的,當段被刪除時,空間會被回收,但數據文件並不會自動收縮。也就是你說的表空間文件大小沒變
這就有點像表中的高水位:當表中的記錄被刪除,對應的數據塊中的空間即可用來插入新的數據,但即使整個數據塊/盤區為空,也不會被釋放出該表所在的段。形成了高水位

ORA-01109:數據庫未打開(解決)