Oracle как удалить datafile
Как «удалить» файл данных из табличного пространства
В этой статье описывается, как удалить файлы данных из базы данных. потому что ALTER DATABASE DATAFILE OFFLINE DROP Команды могут легко привести к путанице при удалении файлов данных, поэтому эта статья также представляет OFFLINE DROP Что на самом деле означает команда
В двух ситуациях вам может потребоваться «удалить» файл данных из табличного пространства.
1. Вы случайно добавили файл данных в табличное пространство или задали слишком большой размер файла, поэтому хотите его удалить.
2. Вы восстанавливаете, и вы не можете запустить базу данных, потому что вы потеряли файл данных.
Эта статья в основном посвящена первому случаю: есть другие статьи о проблеме восстановления базы данных, которые нельзя использовать из-за отсутствующих файлов данных.
Прежде чем мы углубимся в детали, мы должны прояснить: Oracle Не предоставляет таблицы, такие как удаление. Метод удаления файла данных аналогичен представлению: файл данных является частью табличного пространства, поэтому табличное пространство не может быть «удалено».
На табличном пространстве / Перед выполнением автономного режима или удалением файлов данных сначала выполните полное резервное копирование базы данных.
Если файл данных является единственным файлом данных в табличном пространстве, вы можете просто удалить табличное пространство:
Команда приходит от Oracle Словарь данных удаляет содержимое табличных пространств, файлов данных и табличных пространств. Oracle Ничто в этом табличном пространстве не будет доступно. Затем заново создайте табличное пространство и повторно импортируйте данные.
Вы можете выполнить следующую команду, чтобы запросить, сколько файлов данных содержится в табличном пространстве.
DROP TABLESPACE Команда от Oracle Словарь данных удаляет содержимое табличных пространств, файлов данных и табличных пространств. Oracle Ничто в этом табличном пространстве не будет доступно. Физическое удаление файлов требует команд операционной системы ( Oracle Никогда физически не удаляйте файлы < Примечание: эта статья для 8i Или раньше, 9i Можно использовать including datafile Возможность удалить физические файлы >), В зависимости от платформы операционной системы, некоторые операционные системы требуют Oracle Можно удалить только полностью (например, в WINDOWS NT Необходимо закрыть базу данных и остановить соответствующие службы, в некоторых случаях Oracle Может также хранить блокировки файлов).
Если в вашем табличном пространстве есть несколько файлов данных, и вам необходимо сохранить содержимое других файлов данных в табличном пространстве, вы должны сначала export Распечатайте все в табличном пространстве. Чтобы определить, что содержит табличное пространство, выполните:
export Узнайте, что вы хотите сохранить. если export В конце вы можете использовать DROP TABLESPACE tablespace INCLUDING CONTENTS. , Таким образом, содержимое табличного пространства удаляется безвозвратно, команды операционной системы используются для физического удаления файла данных, воссоздания табличного пространства в соответствии с требуемым файлом данных, import К табличному пространству.
ALTER DATABASE DATAFILE OFFLINE DROP Команда не позволяет удалять файл данных, ее цель - перевести файл данных в автономный режим, чтобы удалить табличное пространство. Если в режиме архива, используйте ALTER DATABASE DATAFILE OFFLINE DROP вместо OFFLINE DROP , Когда файл данных находится в автономном режиме, Oracle К содержимому файла данных больше нет доступа, но он все равно будет частью табличного пространства. Этот файл данных отмечен в контрольном файле OFFLINE , Это не будет выполнено с контрольным файлом при запуске базы данных SCN Сравнение. Сохранение этой записи файла данных в контрольном файле удобно для последующего восстановления.
Если вы не хотите удалять табличное пространство, как указано выше, есть другие решения.
1. Если вы хотите удалить файл данных из-за неправильного распределения размера файла, вы можете рассмотреть RESIZE Command.
2. Если вы случайно добавили файл данных, и этому файлу не было выделено место, вы можете использовать
ALTER DATABASE DATAFILE RESIZE; Команда, чтобы сделать это меньше, чем 5 Oracle Размер блока, если размер файла данных меньше, чем этот, Oracle Расширенные файлы данных не будут выполняться. В будущем Oracle Вы можете удалить этот неверный файл при перестройке.
По наивности думал, что при удалении table space через интерфейс PL-SQL developer 12
автоматически удалятся data файлы, которые в нем.
НО они остались.
Теперь пытаюсь найти способ удаления tada файлов без table space.
Существует ли такой?
Корректно ли все будет дальше с инстансом Oracle, если их просто удалить на уровне ОС?
если выполнить этот select от SYS
он их не находит.
- Вопрос задан более трёх лет назад
- 2433 просмотра
Оценить 2 комментария
Проверь что датафайле ничего нет:
Затем удали датафайл:
Если БД работает под ОС windows, то скорее всего датафайл удалиться из БД, но останется в файловой системе. При попытке удалить его средствами ОС получишь ошибку, что файл используется. Удалить его получиться только после перезагрузки БД.
Если перезапускать БД нельзя, то можно просто уменьшить размер датафайла и удалить его как-нибудь потом.
Если база тестовая, то можно воспользоваться например утилитой unlocker для разблокировки файла и последующего удаления. На рабочей базе этого делать не советую.
благодарю за ответ, НО меня интересует когда data files отказались без привязки в table space, к сожалению оснастка pl-sql developer 12.0.2 это позволила
По сути если TS удален, то и дата файл ничейный. Он вам чем то мешает?
Этот дата файл есть в v$datafiles ?
2) If a data file is not empty, it cannot be dropped. If you must remove a datafile that is not empty and that cannot be made empty by dropping schema objects, you must drop the tablespace that contains the datafile.
3)You cannot drop the first or only datafile in a tablespace. This means that DROP DATAFILE cannot be used with a bigfile tablespace.
4) You cannot drop datafiles in a read-only tablespace.
5)You cannot drop data files in the SYSTEM tablespace.
6)If a datafile in a locally managed tablespace is offline, it cannot be dropped.
How to offline drop the datafile
Sometimes a datafile gets missing, you get an issue opening up the datafile.
Then you can use offline drop to the control file from checking it
The file can still be restored and recovered and back in operation.
Or if don’t have any oracle database backup, then if it is index datafile, then we can recreate all indexes again. If it is having a table segment, we can drop the segment and recreate that oracle table from data from some test database
Hope you like this article on How to Drop a datafile from Tablespace in Oracle
Related Articles
alter tablespace add datafile : Check out this post on How to add datafile to tablespace in Oracle, add tempfile to temporary tablespace,how to add datafile in ASM
How to check Tablespace in Oracle : Learn about How to Check Tablespace in Oracle, tablespace free space,tablespace growth information,tablespace size ,associated datafiles ,tablespace size
how to change default tablespace in oracle :Default tablespace are the tablespace where the objects are created when no tablespace name is specified by users.Find out how to check default tablespace
How to check temp tablespace in Oracle :This article is about temp tablespace in Oracle, resize the tempfile, drop the tempfile,find the temp usage by Session
shrink datafile in Oracle : Check out how to shrink the datafile and reclaim space on the filesystem. How to resolve ORA-03297
I have been asked on several occasions about how to drop a datafile from a tablespace. Much of the confusion comes from the ALTER DATABASE DATAFILE OFFLINE DROP statement. This statement is not meant to allow you to remove a datafile. What the statement really means is that you are offlining the datafile with the intention of dropping the tablespace. In this article I attempt to erase the confusion surrounding this ALTER DATABASE statement and how to successfully drop a datafile from a tablespace.
There are two reasons why a DBA would want to remove a datafile from a tablespace:
- The DBA may have mistakenly added a file to a tablespace, or perhaps made the file much larger than intended and now want to remove it.
- The DBA may be involved in a recovery scenario and the database won’t start because a datafile is missing.
Until Oracle Database 10g Release 2, Oracle did not provide an interface for dropping datafiles in the same way you would drop a schema object such as a table or a user. Prior to 10gr2, once the DBA created a datafile for a tablespace, the datafile could not be removed. This article discusses several workarounds to this limitation as well as the new DROP DATAFILE / TEMPFILE statement introduced with Oracle 10g R2.
Tablespace / Datafile Example
The examples provided in this article were performed on the USERS tablespace using Oracle Database 11g release 2.
To determine how many and which datafiles make up a tablespace, you can use the following query:
FROM DBA_DATA_FILES
from dba_data_files
where tablespace_name = ‘USERS’;
TABLESPACE_NAME FILE_NAME FILE_ID
To add a 5MB datafile to the USERS tablespace configured with Oracle Managed Files (OMF), use the following:
Re-query the data dictionary to determine the name and location of the new datafile:
from dba_data_files
where tablespace_name = ‘USERS’;
TABLESPACE_NAME FILE_NAME FILE_ID
USERS C:\ORACLE\ORADATA\ORCL\DATAFILE\O1_MF_USERS_5YM2N5D0_.DBF 5
Drop Datafile by Oracle Release
An Oracle datafile is a physical part of the database that occupies storage within a file system to store user data. Whenever a datafile gets created or grows, more space on the storage device is required. There are times when a datafile grows beyond an acceptable threshold, an unwanted datafile is created, or a datafile gets created in the wrong tablespace and the datafile needs to be dropped. This section describes the different methods to drop a datafile from a tablespace depending on the Oracle release.
Oracle8i
There is no direct SQL statement to drop datafiles from a tablespace in Oracle8i. In that case we need to drop the tablespace after all data has been moved to a new tablespace.
- Create a new tablespace to hold moved objects.
- Move all tables to the new tablespace.
- Move all indexes to the new tablespace.
- Move all other segments to the new tablespace.
- Drop the old tablespace using the INCLUDING CONTENTS option.
- Remove all datafiles belonging to dropped tablespace using OS command.
Oracle9i Release 1
As with Oracle8i, there is no direct SQL statement to drop datafiles from a tablespace in Oracle9i Release 1. In that case we need to drop the tablespace after all data has been moved to a new tablespace.
- Create a new tablespace to hold moved objects.
- Move all tables to the new tablespace.
- Move all indexes to the new tablespace.
- Move all other segments to the new tablespace.
- Drop the old tablespace using the INCLUDING CONTENTS AND DATAFILES option.
Oracle9i Release 2
As with Oracle8i and Oracle9i Release 1, there is no direct SQL statement to drop datafiles from a tablespace in Oracle9i Release 2. In that case we need to drop the tablespace after all data has been moved to a new tablespace.
- Create a new tablespace to hold moved objects.
- Move all tables to the new tablespace.
- Move all indexes to the new tablespace.
- Move all other segments to the new tablespace.
- Drop the old tablespace using the INCLUDING CONTENTS AND DATAFILES option.
Although datafiles cannot be dropped using a direct SQL statement, tempfiles can be dropped starting in Oracle9i Release 2 using SQL as follows:
Oracle Database 10g Release 1
Use the same procedures documented for Oracle9i Release 2
Oracle Database 10g Release 2
Starting with Oracle Database 10g Release 2, you can use the DROP DATAFILE and DROP TEMPFILE clauses of the ALTER TABLESPACE command to drop a single datafile or tempfile. The datafile must be empty. A datafile is considered to be empty when no extents remain allocated from it.
When you drop a datafile or tempfile, references to the datafile or tempfile are removed from the data dictionary and control files, and the physical file is deleted from the file system or Automatic Storage Management (ASM) disk group.
The following example drops an empty datafile O1_MF_USERS_6LD56LRR_.DBF that belongs to the USERS tablespace.
The next example drops the tempfile O1_MF_TEMP_6LDH8JQB_.TMP which belongs to the TEMP tablespace.
Note that this is equivalent to the following statement that was introduced in Oracle9i Release 2 to drop tempfiles:
The following are restrictions for dropping datafiles and tempfiles using the new ALTER TABLESPACE DROP DATAFILE | TEMPFILE command:
- The database must be open.
- If a datafile is not empty, it cannot be dropped. If you must remove a datafile that is not empty and that cannot be made empty by dropping schema objects, you must drop the tablespace that contains the datafile.
- You cannot drop the first or only datafile in a tablespace. This means that DROP DATAFILE cannot be used with a bigfile tablespace.
- You cannot drop datafiles in a read-only tablespace.
- You cannot drop datafiles in the SYSTEM tablespace.
- If a datafile in a locally managed tablespace is offline, it cannot be dropped.
Oracle Database 11g Release 1
Use the same procedures documented for Oracle Database 10g Release 2
Oracle Database 11g Release 2
Use the same procedures documented for Oracle Database 10g Release 2
Alternative Scenarios
Scenario 1
If the datafile you wish to remove is the only datafile in that tablespace, you can simply drop the entire tablespace using the following:
DROP TABLESPACE INCLUDING CONTENTS; |
The above statement will remove the tablespace, the datafile, and the tablespace’s contents from the data dictionary. All of the objects that where contained in that tablespace are permanently removed. If the datafile was configured using Oracle Managed Files (a feature introduced in Oracle9i Release 1), the physical datafile will be automatically removed from the file system using the DROP TABLESPACE statement.
Oracle9i Release 1 introduced the “AND DATAFILES” clause to the DROP TABLESPACE statement which will automatically remove physical datafiles from the file system:
DROP TABLESPACE INCLUDING CONTENTS AND DATAFILES; |
When not using OMF or the “AND DATAFILES” clause, Oracle will not drop the physical datafile after the DROP TABLESPACE statement. This action would need to be performed manually at the operating system. Depending on the OS (Windows for example), you may have to completely shut down the Oracle instance and associated service before the operating system will allow you to delete the file because of file locks still still being held by Oracle.
Scenario 2
If you have more than one datafile in the tablespace, and you do not need the information contained in that tablespace, or if you can easily recreate the information in this tablespace, then use the same statement as above:
DROP TABLESPACE INCLUDING CONTENTS; |
Again, this will remove the tablespace, the datafiles, and the tablespace’s contents from the data dictionary. Oracle will no longer have access to any object that was contained in this tablespace. You can then use CREATE TABLESPACE and re-import the appropriate objects back into the tablespace.
Scenario 3
If you have more than one datafile in the tablespace and you wish to keep the objects that reside in the other datafile(s) which are part of this tablespace, then you must export all the objects inside the tablespace. Although Oracle introduced the DROP DATAFILEcommand in 10gR2, if the datafile is non-empty, it cannot be removed. Start by gathering information on the current datafiles within the tablespace by running the following query in SQL*Plus:
FROM DBA_DATA_FILES
You now need to identify which objects are inside the tablespace for the purpose of running an export. To do this, run the following query:
FROM DBA_SEGMENTS
Now, export all the objects that you wish to keep.
Once the export is done, drop the tablespace:
DROP TABLESPACE name_of_tablespace INCLUDING CONTENTS AND DATAFILES; |
Note that this PERMANENTLY removes all objects in this tablespace. Recreate the tablespace with the desired datafile(s), then import the objects into that tablespace.
Scenario 4
If you do not wish to follow any of the procedures documented in this article, there are other functions that can be performed besides dropping the tablespace.
Управление и обслуживание табличного пространства ORACLE
1: Концепция табличного пространства
В базе данных ORACLE все данные хранятся в табличном пространстве из логической структуры, конечно же, есть логические структуры, такие как сегменты, области, блоки под табличным пространством. Из физической структуры он помещается в файл данных. Табличное пространство может состоять из нескольких файлов данных.
Как показано на следующем рисунке, база данных состоит из одного или нескольких табличных пространств, которые логически состоят из одного или нескольких сегментов и физически состоят из одного или нескольких файлов os.
1.1 базовое табличное пространство
Несколько табличных пространств, созданных по умолчанию в системе:
Сколько табличных пространств необходимо в системе?
Ответ: SYSTEM, SYSAUX, TEMP, UNDO, как USERS, ПРИМЕР Ожидание табличного пространства необязательно.
1.2 Классификация табличных пространств
Постоянное табличное пространство Храните постоянные данные, такие как таблицы, индексы и т. Д.
Временное табличное пространство Невозможно хранить постоянные объекты, используемые для сохранения временных данных, сгенерированных при сортировке и группировке базы данных.
UNDO табличное пространство Сохраните зеркальное отображение перед изменением данных.
1.3 Управление табличным пространством
Метод управления табличным пространством:
Управление словарем: все пространство, выделенное для всей библиотеки, помещается в словарь данных. Легко вызвать конфликт по словарю и вызвать проблемы с производительностью.
2: создать табличное пространство
3: Управление табличным пространством
3.1 Информация табличного пространства
Как проверить, какие табличные пространства находятся в базе данных? Как просмотреть файл данных, соответствующий табличному пространству?
Просмотр табличного пространства:
Просмотр табличного пространства позволяет просматривать основную информацию через следующие системные представления
-Содержит описательную информацию для всех табличных пространств в базе данных
SELECT * FROM DBA_TABLESPACES
-Содержит информацию описания табличного пространства текущего пользователя
SELECT * FROM USER_TABLESPACES
-Содержит имя табличного пространства и информацию о номере, полученную из контрольного файла
SELECT * FROM V$TABLESPACE;
Просмотр файлов данных
-Содержит информацию описания файла данных и табличного пространства, к которому он принадлежит
SELECT * FROM DBA_DATA_FILES
-Содержит информацию описания временного файла данных и табличного пространства, к которому он принадлежит
SELECT * FROM DBA_TEMP_FILES
- Содержит основную информацию о файле данных, полученном из контрольного файла, включая имя и номер табличного пространства, к которому он принадлежит
SELECT * FROM V$DATAFILE
- Содержит основную информацию обо всех временных файлах данных
SELECT * FROM V$TEMPFILE
3.1.1. Просмотр табличного пространства TEMP по умолчанию
Уровень базы данных
уровень пользователя
3.1.2. Просмотр постоянного табличного пространства по умолчанию
Если вы создаете пользователя без указания его постоянного табличного пространства, будет использоваться табличное пространство по умолчанию.
3.1.3. Просмотр табличного типа по умолчанию
Если вы не укажете тип табличного пространства, по умолчанию будет использован тип табличного пространства, указанный параметром DEFAULT_TBS_TYPE.
3.1.4. Просмотр табличного пространства
SELECT * FROM DBA_TABLESPACES
3.1.5. Просмотр файла данных табличного пространства
Постоянное табличное пространство / UNDO табличное пространство
SELECT * FROM DBA_DATA_FILES;
Временное табличное пространство
SELECT * FROM V$TEMPFILE;
3.1.6. Просмотр использования табличного пространства
Рассчитать использование табличного пространства (с учетом автоматического роста файлов данных)
3.2 табличное пространство по умолчанию
В базе данных ORACLE 9i, когда создается пользователь базы данных, если не указано постоянное табличное пространство по умолчанию, система использует табличные пространства SYSTME в качестве постоянного табличного пространства пользователя по умолчанию, а временное табличное пространство по умолчанию - TEMP. В ORACLE 10 / 11g, если вы не укажете постоянное табличное пространство по умолчанию, это ПОЛЬЗОВАТЕЛИ. Временное табличное пространство по умолчанию - TEMP, конечно, при условии, что вы не изменили значение постоянного табличного пространства по умолчанию или не указали постоянное табличное пространство пользователя по умолчанию. ORACLE позволяет использовать настраиваемые табличные пространства в качестве постоянного табличного пространства по умолчанию, вы можете использовать следующий SQL для просмотра постоянного табличного пространства по умолчанию и временного табличного пространства по умолчанию в базе данных.
SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'
Вы можете использовать инструкцию ALTER DATABASE DEFAULT TABLESPACE, чтобы установить постоянное табличное пространство по умолчанию для базы данных, чтобы при создании пользователя указанное табличное пространство использовалось по умолчанию.
Уровень базы данных:
Постоянное табличное пространство
SQL>ALTER DATABASE DEFAULT TABLESPACE USER;
Временное табличное пространство
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
SQL>ALTER USER USERNAM DEFAULT TABLESPACE NEW_TABLESPACE_NAME
Просмотр табличного пространства по умолчанию, соответствующего пользователю
SELECTUSERNAME, DEFAULT_TABLESPACEFROMDBA_USERS
1: Если мы указали табличное пространство по умолчанию в качестве значения DEFAULT_PERMANENT_TABLESPACE при создании пользователя, то после изменения табличного пространства по умолчанию табличное пространство пользователя также изменится.
2: Если мы не указали табличное пространство пользователя при создании пользователя, то табличное пространство по умолчанию БД также будет использоваться по умолчанию. В это время, если мы изменим табличное пространство по умолчанию БД, табличное пространство пользователя также изменится.
Переключите табличное пространство по умолчанию для базы данных на USERS
3: Если мы создаем пользовательское табличное пространство пользователя, являющееся другим табличным пространством, то мы изменяем табличное пространство БД по умолчанию, которое не повлияет на табличное пространство пользователя.
4: табличное пространство по умолчанию БД не может быть удалено, если табличное пространство по умолчанию не указано на другие табличные пространства, прежде чем его можно будет удалить.
SQL> DROP TABLESPACE USERS;
DROP TABLESPACE USERS
ORA-12919: невозможно удалить постоянное табличное пространство по умолчанию
5: если табличное пространство пользователя по умолчанию указывает на другие табличные пространства, при удалении этого табличного пространства табличное пространство пользователя по умолчанию автоматически указывает на табличное пространство по умолчанию в БД.
SQL> DROP TABLESPACE TEST2;
3.3 удалить табличное пространство
В дополнение к табличному пространству SYSTEM любое табличное пространство в базе данных может быть удалено. При удалении табличного пространства ORACLE просто удаляет информацию, связанную с табличным пространством и файлом данных, в управляющем файле и словаре данных. По умолчанию ORACLE не удаляет соответствующий файл данных в операционной системе, поэтому после успешного выполнения операции удаления табличного пространства необходимо вручную удалить соответствующий файл данных табличного пространства в операционной системе. Если вы удаляете соответствующий файл данных при удалении табличного пространства, вы должны отобразить указанное предложение INCLUDING CONTENTS AND DATAFILES. Примечание: Текущее табличное пространство по умолчанию на уровне базы данных не может быть удалено, а пользовательское табличное пространство может быть удалено. В противном случае будет сообщено об ошибке: ORA-12919: Невозможно удалить постоянное табличное пространство по умолчанию.
DROP TABLESPACE имя табличного пространства [ВКЛЮЧАЯ СОДЕРЖАНИЕ [И ДАННЫЕ ФАЙЛЫ] [КАСКАДНЫЕ СООТВЕТСТВИЯ]]
SQL> DROP TABLESPACE URER01 INCLUDING CONTENTS;
Если объект базы данных включен в табличное пространство, указанный оператор INCLUDING CONTENTS должен отображаться в операторе DROP TABLESPACE. Если вы хотите удалить табличное пространство USER при удалении соответствующего файла данных, вы можете использовать следующий оператор
SQL>DROP TABLESPACE USER01 INCLUDING CONTENTS AND DATAFILES;
Примечание. При удалении табличного пространства параметры CONTENTS и DATAFILES не выровнены, и будет показана следующая ошибка:
SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING DATAFILES AND CONTENTS
ORA-01911:contents keyword expected
SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING CONTENTS AND DATAFILES
3.4 Настройте табличное пространство
3.4.1 Добавить файл данных
Если вы обнаружите, что в табличном пространстве недостаточно места для хранения, вы можете добавить новый файл данных в табличное пространство, чтобы увеличить размер табличного пространства. Однако, как правило, рекомендуется заранее оценить объем памяти, необходимый для табличного пространства, а затем создать для него несколько файлов данных соответствующего размера.
При добавлении нового файла данных, если операционная система с таким именем уже существует, инструкция ALTER TABLESPACE завершится ошибкой. Если вы хотите перезаписать файл операционной системы с тем же именем, вы должны указать предложение REUSE, показанное ниже.
SQL> ALTER TABLESPACE TBS_EDS_DAT
2 ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF'
4 AUTOEXTEND ON
6 MAXSIZE 51200M;
ALTER TABLESPACE TBS_EDS_DAT
Произошла ошибка в строке 1:
ORA-03206: максимальный размер файла (6553600) блока в предложении AUTOEXTEND вне диапазона
Размер файла данных, поддерживаемый ORACLE, определяется числом db_block_size и db_block. Число db_block (блок ORACLE) является фиксированным значением 2 ** 22-1 (4194303). Емкость файла данных = количество блоков * размер блока. В следующем списке показан максимальный размер физического файла, который могут поддерживать разные базы данных блоков данных:
Размер блока данных Максимальный физический файлMМаксимальный физический файл G
16KB 65535M 64G
32KB 131072M 128G
64KB 262144M 256G
3.4.2 Настройка размера файла данных
Сбросить размер файла данных
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'
3.4.3 Удалить файлы данных
ALTER TABLESPACE TEST
DROP DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'
3.4.4 Мобильные файлы данных
Теперь есть такой случай: в прошлом на сервере базы данных был только один диск с относительно небольшой емкостью, и все файлы данных были помещены на диск D. Позже я подал заявку на диск 1T и мне нужно было освободить место для диска D (диск D заполнен). Переместите несколько больших файлов данных на диск 1T:
Под Linux / Unix
3.4.5 Файлы автономных данных
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' OFFLINE;
3.4.6 Файл данных онлайн
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' ONLINE;
4: поддерживать табличное пространство
4.1 Изменение состояния табличного пространства
Состояние табличного пространства имеет следующие состояния: онлайн, оффлайн, только чтение, чтение и запись.
Чтобы просмотреть состояние табличного пространства, вы можете просмотреть его с помощью следующего оператора SQL.
4.1.1 Табличное пространство не в сети
SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;
Чтобы установить автономный статус, вы можете использовать следующие 4 параметра для управления автономным режимом
НОРМАЛЬНЫЙ Этот параметр указывает, что табличное пространство переключается в автономное состояние обычным способом. Затем закройте все файлы данных табличного пространства. Если во время этого процесса не возникает ошибок, вы можете использовать параметр NORMAL, который также используется по умолчанию.
TEMPORARY Этот параметр временно переводит табличное пространство в автономный режим. В настоящее время ORACLE не будет проверять состояние каждого файла данных при выполнении контрольной точки. Даже если некоторые файлы данных недоступны, ORACLE будет игнорировать эти ошибки. Таким образом, когда табличное пространство установлено в оперативное состояние, может потребоваться восстановление данных.
IMMEDIATE Этот параметр немедленно переводит табличное пространство в автономный режим, при котором ORACLE не будет выполнять контрольную точку или проверять, доступен ли файл данных. Вместо этого файлы данных, принадлежащие табличному пространству, переводятся в автономный режим. База данных должна быть восстановлена при следующем включении табличного пространства в оперативный режим.
FOR RECOVER Этот параметр переводит табличное пространство в автономное состояние для восстановления. Если вы хотите выполнить восстановление табличного пространства на основе времени, вы можете использовать этот параметр, чтобы переключить табличное пространство в автономное состояние.
Если база данных работает в неархивном режиме (NOARCHIVELOG), поскольку данные для восстановления, необходимые для восстановления табличного пространства, не могут быть сохранены, табличное пространство нельзя немедленно переключить в автономное состояние. Если табличное пространство находится в автономном режиме, запросите таблицы в табличном пространстве и сообщите об ошибке: в данный момент ORA-00376 не может прочитать файл, а ORA-01110: файл данных x .
Примечание. Автономный режим (автономный режим) обычно используется для оперативного резервного копирования базы данных, восстановления данных и других операций обслуживания. Некоторые табличные пространства не могут быть в автономном режиме, такие как: SYTEM, UNDO и т. Д.
1. SYTEM не может быть в автономном режиме или только для чтения
2. Пустое пространство текущей таблицы UNDO не может быть отключено или доступно только для чтения.
3. Текущее временное табличное пространство не может быть отключено или доступно только для чтения.
4. SYSAUX может быть в автономном режиме, но не только для чтения
SQL> ALTER TABLESPACE SYSTEM OFFLINE;
ALTER TABLESPACE SYSTEM OFFLINE
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
SQL> ALTER TABLESPACE SYSTEM OFFLINE;
ALTER TABLESPACE SYSTEM OFFLINE
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
4.1.2 Табличное пространство онлайн
SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;
4.1.3 Табличное пространство только для чтения
SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;
Когда табличное пространство доступно только для чтения, никакие операции DML не могут быть выполнены с таблицами в нем, в противном случае будет сообщено об ошибке: ORA-00372: файл xxx не может быть изменен в данный момент
ORA-01110: файл данных xx: ********. Но таблицу можно удалить.
4.1.4 Табличное пространство для чтения и записи
SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;
4.1.5 Переименование табличного пространства
До ORACLE 10g имя табличного пространства нельзя изменить. В ORACLE 11G, используя предложение RENAME в операторе ALTER TABLESPACE, администратор базы данных может изменить имя табличного пространства.
4.1.6 Включить автоматическое расширение
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;
4.1.7 Отключить автоматическое расширение
ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;
5 Квота табличного пространства
Недостаточное табличное пространство и недостаточная квота пользователя - это две разные концепции. Размер табличного пространства относится к размеру фактического пользовательского табличного пространства, а размер квоты относится к размеру табличного пространства, указанного пользователем. Два решения не совпадают
3.5.1 Просмотр квоты табличного пространства пользователя
MAX_BYTES = -1 означает, что квота не установлена,
3.5.2 Управление квотой табличного пространства пользователя
Создание и изменение квоты пользовательского табличного пространства:
1. При создании пользователя укажите лимит
CREATE USER TEST IDENTIFIED BY TEST
DEFAULT TABLESPACE TS_TEST
TEMPORARY TABLESPACE TEMP
QUOTA 3M ON TS_TEST
2. Измените ограничение табличного пространства пользователя:
A: Не контролируйте ограничение табличного пространства для пользователей:
Проверьте, нет ли ограничения табличного пространства
B: отменить квоту
Этот подход является глобальным.
SQL> GRANT UNLIMITED TABLESPACE TO SCOTT;
Или для конкретного табличного пространства.
SQL>ALTER USER SCOTT QUOTA UNIMITED ON TBS_EDS_DAT;
SELECT * FROM SESSION_PRIVS WHERE PRIVILEGE='UNLIMITED TABLESPACE'
SQL> REVOKE UNLIMITED TABLESPACE FROM SCOTT;
C: установить квоты
3. Может распространяться естественным путем или переработано:
revoke unlimited tablespace from TEST;
alter user skate quota 0 on TB;
Чтобы решить проблему недостаточного размера табличного пространства: используйте команду «ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file», чтобы увеличить табличное пространство до указанных данных, в зависимости от конкретной ситуации можно увеличить одно или несколько табличных пространств.
Читайте также: