2011-09-29 75 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 –