Сью Харпер

Документирование, контроль и управление
(Document, Monitor, and Manage, by Sue Harper)

Источник: журнал «Oracle Magazine”, 2008, #5, http://www.oracle.com/technology/oramag/oracle/08-sep/o58sql.html

Иcпользуйте преимущества новых возможностей в Oracle SQL Developer 1.5.

Oracle SQL Developer 1.5 предоставляет большое количество новых возможностей. Даже те возможности, которые кажутся на первый взгляд незначительными, могут существенно помочь в ежедневной работе. В этой статье рассматриваются возможности Oracle SQL Developer 1.5, которые помогают документировать и управлять объектами базы данных и схем. Вы узнаете как:

  • Легко разделять информацию об объектах с другими участниками проектов;
  • Использовать отчеты для получения информации о сессиях и табличных пространствах базы данных, удалять сессии и закрывать базу данных;
  • Использовать преимущества утилит экспорта и копирования для упрощения работы с несколькими схемами.

Старт

Для выполнения упражнений этой статьи требуется Oracle SQL Developer 1.5.1. Если есть установленная промышленная версия Oracle SQL Developer 1.5, откройте и используйте Help -> Check For Updates, чтобы обновить её до версии Oracle SQL Developer 1.5.1. В противном случае, скачайте полную версию инсталляции Oracle SQL Developer 1.5.1 с OTN и разверните в новую пустую папку. (Не разворачивайте её в в существующую папку Oracle SQL Developer).

Во время инсталляции можно перенести существующие предпочтения (preferences) и соединения базы данных с Oracle SQL Developer 1.2.x или 1.5 на Oracle SQL Developer 1.5.1. Если вы не хотите переносить предпочтения, можно после инсталляции просто импортировать соединения базы данных из любой, более ранней версии. Чтобы импортировать соединения:

  1. Запустите более раннюю версию Oracle SQL Developer.
  2. Выберите Connections (Соединения) в Навигаторе Соединений (Connections Navigator).
  3. Щелкните правой кнопкой мыши и выберите Export Connections (Экспорт Соединений).
  4. Выберите подходящую папку, введите имя файла, например connections.xml, и нажмите Save.
  5. Закройте предыдущую версию и запустите Oracle SQL Developer 1.5.1.
  6. Выберите Connections в Навигаторе Соединений.
  7. Щелкните правой кнопкой мыши и выберите Import Connections (Импорт Соединений).
  8. Найдите файл, который вы только что сохранили, нажмите на Open, и нажмите на OK.

Для выполнения примеров этой статьи необходимо также иметь доступ к демонстрационным схемам HR и OE в экземпляре базы данных.

Генерация документации базы данных

Есть возможность генерировать документацию о своей схеме в формате HTML для того, чтобы использовать её самому или разделять с другими пользователями. Необходимо выполнить следующие шаги, чтобы сгенерировать и просмотреть документацию о схеме:

  1. Если нет соединения со схемой HR, создайте и назовите его HR_ORCL. (Более подробную информацию по созданию соединения можно найти в “Creating a Database Connection”, а также в статье “Making Database Connections” в номере за май/июнь 2008г. журнала Oracle Magazine.)
  2. Щелкните правой кнопкой мыши по соединению HR_ORCL и выберите Generate DB Doc.
  3. Выберите или создайте подходящую папку для сгенерированных файлов, например \working. Если необходимо разделять сгенерированные файлы с другими, используйте разделяемые файлы, расположенные на сервере. (Можно также перенести или скопировать сгенерированные файлы.)

Файл должен автоматически открыться в браузере по умолчанию. Если этого не произошло, перейдите в браузере к файлу \working\index.html и откройте его. Чтобы увидеть информацию о любом объекте в HTML документации, выберите тип объекта в панели схемы слева вверху. В панели, расположенной под панелью схемы, появятся все объекты этого типа. Выберите там объект, чтобы увидеть информацию о нем в центральной панели. Например, чтобы увидеть информацию о таблице EMPLOYEES, выберите Tables из верхней панели и EMPLOYEES из нижней панели (см. Рисунок 1).


Рисунок 1: Генерирование документации для схемы HR

Контроль и управление с помощью отчетов

Пункт меню View -> Reports в Oracle SQL Developer позволяет выбрать несколько стандартных системных отчетов, чтобы просмотреть информацию о базе данных и схемах. Для удобства реализован доступ к двум отчетам также из меню Tools и Навигатора Соединений. Оба отчета предназначены для привилегированных пользователей, таких как SYSTEM или SYS. (С некоторыми ограничениями их может запустить и непривилегированный пользователь, например, HR.)

Отчет Sessions показывает информацию о текущих активных и неактивных сессиях. Необходимо выполнить следующие шаги, чтобы посмотреть отчет Sessions:

  1. Создать новое соединение SYSTEM_ORCL для пользователя SYSTEM.
  2. Выбрать Tools -> Monitor Sessions.
  3. Выбрать SYSTEM_ORCL в диалоговом окне Select Connection и нажать OK, чтобы открыть отчет.

Привилегированные пользователи могут удалить сессию из отчета Sessions, скажем, если пользовательская сессия завершилась некорректно. (Пользователь HR не может удалять сессии). Например, если соединение HR из предыдущего упражнения еще активно, выберите сессию HR в отчете Sessions, который вы сейчас сгенерировали, щелкните правой кнопкой мыши, выберите Kill Session и нажмите Apply.

Другим отчетом, доступным на этом уровне, является отчет Manage Database (Управление базой данных). Щелкните правой кнопкой мыши по соединению SYSTEM_ORCL в Навигаторе Соединений и выберите Manage Database. Отчет отображает информацию о табличных пространствах в базе данных. Если запустить этот отчет из соединения SYS, можно остановить и перезапустить базу данных непосредственно из Oracle SQL Developer. (Кнопка Shutdown недоступна для непривилегированных пользователей.)

Копирование объектов в новую схему

Работа с несколькими схемами часто включает в себя копирование объектов и их данных из одной схемы в другую. В Oracle SQL Developer существует множество способов сделать это, включая следующие:

  • Копировать объекты шаг за шагом, сначала создав и выполнив команду языка определения данных (DDL), чтобы создать таблицу, и затем, запустив серию операторов insert, чтобы вставить новые данные.
  • Использовать Table -> Copy, чтобы создать копию таблицы с данными.
  • Использовать Tools -> Database Copy, чтобы создать копию базы данных.
  • Использовать мастер Database Export, чтобы создать операторы DDL и insert для нескольких таблиц и других объектов базы данных.

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

  1. Создайте новое соединение OE_ORCL для схемы OE.
  2. Выберите соединение OE_ORCL, и разверните узел Tables.
  3. Щелкните правой кнопкой мыши по таблице CATEGORIES, и выберите Export DDL -> Save to Worksheet (см. рисунок 2).


Рисунок 2: Экспорт DDL в рабочую область SQL

SQL-оператор, который появляется в рабочей области SQL, включает имя схемы OE, поэтому он не подходит для запуска в новой схеме. (Синтаксис для этого SQL собирается с использованием пакета DBMS_METADATA и настраивается с помощью набора предпочтений.) Чтобы перегенерировать SQL без имени схемы OE, выполните следующие шаги:

  1. Выберите Tools -> Preferences, разверните в дереве узел Database и выберите ObjectViewer Parameters.
  2. Снимите флажки в Show Storage и Show Schema, и выберите Show Constraints as Alter.
  3. Нажмите OK.
  4. Очистите рабочую область SQL и повторите шаги, описанные ранее: щелкните правой кнопкой мыши по таблице CATEGORIES, и выберите Export DDL -> Save to Worksheet. Обратите внимание, что SQL код в рабочей области больше не содержит префикс OE.

Теперь скопируйте таблицу CATEGORIES и её данные в схему HR_ORCL, выполнив следующие шаги:

  1. Выберите соединение HR_ORCL в списке Connections рабочей области SQL и щелкните Run Script (или нажмите F5), чтобы выполнить отображаемый DDL в схеме HR.
  2. Разверните узел HR_ORCL, и выберите новую таблицу CATEGORIES. Обратите внимание, что она не содержит данных.
  3. Щелкните по таблице CATEGORIES соединения OE_ORCL в Навигаторе Соединений, и выберите Export Data -> Insert.
  4. В диалоговом окне Export Data выберите вывод в буфер обмена и нажмите Apply.
  5. Откройте новую рабочую область для пользователя HR_ORCL и нажмите Ctrl-V, чтобы вставить содержимое буфера обмена.
  6. Щелкните Run Script (или нажмите F5), чтобы выполнить SQL.
  7. Щелкните по кнопке Commit (или нажмите F11), и выберите данные таблицы CATEGORIES в соединении HR_ORCL.

Предыдущие шаги копировали только одну таблицу и её данные. Более быстрой альтернативой для копирования одного объекта с данными является команда Copy контекстного меню:

  1. Щелкните правой кнопкой мыши по таблице INVENTORIES соединения OE_ORCL и выберите Table -> Copy.
  2. В диалоговом окне Copy выберите владельца новой таблицы HR, введите новое название таблицы INVENTORIES и выберите Include Data.
  3. Нажмите Apply.
  4. Обновите узел Tables соединения HR_ORCL, чтобы увидеть новую таблицу INVENTORIES.

Для создания DDL кода для нескольких таблиц и их данных используйте мастер Database Export. Чтобы скопировать группу таблиц из схемы OE в схему HR, выполните следующие шаги:

  1. Выберите Tools -> Database Export. Укажите подходящий каталог для файла и примите имя файла по умолчанию export.sql. (Можно задать путь по умолчанию для этого файла, выбрав Tools -> Preferences, развернув узел Database в дереве и задав Select default path, чтобы сохранить информацию об экспорте в предпочтениях.)
  2. В мастере экспорта выберите соединение OE_ORCL и убедитесь, что опции Storage (Память) и Show Schema (Показать схему) не выбраны. Выберите Include Drop Statement (Включить оператор drop) и Automatically Include Dependent Objects (Автоматически включить зависимые объекты). Нажмите Next.
  3. В окне Types to Export (Типы для экспорта) уберите флажок с опции Toggle All и выберите Tables and Data. Нажмите Next.
  4. В окне Specify Objects (Определить объекты) под списком OE, нажмите Go, чтобы заполнить список выбранных таблиц. Переместите только таблицу OE.ORDER_ITEMS в правую панель. Нажмите Next.
  5. В окне Specify Data (Определить данные) нажмите Go, чтобы заполнить список таблиц. Переместите только таблицу OE.ORDER_ITEMS в правую панель и выделите её, чтобы подсветить. В пустом поле внизу введите order_id < 2355 и нажмите Apply Filter (см. Рисунок 3). Нажмите Next и затем Finish.


Рисунок 3: Экспорт базы данных

Обратите внимание, что скрипт, который теперь появился в рабочей области SQL, включает дополнительные таблицы, это потому, что ограничения целостности, не созданные здесь, зависят от этих таблиц. Также обратите внимание, что возвращается ограниченный набор данных.

Выберите HR_ORCL из списка соединений рабочей области SQL и запустите скрипт. Выполните commit, чтобы сохранить изменения, и затем обновите узел HR_ORCL, чтобы увидеть таблицы, которые мастер экспорта базы данных (Database Export) скопировал из схемы OE_ORCL.

Наконец, эффективным способом копирования объектов в другую схему в Oracle SQL Developer является использование копирования базы данных (Database Copy). Вместо того, чтобы создавать скрипт с операторами вставки, копирование базы данных вставляет данные в новую таблицу в фоновом режиме. Копирование базы данных также копирует BLOB и CLOB в новую схему.

Чтобы завершить это сравнительное упражнение используйте Копирование базы данных, чтобы скопировать группу объектов в схему HR:

  1. Выберите Tools -> Database Copy. Выберите значение OE_ORCL для Source Connection и HR_ORCL для Destination Connection. Обратите внимание, что здесь есть только следующие возможности: создать новые объекты, усечь данные в существующих объектах (чтобы заменить их новыми данными) или удалить (и заменить) объекты.
  2. Выберите Truncate Objects (Усечь объекты), и нажмите Next. В итоговой информации о копировании (Copy Summary) указано, что все таблицы будут усечены. Это не то, что нам нужно, поэтому нажмите Back, выберите Create Objects (Создать объекты), и нажмите Next. Это гарантирует, что существующие объекты не будут удалены или усечены.
  3. Нажмите Finish.
  4. Просмотрите таблицы и данные, созданные в соединении HR_ORCL.

Экспорт базы данных и копирование базы данных отличаются двумя важными моментами. Экспорт базы данных позволяет выбирать типы объектов для экспорта и внутри каждой категории ограничивать отдельные экземпляры объектов. Также, при экспорте базы данных можно выбрать генерацию операторов GRANT, включить операторы DROP и создать операторы INSERT, получив таким образом возможность создать скрипт, который можно запускать по желанию в новых или существующих схемах.

Заключение

В этой статье рассматриваются возможности, предоставляемые Oracle SQL Developer 1.5. Можно повысить свою производительность, используя новые способы для просмотра и совместного использования подробной информации о базе данных, контроля и управления сессиями, и копирования объектов между схемами.


Sue Harper (Сью Харпер) – старший менеджер по продуктам отделения Oracle, расположенного в Лондоне. Её технический блог sueharper.blogspot.com посвящён исследованию возможностей Oracle SQL Developer.

E-mail this page