標籤:預存程序 關係 釋放 nbsp variable 過程 csdn 指定 glob
本文轉自:http://www.cnblogs.com/sprinng/p/4616399.html
執行drop user user_name cascade;刪除使用者及使用者,然後又刪除了.dbf檔案,想重新建立使用者然後執行sql指令碼時,出現標題所示的問題,解決方案如下:
SQL> startup mountORA-01081: 無法啟動已在啟動並執行 ORACLE - 請首先關閉它SQL> shutdown immediateORA-01109: 資料庫未開啟已經卸載資料庫。ORACLE 常式已經關閉。SQL> startup mountORACLE 常式已經啟動。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 167775108 bytesDatabase Buffers 436207616 bytesRedo 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(表和索引),同樣的,當段被刪除時,空間會被回收,但資料檔案並不會自動收縮。也就是你說的資料表空間檔案大小沒變
這就有點像表中的高水位:當表中的記錄被刪除,對應的資料區塊中的空間即可用來插入新的資料,但即使整個資料區塊/盤區為空白,也不會被釋放出該表所在的段。形成了高水位
ORA-01109:資料庫未開啟(解決)