Как правильно удалить файлы данных табличного пространства в Oracle?
Как правильно удалить файлы данных табличного пространства в Oracle?

DROP DATAFILE

Вы можете использовать следующую команду для удаления файлов данных в табличном пространстве:

Язык кода:javascript
копировать
ALTER TABLESPACE TS_DD_LHR DROP DATAFILE n; --n — номер файла данных
ALTER TABLESPACE TS_DD_LHR DROP DATAFILE '/tmp/ts_dd_lhr01.dbf';

Есть несколько замечаний по поводу этой команды:

① Этот оператор удалит файл на диске и обновит информацию в управляющем файле и словаре данных. Исходный серийный номер файла данных после удаления можно использовать повторно.

② Это утверждение можно использовать только в том случае, если соответствующий файл данных находится в режиме ОНЛАЙН. Если соответствующий файл данных находится в режиме OFFLINE, он доступен только для табличного пространства, управляемого по словарю (DMT), но не может использоваться для локально управляемого табличного пространства (LMT), в противном случае будет сообщено об ошибке «ORA-03264»: невозможно удалить автономный файл данных локально управляемое табличное пространство». Если файл данных находится в состоянии RECOVER, эту команду все равно нельзя использовать.

③ Вы не можете удалить первый файл данных, добавленный в табличное пространство, иначе будет сообщено об ошибке, например «ORA-03263: невозможно удалить первый файл табличного пространства TS_DD_LHR».

④Если табличное пространство содержит только один файл данных, файл данных не может быть удален, в противном случае будет сообщено об ошибке, например «ORA-03261: табличное пространство TS_DD_LHR имеет только один файл».

⑤Файл данных должен быть пустым, иначе будет сообщено: ORA-03262: файл непустой. Следует отметить, что значение непустого значения заключается в том, что ТАБЛИЦЕ назначается ЭКСТЕНТ, а не наличие в ТАБЛИЦЕ СТРОК. В настоящее время, если вы используете «DROP TABLE XXX;», это не сработает, вы должны использовать. «DROP TABLE XXX PURGE;» или используйте «PURGE TABLE» после использования «DROP TABLE XXX;» «Имя таблицы XXX в корзине»;», чтобы удалить таблицу в корзине, иначе место не будет освобождено и файл данных все равно не будет подлежит удалению.

⑥ Файлы данных табличного пространства СИСТЕМА не могут быть удалены, в противном случае будет сообщено об ошибке «ORA-01541: системное табличное пространство невозможно перевести в автономный режим; при необходимости выключите».

Следует отметить, что согласно официальной документации файлы данных табличного пространства в состоянии READ ONLY не могут быть удалены, однако эксперименты доказали, что их действительно можно удалить.

Чтобы удалить файлы данных, перейдите по ссылке: https://www.xmmup.com/oraclesuoxiaobiaokongjandefangfa.html.

Невозможно удалить файл данных из табличного пространства с помощью команды Alter Tablespace (код ID 1050261.1)

Разница между OFFLINE и OFFLINE DROP

Аналогично удалению файлов данных существуют следующие команды («ИМЯ_ФАЙЛА» также можно заменить номером файла):

Язык кода:javascript
копировать
ALTER DATABASE DATAFILE 'FILE_NAME' OFFLINE;
ALTER DATABASE DATAFILE 'FILE_NAME' OFFLINE FOR DROP;--FOR также можно опустить

Следует отметить, что эта команда не удаляет файл данных, а лишь меняет статус файла данных на ВОССТАНОВЛЕНИЕ. Команда OFFLINE FOR DROP эквивалентна переводу файла данных в автономный режим и требует восстановления, а не удаления файла данных. Соответствующая информация о файлах данных также будет храниться в словаре данных и управляющих файлах.

Для режима архива нет разницы между «OFFLINE FOR DROP» и «OFFLINE», поскольку Oracle игнорирует опцию FOR DROP. Потому что после ОФФЛАЙН вам необходимо выполнить ВОССТАНОВЛЕНИЕ, прежде чем вы сможете перейти в ОНЛАЙН.

В режиме без архивирования можно выполнить только «OFFLINE FOR DROP». Если опция FOR DROP не добавлена, будет сообщено об ошибке «ORA-01145: немедленная работа в автономном режиме запрещена, если не включено восстановление носителя». Потому что в неархивном режиме нет архивного файла для выполнения операции ВОССТАНОВЛЕНИЯ. Если после OFFLINE скорость достаточно высокая и данные в онлайн-файле журнала Redo не были перезаписаны, то в этом случае операцию RECOVER все равно можно выполнить.

Восстановление после удаления файлов данных на уровне ОС

Если используется“ALTER DATABASE DATAFILE N OFFLINE DROP;”Заказ,Файл данных не будет удален.,В настоящее время вы можете сначала выйти в ОНЛАЙН, а затем использовать «ALTER». TABLESPACE XXX DROP DATAFILE N;”удалить.Если выполнено“ALTER DATABASE DATAFILE N OFFLINE DROP;”позже и вOSуровеньудалить Понятноданныедокумент,Тогда сначала вам нужно использовать“ALTER DATABASE CREATE DATAFILE N AS '/tmp/ts_dd_lhr02.dbf';”добавитьданныедокумент,Затем выполните RECOVER и ONLINE, а затем используйте команду «ALTER TABLESPACE XXX DROP DATAFILE N;», если сгенерированный бревно файл утерян.,Тогда целевой файл уже невозможно будет восстановить.,В настоящее время табличное пространство можно только удалить.,Заказдля:“DROP TABLESPACE XXX INCLUDING CONTENTS AND DATAFILES;”。

Пример 10 г выглядит следующим образом:

Язык кода:javascript
копировать
SYS@ora10g> create tablespace ts_dd_lhr datafile '/tmp/ts_dd_lhr01.dbf' size 10M;

Tablespace created.

SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf'
*
ERROR at line 1:
ORA-03261: the tablespace TS_DD_LHR has only one file


SYS@ora10g> alter tablespace ts_dd_lhr add datafile '/tmp/ts_dd_lhr02.dbf' size 10M;

Tablespace altered.

SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf'
*
ERROR at line 1:
ORA-03263: cannot drop the first file of tablespace TS_DD_LHR


SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';

Tablespace altered.

SYS@ora10g> ! ls -l /tmp/ts_dd_lhr0*
-rw-r----- 1 oracle oinstall 10493952 Jun 29 14:58 /tmp/ts_dd_lhr01.dbf


-------------------------------------------------- 

SYS@ora10g>  alter tablespace ts_dd_lhr add datafile '/tmp/ts_dd_lhr02.dbf' size 10M;

Tablespace altered.

SYS@ora10g> alter database datafile '/tmp/ts_dd_lhr02.dbf' offline drop;

Database altered.

SYS@ora10g> ! ls -l /tmp/ts_dd_lhr02.dbf
-rw-r----- 1 oracle oinstall 10493952 Jun 29 15:17 /tmp/ts_dd_lhr02.dbf


SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf'
*
ERROR at line 1:
ORA-03264: cannot drop offline datafile of locally managed tablespace


SYS@ora10g> alter database datafile '/tmp/ts_dd_lhr02.dbf' online;
alter database datafile '/tmp/ts_dd_lhr02.dbf' online
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/tmp/ts_dd_lhr02.dbf'


SYS@ora10g> recover datafile 9;
Media recovery complete.
SYS@ora10g> alter database datafile '/tmp/ts_dd_lhr02.dbf' online;

Database altered.

SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';

Tablespace altered.

SYS@ora10g> ! ls -l /tmp/ts_dd_lhr02.dbf
ls: cannot access /tmp/ts_dd_lhr02.dbf: No such file or directory





SYS@orclasm > create table t_ts_dd_lhr tablespace ts_dd_lhr as select * from dual;

Table created.

SYS@orclasm > truncate table t_ts_dd_lhr;

Table truncated.

SYS@orclasm > 
SYS@orclasm > alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf'
*
ERROR at line 1:
ORA-03262: the file is non-empty


SYS@orclasm > drop table t_ts_dd_lhr;

Table dropped.

SYS@orclasm > alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf'
*
ERROR at line 1:
ORA-03262: the file is non-empty


SYS@orclasm > purge recyclebin;

Recyclebin purged.

SYS@orclasm > alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';

Tablespace altered.







SYS@ora10g> create tablespace ts_dd_lhr datafile '/tmp/ts_dd_lhr01.dbf' size 10M;


alter tablespace ts_dd_lhr add datafile '/tmp/ts_dd_lhr02.dbf' size 10M;

Tablespace created.

SYS@ora10g> SYS@ora10g> SYS@ora10g> 
Tablespace altered.

SYS@ora10g> 
SYS@ora10g> alter tablespace ts_dd_lhr  read only; 

Tablespace altered.

SYS@ora10g> select * from  dba_tablespaces;

TABLESPACE_NAME                 STATUS    CONTENTS  LOGGING   
------------------------------  --------- --------- --------- 
SYSTEM                          ONLINE    PERMANENT LOGGING   
UNDOTBS1                        ONLINE    UNDO      LOGGING   
SYSAUX                          ONLINE    PERMANENT LOGGING   
TEMP                            ONLINE    TEMPORARY NOLOGGING 
USERS                           ONLINE    PERMANENT LOGGING   
EXAMPLE                         ONLINE    PERMANENT NOLOGGING 
TS10GTEST                       ONLINE    PERMANENT LOGGING   
HHRIS                           ONLINE    PERMANENT LOGGING   
TS_DD_LHR                       READ ONLY PERMANENT LOGGING   
9 rows selected.

SYS@ora10g> 
SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf';
alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf'
*
ERROR at line 1:
ORA-03263: cannot drop the first file of tablespace TS_DD_LHR


SYS@ora10g> 
SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr02.dbf';

Tablespace altered.

SQL>select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME   FILE_NAME                                          
----------------- ---------------------------------------------------
SYSTEM            +DATA/oraee/datafile/system.260.870970687          
SYSAUX            +DATA/oraee/datafile/sysaux.261.870970721          
UNDOTBS1          +DATA/oraee/datafile/undotbs1.262.870970751        
UNDOTBS2          +DATA/oraee/datafile/undotbs2.264.870970801        
USERS             +DATA/oraee/datafile/users.265.870970831           
EXIMTRX           +DATA/oraee/datafile/eximtrx.270.871293623         
EXIMUSER          +DATA/oraee/datafile/eximuser.271.871293631        
TS_EXIMTRX        +DATA/oraee/datafile/ts_eximtrx.272.890144851      
TS_EXIMTRX        +DATA/oraee/datafile/ts_eximtrx.273.890146243      
TS_EXIMUSER       +DATA/oraee/datafile/ts_eximuser.274.892913553     
TS_EXIMUSER       /oracle/app/oracle/product/11.2.0/db/dbs/+DATAA   

11г операция:

Язык кода:javascript
копировать
SQL>alter tablespace TS_EXIMUSER drop datafile '/oracle/app/oracle/product/11.2.0/db/dbs/+DATAA'; ---->Непризнанныйданныедокумент

SQL>alter database datafile 11 offline drop;   

SQL> select file#,status,ts# from v$datafile;

     FILE# STATUS         TS#                
---------- ------- ----------                
         1 SYSTEM           0                
         2 ONLINE           1                
         3 ONLINE           2                
         4 ONLINE           4                
         5 ONLINE           5                
         6 ONLINE           6                
         7 ONLINE           7                
         8 ONLINE           8                
         9 ONLINE           8                
        10 ONLINE          13                
        11 RECOVER         13   ----------> 

SQL> recover datafile 11;                    
Media recovery complete. 

SQL> select file#,status,ts# from v$datafile;

     FILE# STATUS         TS#                
---------- ------- ----------                
         1 SYSTEM           0                
         2 ONLINE           1                
         3 ONLINE           2                
         4 ONLINE           4                
         5 ONLINE           5                
         6 ONLINE           6                
         7 ONLINE           7                
         8 ONLINE           8                
         9 ONLINE           8                
        10 ONLINE          13                
        11 OFFLINE         13 

SQL> alter database datafile 11 online;                            

Database altered.                                   

SQL> select file#,status,ts# from v$datafile;       

     FILE# STATUS         TS#                       
---------- ------- ----------                       
         1 SYSTEM           0                       
         2 ONLINE           1                       
         3 ONLINE           2                       
         4 ONLINE           4                       
         5 ONLINE           5                       
         6 ONLINE           6                       
         7 ONLINE           7                       
         8 ONLINE           8                       
         9 ONLINE           8                       
        10 ONLINE          13                       
        11 ONLINE          13  ----->данныедокументдолжно быть вONLINEсостояние                     

11 rows selected.                                   

SQL> alter tablespace  TS_EXIMUSER drop datafile 11;

Tablespace altered.                                 

SQL> select file#,status,ts# from v$datafile;       

     FILE# STATUS         TS#                       
---------- ------- ----------                       
         1 SYSTEM           0                       
         2 ONLINE           1                       
         3 ONLINE           2                       
         4 ONLINE           4                       
         5 ONLINE           5                       
         6 ONLINE           6                       
         7 ONLINE           7                       
         8 ONLINE           8                       
         9 ONLINE           8                       
        10 ONLINE          13                       

10 rows selected.                                   

Как обращаться с данными, содержащимися в файлах данных

Если в файле данных есть данные, их необходимо сначала перенести и перестроить индекс.

Язык кода:javascript
копировать
1、Проверьте, есть лиданные:SQL> select owner,segment_name,tablespace_name from dba_extents where file_id=6;
2、ALTER TABLE table_name MOVE TABLESPACE tablespace_name;
3、index_rebuild
4、alter tablespace TT_TEST drop datafile 6;

Кроме того, если данные больше не нужны, вы можете рассмотреть возможность удаления соответствующей схемы. См. https://www.xmmup.com/oraclesuoxiaobiaokongjiandefangfa.html.

boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]