2011-09-29 65 views
1

這個問題的簡單版本是:是否可以從已達到4GB最大大小限制的Oracle 10g XE數據庫導出所有數據?我的(Windows)Oracle 10g XE數據庫已達到其最大允許數據庫大小爲4GB。我的(Windows)Oracle 10g XE數據庫已達到其最大允許數據庫大小4GB。我打算實現這個問題的解決方案是升級到Oracle 11g XE,它具有更大的最大容量限制,並且更好地反映了我們的生產環境。當然,在典型的Oracle時尚方面,他們沒有升級原地選項(至少不是我能找到的XE)。因此,我決定遵循Oracle 11g XE安裝指南中的「在10.2 XE和11.2 XE之間導入和導出數據」一節中的說明。經過一段時間與SQLPlus戰鬥後,我最終到達了指示用戶輸入以下內容的步驟3d(它不指定命令行而不是SQLPlus,但它表示命令行):完整的Oracle 10g XE數據庫無法導出?

expdp system/system_password full=Y EXCLUDE=SCHEMA:\"LIKE \'APEX_%\'\",SCHEMA:\"LIKE \'FLOWS_%\'\" directory=DUMP_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log 

該命令的輸出結果如下:

Export: Release 10.2.0.1.0 - Production on Thursday, 29 September, 2011 10:19:11 


Copyright (c) 2003, 2005, Oracle. All rights reserved. 

Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 
ORA-31626: job does not exist 
ORA-31633: unable to create master table "SYSTEM.SYS_EXPORT_FULL_06" 
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 
ORA-06512: at "SYS.KUPV$FT", line 863 
ORA-12952: The request exceeds the maximum allowed database size of 4 GB 

我已刪除了不少來自用戶的表空間的數據,但我無法調整它的大小,因爲數據的物理位置。無論我做什麼,我都會得到相同的輸出。我試圖從管理Web應用程序運行「Compact Storage」而沒有任何效果。

所以我的問題是,我錯過了什麼?或者,如果甲骨文XE數據庫填滿了,甲骨文真的太無能爲力了,讓人們完全失去運氣?

回答

4

您可以達到您需要導出數據的程度,聽起來您只需要一些幫助合併數據的幫助,以便您可以減少USERS表空間大小並增加SYSTEM表空間大小以克服您的問題。

您提到您已從USERS表空間中刪除數據,但無法調整大小。既然你不能比減少最高塊表空間大小,通過爲每個表執行以下命令reorganiza您的表中的數據:

ALTER TABLE <table_name> MOVE <tablespace_name>; 

表空間名稱可以是表目前住在同一個表空間,它仍會重新組織數據併合並數據。

這種說法會給你這個命令的文本生活在USERS表空間中的所有表:

select 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' MOVE '||TABLESPACE_NAME||';' From dba_tables where tablespace_name='USERS'; 

指數也將進行重建(ALTER INDEX REBUILD;)作爲MOVE命令無效它們因爲它改變了表數據(塊)的物理組織,而不是逐行重定位。

數據合併後,您可以調整USERS表空間以反映數據大小。

這是痛苦嗎?是。 Oracle用戶友好嗎?他們會喜歡你這樣想,但實際上並非如此,特別是當你遇到一些讓你無法完成你想做的事情的奇怪角落案例時。

1

正如您所看到的,爲了導出,您需要SYSTEM表空間中的一些可用空間,而Oracle XE拒絕分配它,因爲SYSTEM + USERS的總和已達到4 Gb。

我會嘗試在類似的體系結構上安裝Oracle 10gR2標準版實例,然後關閉Oracle XE並複製您現有的USERS數據文件。在標準版上使用「ALTER TABLESPACE」命令,您應該能夠將USERS表空間鏈接到現有數據文件,然後導出數據。

+0

因此,我將不得不安裝一個全新的Oracle 10g標準版實例(爲此我沒有許可證),這樣我就可以將我的XE實例從10g升級到11g而不會丟失我的數據?真的嗎? –

+0

不幸的是,因爲您的10g XE當前已滿。也許你可以使用11g XE執行一些類似的操作,但我不推薦它,你應該使用具有相同體系結構的相同Oracle版本來避免兼容性問題。 –

+0

請注意,似乎11g XE對SYSTEM表空間沒有限制,因此不應再出現此問題:「資源限制與版本10.2相同,只是現在可以存儲高達11 GB的用戶數據( **不包括Express Edition系統數據**),而不是10.2版本中的4 GB。「 http://download.oracle.com/docs/cd/E17781_01/admin.112/e18585/toc.htm#BJFEIJGJ –