2011-09-29 2 views
1

Простая версия этого вопроса: возможно ли экспортировать все данные из базы данных Oracle 10g XE, достигшей максимального предела в 4 ГБ?Полная база данных Oracle 10g XE не может быть экспортирована?

Теперь, вот фон: My (Windows) База данных Oracle 10g XE достигла максимально допустимой базы данных размером 4 ГБ. Решение, которое я намеревался реализовать для этой проблемы, состояло в том, чтобы перейти на Oracle 11g XE с максимальным максимальным лимитом и в любом случае лучше отразить нашу производственную среду. Разумеется, в обычном режиме Oracle у них нет опции обновления на месте (по крайней мере, этого я не мог найти для XE). Поэтому я решил следовать инструкциям в разделе «Импорт и экспорт данных между 10.2 XE и 11.2 XE» в руководстве по установке Oracle 11g XE. После некоторого времени сражаясь с SQLPlus, я в конце концов достиг шага 3d инструкций, который инструктирует пользователя ввести следующее (он не указывает командную строку, а не SQLPlus, но это означает, что в командной строке):

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 

Я удалил совсем немного данных из табличного пространства USERS, но не может изменить его из-за физическое расположение данных. И независимо от того, что я делаю, я всегда получаю тот же результат. Я попытался запустить «Компактное хранилище» из веб-приложения admin без эффекта.

Так что мой вопрос: я чего-то не хватает? Или Oracle настолько некомпетентен, что оставляет людей совершенно не повезло, если их базы данных XE заполняются?

ответ

4

Вы можете получить информацию о том, что вам нужно экспортировать данные, например, вам просто нужна помощь, чтобы объединить данные, чтобы уменьшить размер табличного пространства USERS и увеличить размер табличного пространства SYSTEM, чтобы преодолеть вашу проблему.

Вы упомянули, что вы удалили данные из табличного пространства USERS, но не можете изменять размер. Поскольку вы не можете уменьшить размер табличного пространства меньше, чем самый высокий блок, reorganiza данные таблицы, выполнив следующую команду для каждой таблицы:

ALTER TABLE <table_name> MOVE <tablespace_name>; 

Имя табличного может быть таким же табличного, что таблица в настоящее время живет, он все равно будет реорганизовать данные и объединить данные.

Это утверждение даст вам текст для этой команды для всех таблиц, которые живут в ПОЛЬЗОВАТЕЛЯХ табличный:

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 Гб.

Я бы попытался установить экземпляр Oracle 10gR2 Standard Edition на аналогичную архитектуру, затем выключить Oracle XE и сделать копию существующего файла данных USERS. Используя команды «ALTER TABLESPACE» в стандартной версии, вы должны уметь связывать табличное пространство USERS с вашим существующим файлом данных, а затем экспортировать данные.

+0

Так что мне пришлось бы установить совершенно новый экземпляр Oracle 10g Standard Edition (для которого у меня нет лицензии), чтобы я мог обновить свой экземпляр XE с 10 до 11 г, не потеряв мои данные? Шутки в сторону? –

+0

К сожалению, да, потому что ваш 10g XE в настоящее время заполнен. Возможно, вы можете выполнить некоторую аналогичную операцию с использованием 11g XE, но я не рекомендую ее, вы должны использовать ту же версию Oracle с той же архитектурой, чтобы избежать проблем с совместимостью. –

+0

Обратите внимание, что, по-видимому, 11G XE не имеет ограничений на табличное пространство SYSTEM, поэтому эта проблема больше не должна возникать: «Ограничения ресурсов такие же, как и для версии 10.2, за исключением того, что теперь вы можете хранить до 11 ГБ пользовательских данных (** не включая системные данные Express Edition **), а не 4 ГБ в версии 10.2. " http://download.oracle.com/docs/cd/E17781_01/admin.112/e18585/toc.htm#BJFEIJGJ –