#oracle #oracle10g #oracle-xe
#Oracle #oracle10g #oracle-xe
Вопрос:
Простая версия этого вопроса такова: возможно ли экспортировать все данные из базы данных Oracle 10g XE, максимальный размер которой достиг 4 ГБ?
Теперь, вот предыстория: моя (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
Я удалил довольно много данных из табличного пространства ПОЛЬЗОВАТЕЛЕЙ, но не могу изменить их размер из-за физического расположения данных. И что бы я ни делал, я всегда получаю тот же результат. Я попытался запустить «Компактное хранилище» из веб-приложения администратора безрезультатно.
Итак, мой вопрос в том, я что-то упускаю? Или Oracle действительно настолько некомпетентна, что людям не повезло, если их базы данных XE заполняются?
Ответ №1:
Вы можете перейти к тому, что вам нужно для экспорта данных, похоже, вам просто нужна помощь в объединении данных, чтобы вы могли уменьшить размер табличного пространства ПОЛЬЗОВАТЕЛЕЙ и увеличить размер системного табличного пространства, чтобы решить вашу проблему.
Вы упомянули, что удалили данные из табличного пространства ПОЛЬЗОВАТЕЛЕЙ, но не можете изменить размер. Поскольку вы не можете уменьшить размер табличного пространства меньше, чем самый высокий блок, реорганизуйте данные таблицы, выполнив следующую команду для каждой таблицы:
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 делает их недействительными, поскольку она изменяет физическую организацию табличных данных (блоков) вместо перемещения строка за строкой.
После объединения данных вы можете изменить размер табличного пространства ПОЛЬЗОВАТЕЛЯ, чтобы отразить размер данных.
Это боль? ДА. Удобен ли Oracle для пользователей? Они хотели бы, чтобы вы так думали, но на самом деле это не так, особенно когда вы сталкиваетесь с каким-то странным угловым случаем, который мешает вам делать то, что вы хотите делать.
Ответ №2:
Как вы можете видеть, вам нужно немного свободного места в системном табличном пространстве для экспорта, а Oracle XE отказывается его выделять, потому что сумма ПОЛЬЗОВАТЕЛЕЙ SYSTEM достигла 4 ГБ.
Я бы попытался установить экземпляр Oracle 10gR2 Standard Edition на аналогичной архитектуре, затем завершить работу Oracle XE и скопировать существующий файл данных ПОЛЬЗОВАТЕЛЕЙ. Используя команды «ИЗМЕНИТЬ ТАБЛИЧНОЕ ПРОСТРАНСТВО» в стандартной версии, вы должны иметь возможность связать табличное пространство ПОЛЬЗОВАТЕЛЕЙ с существующим файлом данных, а затем экспортировать данные.
Комментарии:
1. Значит, мне придется установить совершенно новый экземпляр Oracle 10g Standard Edition (для которого у меня нет лицензии), чтобы я мог обновить свой экземпляр XE с 10g до 11g без потери моих данных? Серьезно?
2. К сожалению, да, потому что ваш 10g XE в настоящее время заполнен. Возможно, вы можете выполнить какую-то аналогичную операцию, используя 11g XE, но я не рекомендую это, вам следует использовать ту же версию Oracle с той же архитектурой, чтобы избежать проблем с совместимостью.
3. Обратите внимание, что, похоже, 11g XE не имеет ограничений на системное табличное пространство, поэтому эта проблема больше не должна возникать: «Ограничения ресурсов такие же, как для версии 10.2, за исключением того, что теперь вы можете хранить до 11 ГБ пользовательских данных ( не включая системные данные Express Edition ), в отличие от4 ГБ в версии 10.2 «. download.oracle.com/docs/cd/E17781_01/admin.112/e18585 /…
4. Вау… Я думаю, что было бы более эффективным использованием моего времени, чтобы просто пожертвовать данными и перестроить то, что я могу, после установки 11g. Кажется, что каждый раз, когда я думаю, что мое мнение о Oracle достигло дна, что-то происходит, чтобы снизить его еще больше.
5. Копировать файлы данных? Переносимые табличные пространства не поддерживаются в XE. Возможно, вам удастся подключить базу данных (файлы данных журналы повтора файлы конфигурации) к двоичным файлам 10g Standard или Enterprise Edition… похоже, это метод, описанный в документах Oracle… download.oracle.com/docs/cd/B25329_01/doc/server.102/b32391 /… … но при обновлении основной версии (10gXE -> 11gXE) я предлагаю экспортировать, а затем импортировать.