Как удалить все таблицы в схеме oracle
Иногда нужно избавиться от табличного пространства. Удалить табличное пространство из базы 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? Я нашел этот скрипт:
но я хотел бы знать, есть ли что-нибудь,чтобы отбросить все в схеме,индексах, таблицах, противопоказаниях. но не схема (drop user . ).
обычно проще всего удалить и добавить пользователя. Это предпочтительный метод, если у вас есть доступ к базе данных system или sysdba.
Если у вас нет доступа к системному уровню и вы хотите очистить свою схему, следующий sql создаст ряд состояний падения, которые затем могут быть выполнены.
затем я обычно очищаю корзину, чтобы действительно очистить вещи. Честно говоря, я не вижу большой пользы для корзины oracle и хотел бы, чтобы я мог отключите его, но в любом случае:
это приведет к созданию списка операторов drop. Не все из них будут выполняться - если вы упадете с каскадом, падение индексов PK_* завершится неудачей. Но, в конце концов, у вас будет довольно чистая схема. Подтвердите:
кроме того, просто чтобы добавить, блок Pl/sql в вашем вопросе удалит только таблицы, он не удаляет все другие объекты.
ps: скопировано с какого-то сайта, мне было полезно. Проверено и работает как обаяние.
Да, вы можете. Можно удалить пользователя и таким образом удалить объекты схемы. Инструкция DROP USER используется для удаления пользователя из базы данных Oracle и всех объектов, принадлежащих этому пользователю.
Если TestDB имеет объекты в своей схеме, вам нужно будет запустить следующую инструкцию пользователя DROP:
этот оператор удалит все объекты, принадлежащие TestDB, и все ограничения ссылочной целостности объектов TestDB также будут удалены.
следующий сценарий SQLplus генерирует операторы SQL, необходимые для удаления всех объектов схемы от нужного пользователя:
скрипт работает 100% для меня как есть-но если по какой-то причине он не завершен для вас, то он легко улучшается с помощью виртуальной машины (VM) следующим образом:
- войдите в систему как [ваш пользователь схемы для пустого]
- сделайте снимок вашей виртуальной машины
- запустите приведенный выше скрипт для создания удаления заявления
- выполнить удаление (вы можете игнорировать любые ошибки "объект не существует", так как некоторые объекты будут автоматически удалены до инструкции удаления скрипта. Это происходит в результате владения удаляемыми объектами)
- выход
- войдите в систему как SYS и выполните "drop user [ваш пользователь схемы для пустого];" -- без опции каскада
Если Шаг 6 терпит неудачу, вам нужно определить оставшиеся объекты предотвращение удаления пользователя и добавление его в вышеуказанный скрипт. Повторяйте, пока ваш пользователь не упадет (т. е. ваш скрипт является всеобъемлющим), затем сохраните свой скрипт
откат виртуальной машины к снимку и повторите шаги 3 и 4 (используя обновленный скрипт) - и теперь у вас должна быть 100% пустая схема.
Багдади Синдбад | বাগদাদী সিন্দবাদ পর্ব-২৩-২৫ | Bangla Дубляж | বাংলা ভাষায় এখন | Часть-23-25
Можно ли удалить все содержимое схемы в Oracle? Нашел вот такой скрипт:
Но я хотел бы знать, есть ли что-нибудь, что может отбросить все в схеме, индексах, таблицах, ограничениях . но не в схеме (удалить пользователя . ).
- Если вы имеете в виду не удалять идентификаторы пользователей Oracle, я думаю, что сценарий сделает это. Но создайте тестовую базу данных и попробуйте.
- Какова ваша цель? Очистить содержимое всех таблиц? Тогда не стоит их ронять. Если вы хотите просто получить пустую схему, думаю, ее проще воссоздать. Вы получите новую схему с нуля с пустой статистикой, без каких-либо объектов (таблиц, представлений, синонимов, материализованных представлений и т. Д.)
- 2 У меня нет прав на создание пользователей, поэтому я не могу удалить пользователя и воссоздать его (не могу использовать DROP USER, как это указано в вопросе)
- Если тебе действительно нужно бросить каждый типа объекта, вам придется покопаться в Справочнике по языку SQL и обработать большую часть DROP . заявления.
- 1 Жаль, что Oracle предоставляет create schema команда, но не drop schema . Я полагаю, что это довольно распространенное требование для автоматизированного тестирования сборки, когда обычно вы не можете создавать пользователей с нуля.
Обычно проще всего отбросить и добавить пользователя. Это предпочтительный метод, если у вас есть системный или системный доступ к базе данных.
Если у вас нет доступа на системном уровне и вы хотите очистить свою схему, следующий sql создаст серию выпадающих статусов, которые затем могут быть выполнены.
Затем я обычно вычищаю мусорную корзину, чтобы действительно очистить вещи. Честно говоря, я не вижу большого использования корзины oracle и хотел бы отключить ее, но в любом случае:
Это создаст список операторов drop. Не все из них будут выполняться - если вы сбросите каскадом, сброс индексов PK_ * не удастся. Но в итоге у вас будет довольно чистая схема. Подтвердите с помощью:
Кроме того, просто чтобы добавить, блок Pl / sql в вашем вопросе удалит только таблицы, он не удалит все другие объекты.
ps: Скопировал с какого-то сайта, мне пригодилось. Проверено и работает как шарм.
Да, ты можешь. Вы можете удалить пользователя и таким образом удалить объекты схемы. Оператор DROP USER используется для удаления пользователя из базы данных Oracle и удаления всех объектов, принадлежащих этому пользователю.
Если TestDB владеет объектами в своей схеме, вам нужно будет вместо этого выполнить следующий оператор DROP USER:
Этот оператор удалит все объекты, принадлежащие TestDB, и все ограничения ссылочной целостности для объектов TestDB также будут отброшены.
- 10 Это явно что сделал OP не спросить.
Спасибо автору Рафаэлю Эйнгу.
Просто войдите в схему, объекты которой вы хотите удалить.
Следующий сценарий SQLplus генерирует операторы SQL, необходимые для удаления всех объектов схемы у нужного пользователя:
Скрипт у меня работает на 100% как есть, но если по какой-то причине он не завершен для вас, то его легко улучшить с помощью виртуальной машины (ВМ) следующим образом:
Если шаг 6 завершился неудачно, вам необходимо определить оставшиеся объекты, препятствующие удалению вашего пользователя, и добавить их в приведенный выше сценарий. Повторяйте, пока ваш пользователь не упадет (т. Е. Ваш сценарий будет исчерпывающим), затем сохраните свой сценарий
Верните виртуальную машину к снимку и повторите шаги 3 и 4 (используя обновленный скрипт) - и теперь у вас должна быть 100% пустая схема.
Привет, сейчас мы с Вами рассмотрим технологию Oracle Data Pump, с помощью которой мы можем экспортировать данные в дамп и импортировать данные из дампа в СУБД Oracle. Эта технология подразумевает использование утилит expdp и impdp, которые заменяют традиционные exp и imp, и сегодня мы с Вами научимся использовать их для создания дампа базы данных и импорта данных из этого дампа.
Как Вы, наверное, уже догадались, сейчас речь пойдет о СУБД Oracle, а именно о технологии Oracle Data Pump и начнем мы, конечно же, с обзора данной технологии.
Что такое Oracle Data Pump?
Oracle Data Pump – это технология позволяющая экспортировать и импортировать данные и метаданные в СУБД Oracle Database в специальный формат файлов дампа.
Данная технология впервые появилась в версии 10g и включается во все последующие версии Oracle Database. Для экспорта и импорта данных до Oracle Data Pump, т.е. до версии 10g, использовались традиционные утилиты exp и imp, возможности которых в 10 и выше версиях сохранены в целях совместимости. Особенностью Oracle Data Pump является то, что экспорт и импорт данных происходит на стороне сервера, dmp-файл формируется на файловой системе сервера, а также главным преимуществом Oracle Data Pump перед традиционным способом экспорта и импорта данных является более быстрая выгрузка и загрузка данных.
В Oracle Data Pump для экспорта и импорта данных созданы новые серверные утилиты expdp и impdp. Формат файлов дампа (dmp) используемый в этих утилитах, несовместим с форматом, который используется в exp и imp.
Expdp – утилита для экспорта данных в СУБД Oracle Database в дамп.
Impdp – утилита для импорта данных в СУБД Oracle Database из дампа.
Утилиты expdp и impdp поддерживают несколько режимов работы:
Для того чтобы посмотреть подробную справку (описание параметров) по этим утилитам запустите их с параметром help=y, например
Примечание! Запуск утилит в операционной системе Windows запускается из командной строки. В случае если системный каталог bin СУБД Oracle не добавлен в переменную среды Path, то запускать утилиты нужно из данного каталога, т.е. предварительно перейдя в него (например, с помощью команды cd). Для демонстрации примеров ниже я использую Oracle Database Express Edition 11g Release 2 установленный на операционной системе Windows 7.
Пример создания дампа базы данных Oracle с помощью expdp
Для того чтобы создавать дампы в Oracle с помощью утилиты expdp предварительно необходимо определится с логической директорией, в которую Вы будете экспортировать дампы, т.е. где они будут храниться. Можно использовать стандартную директорию DATA_PUMP_DIR, но Вы, если хотите, можете создать новую, конкретно для Ваших целей отдельную директорию. Давайте создадим отдельный каталог для наших задач с экспортом и импортом данных, заодно и научимся создавать такие директории.
Сначала создаем каталог в файловой системе, например, я создал D:\OracleEX\ExportImport.
Затем уже создаем директорию в Oracle, для этого открываем SQL*Plus или SQLDeveloper и запускаем следующую команду (я запустил в SQL*Plus и директорию назвал ExportImport).
Чтобы посмотреть, какие директории уже созданы, можете использовать следующий запрос.
Теперь давайте перейдем непосредственно к экспорту. Я все действия выполнял от имени системного пользователя Oracle.
Создание дампа всей базы данных
Для того чтобы создать полный дамп базы данных выполните следующую команду в командной строке
- system/Pa$$w0rd – это логин и пароль пользователя в СУБД;
- FULL=Y – параметр, который указывает, что мы делаем полный экспорт базы данных;
- directory=ExportImport – параметр указывает директорию, в которую мы будем выгружать дамп файл;
- dumpfile=DumpFull.dmp – параметр для указания названия дамп файла;
- logfile=ExportFull.log – параметр для указания названия лог файла экспорта данных.
Создание дампа на основе отдельной схемы базы данных
В большинстве случае все-таки, наверное, понадобится экспортировать отдельную, выбранную схему базы данных, а не всю БД. Для того чтобы выгрузить схему, указываем параметр SCHEMAS.
SCHEMAS=OracleUser – параметр, в котором мы указываем схему для экспорта, в нашем случае OracleUser.
Создание дампа на основе отдельных таблиц базы данных
Иногда нужно экспортировать только одну или несколько таблиц, для этого мы можем использовать параметр TABLES. В примере ниже мы экспортируем таблицу OracleTable в схеме OracleUser.
TABLES=OracleUser.OracleTable – это параметр, в котором мы указываем таблицу для экспорта (или несколько таблиц через запятую).
Пример импорта данных из дампа Oracle с помощью impdp
Сейчас давайте перейдем к импорту данных из дампа. Как Вы помните, для этих целей у нас существует утилита impdp.
Импорт схемы из дампа
Для импорта всей схемы запускаем утилиту impdp с параметром SCHEMAS. В случае если у Вас уже создана схема, которую Вы собираетесь импортировать, то ее предварительно нужно удалить. Для удаления схемы используйте следующий запрос в SQL*Plus или SQLDeveloper
После этого, для того чтобы импортировать схему, запускаем утилиту impdp со следующими параметрами
- system/Pa$$w0rd – это логин и пароль пользователя в СУБД;
- SCHEMAS=OracleUser – параметр, который указывает, что мы хотим импортировать конкретную схему (в нашем случае OracleUser);
- directory=ExportImport – параметр указывает директорию, в которой расположен файл дампа данных;
- dumpfile=DumpSCHEMAS.dmp – параметр для указания названия дамп файла;
- logfile=ImportSCHEMAS.log – параметр для указания названия лог файла импорта данных.
Импорт таблиц из дампа
Если Вы хотите импортировать одну или несколько таблиц, то можете использовать параметр TABLES, также как и при экспорте. В случае если таблица или таблицы уже созданы, т.е. существуют, то их необходимо или удалить вручную (DROP TABLE) или указать параметр TABLE_EXISTS_ACTION, который может принимать следующие значения:
Для примера давайте запустим impdp с параметром TABLE_EXISTS_ACTION=REPLACE, для того чтобы перезаписать существующую таблицу.
Заметка! Для изучения языка SQL как стандарта, чтобы его можно было использовать в любой СУБД, рекомендую почитать книгу «SQL код», в ней рассматриваются конструкции SQL, которые будут работать везде и не привязаны к какой-то конкретной СУБД.
Читайте также: