Oracle как удалить datafile
Иногда нужно избавиться от табличного пространства. Удалить табличное пространство из базы Oracle Database можно, выполнив следующую команду:
Если табличное пространство test01 включает таблицы или индексы на момент ввода команды DROP TABLESPACE, то вы получите ошибку. Вы можете либо переместить все объекты в другое табличное пространство, либо, если эти объекты не нужны, просто использовать следующую команду, которая уничтожит табличное пространство вместе со всеми объектами, входящими в него:
Внимание! В Oracle Database 10g объекты базы, такие как таблицы, не уничтожаются окончательно при выдаче команды DROP TABLE. Вместо этого они отправляются в корзину (Recycle Bin), откуда их можно потом восстановить. При использовании команды DROP TABLESPACE. INCLUDING CONTENTS объекты табличного пространства уничтожаются окончательно, не попадая в корзину! Любые объекты, относящиеся к этому табличному пространству и находящиеся в корзине, также уничтожаются безвозвратно при выполнении этой команды. Если опустить конструкцию INCLUDING CONTENTS, а табличное пространство содержит объекты, оператор даст сбой, но при этом все объекты из корзины все-таки будут уничтожены.
Оператор DROP TABLESPACE. INCLUDING CONTENTS не освободит файлы данных для операционной системы. Чтобы сделать это, потребуется либо вручную удалить файлы данных, бывшие частью табличного пространства, либо выполнить следующую команду, чтобы удалить и объекты, и файлы данных сразу:
Приведенный оператор автоматически уничтожит файлы данных вместе с табличным пространством.
Если в других таблицах окажутся активные ограничения целостности, ссылающиеся на таблицы в табличном пространстве, которое вы собираетесь уничтожить, нужно будет использовать такую команду:
Единственное табличное пространство, которое нельзя уничтожить — это, конечно,ваше табличное пространство System. Кроме того, во время обычной операции базы данных невозможно уничтожить табличное пространство Sysaux. Однако имея привилегию SYSDBA и запустив базу данных в режиме MIGRATE, удалить табличное пространство Sysaux можно.
Разумеется, что причин для уничтожения табличного пространства Sysaux не так много. Если просто нужно перенести определенных пользователей из этого табличного пространства, вы всегда можете воспользоваться соответствующей процедурой перемещения, специфицированной в представлении V$SYSAUX_OCCUPANTS.
Представление V$SYSAUX_OCCUPANTS покажет подробности о пространстве, занятом каждым элементом табличного пространства System. Оно также предоставит процедуру перемещения для заданного элемента, если вы захотите переместить его в другое табличное пространство. Вот простой запрос, использующий это представление:
Если необходимо переместить элемент ULTRASEARCH из System в новое табличное пространство по имени ULTRA1, это можно сделать с помощью процедуры MOVE_WK, принадлежащей схеме WKYS, как показано ниже:
Далее в моих заметках будет представлено несколько полезных представлений словаря данных, которые помогут управлять базой данных Oracle Database. Хотя использование OEM Database Control сокращает необходимость в частом обращении к большинству из этих представлений, важно знать об их существовании и содержимом, чтобы иметь понятие, где база данных хранит важную информацию.
Целью данной работы ставилось построение демо стенда для изучения возможностей Oracle Data Guard из узлов Oracle RAC 12.1.0.2.0.
Так как под рукой у меня не нашлось сервера, на котором я бы мог разместить все необходимые мне виртуальные машины (7 штук), то строить будем с использованием офисных PC.
- 3 PC с такими характеристиками: CPU i5, 16 GB RAM
- Обычная офисная сеть 1Gbit/s
На третьем PC разместится одна виртуалка управления с Oracle Enterprise Manager Cloud Control 12c Release 5 (12.1.0.5). Насчет EM — дальше я о нем упоминать не буду ввиду того, что это отдельная тема в данном случае больше связанная не с построением стенда Data Guard, а с его использованием.
Необходимое программное обеспечение Oracle скачиваем с их сайта, а в качестве основной операционной системы я выбрал Fedora 22 с qemu-kvm + libvirt + openvswitch. В качестве гостевой ОС используем Oracle Linux 6.6.
Подготовка Fedora для хостинга виртуальных машин
Распределим IP адреса следующим образом:
Избавляемся от GNOME на каждой из персоналок:
Сконфигурируем HugeMem для виртуалок из расчета 4300M на каждую.
Кластерам нужна синхронизация времени, поэтому на prmy конфигурируем chronyd:
На prmy конфигурируем DHCP сервер для раздачи IP адресов виртуалкам:
В стандартный /etc/named.conf добавим следующие стрчки:
У нас будет свои DHCP и DNS сервера и чтобы не мешать остальной офисной сети мы сконфигурируем для работы стенда свои подсети в отдельных VLAN.
Устанавливаем Open vSwitch:
Создаем отдельный свич для public сети кластера:
Вместе с мостом создается внутренний порт и на нем внутренний интерфейс по имени совпадающем с имением моста ovsbr0. Этот интерфейс будет получать IP адрес с офисного DHCP через физический интерфейс enp3s0.
В свою очередь физический интерфейс enp3s0 подключим к этому мосту:
Конфигурируем порт (VLAN 100) и интерфейс на Open vSwitch для public сети кластеров. Через него будем раздавать IP адреса, DNS и NTP для вируалок кластеров и EM 12c.
Конфигурируем отдельный свич, порт (VLAN 101) и интерфейс на Open vSwitch для первого inetrconnect'а кластера.
Конфигурируем отдельный свич, порт (VLAN 102) и интерфейс на Open vSwitch для второго inetrconnect'а кластеров.
Конфигурируем отдельный свич, порт (VLAN 103) и интерфейс на Open vSwitch для трафика Data Guard.
Создаем такие же определения интерфейсов на sby меняя HWADDR на актуальные и последнюю цифру в IP адресах для sby на 2.
Свичи iconn1, iconn2 и dg0 получились у нас изолированными и их трафик не выходит наружу. Для того чтобы виртуальные машины на prmy могли обмениваться данными по всем внутренним сетям с виртуальными машинами на sby и наоборот, мы подключим эти свичи к ovsbr0, который имеет внешний физический порт.
Реализуем это соединением всех свичей «паровозиком» при помощи Patch портов на свичах.
Определения следующих интерфейсов идентичны на prmy и sby:
Теперь перезагружаем prmy и sby.
Проверяем получившуюся конфигурацию openvswitch:
Конфигурация должна быть одинаковой на всех компьютерах.
Проверяем IP адреса:
Проверяем что ping есть на все адреса.
Создание виртуальных машин
Удаляем default сеть libvirt:
Создаем свои определения сетей:
Создаем диски для prmy1:
Заставить правильно работать qemu+kvm с общими дисками в формате qcow2 мне не удалось, поэтому общие диски создаем в формате raw.
Берем дистрибутив Oracle Linux 6.6 64bit и кладем его на место:
Конфигурируем NFS сервер:
В /stage скачиваем дистрибутивы Grid Infrastructure, Oracle Database 12.1.0.2 и распаковываем их.
Создаем определение виртуальной машины prmy1:
Запускаем Virtual Machine Manager и инсталлируем операционную систему любым удобным для вас способом. Сетевые интерфейсы должны получить свои IP адреса с нашего DHCP. 200MB отдаем для /boot, 8GB для swap и остальное для /. В качестве файловой системы для / и /boot используем, например ext3.
В состав пакетов для установки включим группы пакетов:
Конфигурирование Oracle Linux 6
Подключаемся к созданной виртуалке и конфигурируем ее:
Избавляемся от GNOME:
Избавляемся от вопросов при удалении файла пользователем root:
Избавляемся от запуска ненужных сервисов типа cups и прочих командой chkconfig:
Сервисы ntpd и nscd наоборот включаем:
У меня после перезагрузки получилось следующее:
eth0,eth3 — public eth1, eth2 — interconnect
Создаем группы для Oracle:
Включаем пользователя oracle в группы dba, oper и asmdba
Создаем пользователя grid:
Для удобства будем отображать имя экземпляра Oracle в подсказке bash:
Создаем раздел и файловую систему на диске предназначенном для установки софта Oracle.
Должно получиться так:
Монтировать разделы я хочу не по uuid, а по LABEL:
Нарезаем разделы для ASM дисков, у меня получилось в итоге так:
С сайта Oracle скачиваем пакет oracleasmlib-2.0.4-1.el6.x86_64 помещаем на prmy в /stage и устанавливаем его:
Создаем ASM диски:
На этом конфигурирование виртуалки можно считать законченным, теперь выключаем ее приступаем к ее клонированию. Но перед этим для облегчения клонирования скопируем с нее файлы, которые будут разными в каждой виртуалке.
Клонирование виртуальных машин
Копируем общие диски на sby:
Создаем каталоги для виртуалок:
Копируем наши «эталонные» образы system.qcow и u01.qcow2 на sby.
Клонируем виртуальный диск system.qcow2 на prmy:
Диск u01.qcow2 просто копируем:
Готовим файлы на замену в виртуалках:
Туда же копируем определение виртуальной машины prmy1:
Копируем их в образ виртуальной машины prmy2:
Редактируем определение виртуалной машины prmy2.
меняем имена:
меняем mac адреса:
удаляем IDE контроллер:
И создаем виртуальную машину prmy2:
Продолжаем в том же духе с prmy3.
Имена меняем командой:
Mac адреса соответственно:
Запускаем виртуальные машины:
Подключаемся к ним проверяем что имя у них правильное, соседок по сети, DNS и NTP сервера они видит, диски на месте:
Их тоже стартуем:
Инсталляция Grid Infrastructure
Процесс довольно длинный и скучный.
Инсталлируем Grid Infrastructure на prmy:
Flex Cluster нам не нужен.
Сконфигурируем GNS на домене, указанном в DNS при делегировании зоны.
Сконфигурируем Flex ASM, хотя он тут по большому счету не нужен. Впрочем это же стенд для изучения возможностей и можно ограничить количество узлов на которых стартует ASM двумя. При использовании стандартного ASM можно было сэкономить по памяти — его минимальные требования 300M вместо 1G у Flex ASM.
Берем первые 8 дисков
Если сделали вся как у меня, то проверки и инсталляция должна пройти без замечаний.
После окончания инсталляции выгрузим данные GNS для подключения клиента:
GNS будет в одном экземпляре. Резервный кластер будет использовать GNS основного.
Инсталляция Grid Infrastructure на sby похожа на то что мы уже делали за исключением имен узлов и GNS.
Если бы мы выбрали инсталляцию Flex Cluster, то не смогли бы использовать GNS соседнего кластера.
Создание дополнительных дисковых групп ASM
Нам понадобятся дополнительные дисковые группы на обоих кластерах:
FRA — Fast Recovery Area
ACFS — для общего Oracle Home Oracle Database.
Под каждую дисковую группу берем по 4 оставшихся диска, redundancy external.
На ACFS создаем том и файловую систему acfs и туда будем инсталлировать программное обеспечение Oracle Database. Проблема непрерывности обслуживания при установке патчей и апгрейах нас не очень волнует — на этом стенде вряд ли будет больше одного пользователя. Зато немного быстрее пройдет инсталляция софта и чуть проще будет конфигурировать Data Duard.
Создаем точку монтирования acfs:
Других версий программного обеспечения у нас не будет, поэтому меняем версию совместимости compatible.rdbms и compatible.asm группы DATA на 12.1.0.2.0.
FRA также создаем с compatible.rdbms и compatible.asm 12.1.0.2.0.
На ACFS дополнительно ставим compatible.advm= 12.1.0.2.0.
Нас попросят выполнить скрипт от пользователя root:
Аналогично конфигурируем дисковые группы на кластере sby.
Инсталляция программного обеспечения Oracle Database
Инсталлируем программное обеспечение Oracle Database. Саму базу будем создавать отдельно при помощи dbca. Устанавливаем на все 3 узла кластера.
При проверке он почему-то не видит установленного в нужное ему значения параметра hard memlock=3828161. Создает fixup скрипт, а при его выполнении переустанавливает параметр в то же значение, но все равно на этот параметр обижается.
Короче, смело это игнорируем.
Аналогично устанавливаем софт на кластер sby.
После после завершения инсталляции на sby запускаем следующую команду:
Иначе наша stanby БД не получит доступа к файлам на ASM.
Создание основной кластерной базы данных
Базу данных создать можно и policy или administrator managed. В любом случае для этой БД задействуем только 2 узла кластера. Третий оставим для Far Sync.
Я создавал administrator managed базу данных:
Конфигурирование Oracle Net для Data Guard
Конфигурируем основной кластер. Сначала задействуем оставшуюся неиспользованной сеть 192.168.103.0/24 для Data Guard.
Проверяем те сети, что уже сконфигурированы:
Дальше я буду делать вторую public dhcp сеть, хотя делать этого не стоит даже на стенде, а в документации на команду srvctl add network об этом прямо сказано:
Oracle only supports DHCP-assigned networks for the default network, not for subsequent networks.
Так что в команде srvctl add network используйте опцию -nettype static выделяйте статические VIP адреса, ну и далее по документации.
Тем не менее такую сеть нам сделать позволят и внешне все будет какое-то время работать. Но при старте VIP адреса у меня наблюдался шторм DHCP запросов на этот адрес.
Все это не помешало мне довести создание конфигурации Data Guard до конца (VIP agent не успел своими логами запросов к DHCP переполнить файловую систему).
Следующий свободный номер сети -2, конфигурируем ее:
Добавляем VIP адреса:
Добавляем SCAN LISTENER'ы:
В отличие от тех что в public сети, эти слушают порт 12001.
Добавляем в эту сеть SCAN адрес. Назначение его такое же что и аналогичного SCAN в public сети:
Все что мы сейчас создали должно отобразиться в GNS:
Результат выполнения команды srvctl config gns -listТеперь создадим листенер базы данных в этой сети с названием LISTENER_DG и портом 12001.
Этот листенер предназначет исключительно для Data Guard требует дополнительного конфигурирования на каждом узле кластеров и в нем же будет прописан статический сервис для Data Guard.
Конфигурировать буду в 2 шага, сначала через netmgr для того чтобы не ошибиться в синтаксисе:
А потом еще и руками, потому что netmgr не понимает больших значений параметров *_BUF_SIZE.
Для кластера sby процедуру придется повторить:
Смотрим что получилось (выполняем команду на prmy1):
Синим цветом помечены записи GNS соответствующие адресам второй сети кластера sby.
Как «удалить» файл данных из табличного пространства
В этой статье описывается, как удалить файлы данных из базы данных. потому что 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 <datafile name> OFFLINE DROP Команда не позволяет удалять файл данных, ее цель - перевести файл данных в автономный режим, чтобы удалить табличное пространство. Если в режиме архива, используйте ALTER DATABASE DATAFILE <datafile name> OFFLINE DROP вместо OFFLINE DROP , Когда файл данных находится в автономном режиме, Oracle К содержимому файла данных больше нет доступа, но он все равно будет частью табличного пространства. Этот файл данных отмечен в контрольном файле OFFLINE , Это не будет выполнено с контрольным файлом при запуске базы данных SCN Сравнение. Сохранение этой записи файла данных в контрольном файле удобно для последующего восстановления.
Если вы не хотите удалять табличное пространство, как указано выше, есть другие решения.
1. Если вы хотите удалить файл данных из-за неправильного распределения размера файла, вы можете рассмотреть RESIZE Command.
2. Если вы случайно добавили файл данных, и этому файлу не было выделено место, вы можете использовать
ALTER DATABASE DATAFILE <filename> RESIZE; Команда, чтобы сделать это меньше, чем 5 Oracle Размер блока, если размер файла данных меньше, чем этот, Oracle Расширенные файлы данных не будут выполняться. В будущем Oracle Вы можете удалить этот неверный файл при перестройке.
Управление и обслуживание табличного пространства 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», чтобы увеличить табличное пространство до указанных данных, в зависимости от конкретной ситуации можно увеличить одно или несколько табличных пространств.
Читайте также: