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


本文轉自: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.DEF'offline drop;  (忘了文件名,可以先執行下面的,會有文件名提示的)

數據庫已更改。

SQL> alter database open;

數據庫已更改。

SQL> drop tablespace oradb including contents;

表空間已刪除。

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM