Словарь данных oracle это
Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы. Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет операторы DDL , DML . Обновление в этих таблицах происходит в фоновом режиме всякий раз, когда выполняется оператор DDL .
Сегменты отката UNDO (ROLLBACK)
Когда данные в Oracle изменяются, изменение должно быть или подтверждено, или отменено. Если изменение отменяется ("откатывается назад"), содержимое блоков данных восстанавливается в исходное состояние, существовавшее до изменения. Сегменты отката - это системные объекты , которые поддерживают этот процесс. Используются для хранения старых образов данных при выполнении транзакций .
Временные (TEMPORARY)
Временные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки .
Словарь ORACLE. Типы (группы) таблиц словаря. Получение информации о таблицах словаря. Отличия между v$, DBA_, USER_, ALL_ группами таблиц
Словарь данных. Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы, или словарь данных Oracle . Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет оператор DDL ( Data Definition Language - язык определения данных) либо оператор DML ( Data Manipulation Language - язык манипулирования данными). Эти таблицы никогда непосредственно не обновляются, однако обновление в них происходит в фоновом режиме всякий раз, когда выполняется оператор DDL . Главные таблицы словаря данных содержат нормализованную информацию, которая является довольно трудной для восприятия человеком, так что в Oracle предусмотрен набор представлений, выдающих информацию главных системных таблиц в более понятном виде. Oracle запрашивает информацию из таблиц словаря данных для синтаксического разбора любого оператора SQL . Информация кэшируется в области словаря данных разделяемого пула в SGA.
v$ - виртуальные представления словаря данных (доступны пользователю SYS), динамические таблицы производительности , доступные пользователю SYS, позволяют управлять производительностью работы сервера СУБД .
Префиксом USER снабжаются представления, наиболее интересные для обычного пользователя, объекты, владелец которых - текущий пользователь, префиксом ALL снабжаются все доступные пользователю представления и префиксом DBA - доступные пользователям с системными полномочиями, данные о БД .
Информацию из таблиц словаря можно выбирать с помощью оператора select . Информация о таблицах и представлениях словаря данных - dict ( dictionary ), информация о столбцах словаря данных - dict_columns . Информация о каждом параметре инициализации сервера БД (просмотр параметров экземпляра) - v$ parameter .
Oracle Database предлагает огромное число внутренних таблиц, позволяющих отслеживать изменения в объектах данных и решать проблемы, возникающие время от времени. Освоение этих ключевых таблиц очень важно, если вы хотите стать квалифицированным администратором баз данных Oracle. Все графические инструменты, подобные OEM, зависят от этих ключевых внутренних таблиц (и представлений) в сборе информации для мониторинга баз данных Oracle. Хотя вы можете предпочесть использование графических инструментов для решения административных задач Oracle, все же важно узнать как можно больше о внутренних таблицах. Знание этих таблиц поможет понять, что на самом деле происходит внутри базы данных Oracle Database .
Внутренние таблицы можно разделить на два больших типа: таблицы словаря со статическими данными и динамические таблицы производительности. Вам не придется обращаться к этим таблицам напрямую, взамен вы будете обращаться к хранимой в них информации через представления, основанные на них. Вы можете получить полный список всех представлений словаря данных с помощью следующего простого запроса:
В последующих разделах мы рассмотрим роль этих двух важных типов таблиц и представлений.
Словарь данных Oracle
Каждая база данных Oracle содержит набор таблиц, доступных только для чтения, и известных как словарь данных (data dictionary), который содержит метаданные (информацию о различных компонентах базы данных). Словарь данных Oracle — сердце системы управления базой данных, и знание его позволит стать экспертом-DBA. Если вы хорошо понимаете словарь данных, то можете легко выполнять задачи по управлению базой данных. Вы обращаетесь к доступным только для чтения таблицам словаря через представления, построенные на их основе. Представления подобны логическим таблицам, основанным реальных на таблицах Oracle. Администраторы баз данных Оракл и разработчики в большой степени зависят от словаря данных, поскольку он содержит информацию о различных компонентах базы данных. Эти таблицы содержат информацию о различных компонентах базы данных, таких как список таблиц, их столбцов, пользователей, их привилегий, имена файлов и табличных пространств и т.д. Простой запрос вроде приведенного ниже, вызовет несколько обращений к словарю данных, прежде чем Oracle выполнит его:
Важно заметить, что таблицы словаря данных ничего не сообщают об аспектах работающего экземпляра. Словарь данных содержит лишь информацию о структуре базы данных, такую как файлы базы данных, таблицы, функции и процедуры, а также информацию о пользователях. Другой набор представлений, называемый динамическими представлениями производительности, содержит информацию о текущем работающем экземпляре.
Совет. Таблицы словаря данных описывают всю базу данных: ее логическую и физическую структуру, использование свободного пространства, ее объекты с их ограничениями, а также информацию о пользователях. Вы не можете обращаться к таблицам словаря данных напрямую;вместо этого предоставляется доступ к представлениям, базирующимся на них. Вы не можете также самостоятельно изменять никакую информацию в таблицах словаря данных. Только Oracle может изменять данные в таблицах словаря. Когда, например, вы запускаете запрос,включающий столбец CITIES из таблицы под названием EMPLOYEES, база данных просматривает различные таблицы словаря данных, чтобы проверить существование этого столбца и этой таблицы, и подтвердить, что пользователь имеет право на выполнение этого оператора.Несложно представить, что тяжело нагруженной базе данных OLTP потребуется множество запросов к ее таблицам словаря данных на протяжении всего дня.
Суперпользователь Oracle по имени SYS владеет большей частью таблиц словаря данных (хотя некоторые создаются от имени пользователя SYSTEM), и они хранятся в табличном пространстве System.
Совет. Oracle рекомендует регулярно анализировать как таблицы словаря данных, так и динамические таблицы производительности (также называемые фиксированными таблицами), чтобы повышать производительность.
Получение свойств хранимого кода
Представление USER_PLSQL_0BJECT_SETTINGS (появившееся в Oracle10g) содержит информацию о следующих параметрах компиляции хранимого объекта PL/SQL :
- PLSQL_OPTIMIZE_LEVEL — уровень оптимизации, использовавшийся при компиляции объекта.
- PLSQL_CODE_TYPE — режим компиляции объекта.
- PLSQL_DEBUG — признак отладочной компиляции.
- PLSQL_WARNINGS — настройки предупреждений, использовавшиеся при компиляции объекта.
- NLS_LENGTH_SEMANTICS — семантика длины NLS, использовавшаяся при компиляции объекта.
Пара примеров возможного применения этого представления:
- Поиск программ, не использующих все возможности оптимизирующего компилятора (уровень оптимизации 1 или 0):
- Проверка отключения предупреждений у хранимых программ:
В представлении USER_PROCEDURES перечисляются все функции и процедуры с их свойствами. В частности, в представление USER_PROCEDURES включается настройка модели authid для программы ( definer или current_user ). Эта информация позволяет быстро определить, какие программы в пакете используют модель привилегий вызывающей стороны или создателя. Пример такого запроса:
Три набора представлений словаря данных
Oracle не позволяет обращаться к таблицам словаря данных напрямую. Он создает представления на базе этих таблиц и общедоступные синонимы для этих представлений, к которым могут обращаться пользователи. Существует три набора представлений словаря данных — USER, ALL и DBA, — каждый из которых содержит сходный набор представлений со сходным набором столбцов. Представления в каждой категории снабжены префиксом — USER, ALL или DBA. Каждый из этих наборов представлений показывает только информацию, для доступа к которой у пользователя имеются соответствующие привилегии, как описано ниже.
- USER. Представления USER показывают пользователю только те объекты, которыми он владеет. Эти представления полезны для пользователей, особенно разработчиков, для просмотра принадлежащих ему объектов, привилегий и т.п.
- ALL. Представления ALL показывают информацию об объектах, на доступ к которым у вас имеются соответствующие привилегии. Представления с префиксом ALL включают информацию о пользовательских объектах и всех прочих объектах,на доступ к которым есть права — непосредственно, или через принадлежность к роли.
- DBA. Представления DBA — наиболее мощные из всех. Пользователи, которым назначена роль DBA, могут обращаться к информации о любом объекте или любом пользователе в базе данных. Представления словаря, снабженные префиксом DBA — это именно те, что вы применяете для мониторинга и администрирования базы данных.
JS Функция копирования реализации
Itlist.invitercode; для контента копирования.
Просмотр словаря данных
Динамическое представление производительности создается сценарием: $ ORACLE_HOME / rdbms / admin / catalog.sql
Как создается словарь данных
Словарь данных создается автоматически, когда вы создаете базу данных. Ну, почти автоматически, потому что для этого потребуется вручную запустить сценарий catalog.sql (находящийся в каталоге $ORACLE_HOME/rdbms/admin), если вы не используете Database Configuration Assistant. Сценарий catalog.sql создает таблицы словаря данных, представления и синонимы, и они являются первыми объектами, наполняющими базу данных. Словарь данных, однажды созданный, должен оставаться в табличном пространстве System.
В оставшейся части этой главы вы ознакомитесь только с таблицами словаря данных DBA, поскольку в центре нашего внимания — управление базой данных. Существует множество таблиц и представлений словаря данных. Вы изучите наиболее полезные из представлений словаря в следующих нескольких разделах.
Интеллектуальная рекомендация
Словарь статических данных (представление статической производительности)
Views with the Prefix DBA_
Включает информацию обо всех объектах базы данных;
Views with the prefix DBA_ show all relevant information in the entire database.
DBA_ views are intended only for administrators.
Предполагается, что текущий пользователь имеет разрешение на доступ к этим базам данных и, как правило, должен иметь права администратора.
Views with the Prefix ALL_
Информация обо всех объектах, к которым у текущего пользователя есть права доступа;
По сравнению с user_ *, all_ * не должен владеть объектом, ему нужно только разрешение на доступ к объекту
Views with the Prefix USER_
Объекты по схеме текущего пользователя;
Servlet
Использование статических представлений словаря данных
Словарь данных содержит метаданные о вашей базе данных Oracle Database. Таблицы словаря данных и представления, основанные на них, называются статическими, потому что работающий экземпляр базы данных не модифицирует данные в этих таблицах и представлениях. Эти таблицы и представления модифицируются только при проведении изменений в самом словаре данных, например, создавая новую таблицу или нового пользователя. Независимо от того, управляете ли вы базой данных вручную или по средством изощренных графических инструментов, словарь данных (наряду с динамическими таблицами производительности) является источником всей информации о базе данных.
При компиляции программного модуля PL/SQL его исходный код сохраняется в базе данных Oracle. Это дает разработчикам два важных преимущества:
- Информацию о программном коде можно получить с помощью запросов SQL. Разработчики могут писать запросы и даже целые программы PL/SQL , которые читают информацию из представлений словаря данных и даже могут изменять состояние кода приложения.
- База данных Oracle управляет зависимостями между хранимыми объектами. В мире PL/ SQL не существует процесса «компоновки» исполняемых файлов, которые затем запускаются пользователями. База данных берет на себя все служебные операции, позволяя разработчику сосредоточиться на реализации бизнес-логики.
В следующих разделах представлены основные источники информации в словаре данных СУБД Oracle.
Конфигурация команд для конкурса навыков компьютерной сети
Базовая конфигурация сети В соревновании компьютерных сетевых приложений базовая конфигурация занимает определенную долю, в основном с участием пользователя устройства, интерфейса, локальной учетной з.
Анализ аргументов
Представление USER_ARGUMENTS может оказаться исключительно полезным для программиста: оно содержит информацию о каждом аргументе каждой хранимой программы в вашей схеме. Оно одновременно предоставляет разнообразную информацию об аргументах в разобранном виде и запутанную структуру, с которой очень трудно работать. Простой сценарий SQL*Plus для вывода содержимого USER_ARGUMENTS для всех программ в заданном пакете:
Более совершенная программа на базе PL/SQL для вывода содержимого USER_ARGUMENTS находится в файле show_aN_arguments.sp на сайте книги.
Вы также можете создавать более конкретные запросы к представлению USER_ARGUMENTS для выявления возможных проблем с качеством кодовой базой. Например, Oracle рекомендует воздерживаться от использования типа LONG и использовать вместо него LOB . Кроме того, тип данных CHAR с фиксированной длиной может создать проблемы; намного лучше использовать VARCHAR2 . Следующий запрос выявляет использование этих типов в определениях аргументов:
Представление USER_ARGUMENTS может использоваться даже для получения информации о программах пакета, которую трудно получить другим способом. Предположим, я хочу получить список всех процедур и функций, определенных в спецификации пакета. Что вы говорите? «Нет проблем — просто выдать запрос к USER_PROCEDURES ». И это был бы хороший ответ. вот только USER_PROCEDURES не сообщит вам, является ли программа функцией или процедурой (причем в зависимости от перегрузки она может быть и той и другой!)
Представление USER_ARGUMENTS содержит нужную информацию, но она хранится в далеко не очевидном формате. Чтобы определить, является ли программа функцией или процедурой, можно поискать в USER_ARGUMENTS строку данной комбинации «пакет/ программа», у которой значение POSITION равно 0. Это значение Oracle использует для хранения «аргумента» RETURN функции. Если оно отсутствует, значит, программа должна быть процедурой.
Следующая функция использует эту логику для возвращения строки, обозначающей тип программы (если она перегружена для обоих типов, функция возвращает строку « FUNCTION, PROCEDURE »). Обратите внимание: функция list_to_string , используемая в теле функции, определяется в файле:
Наконец, следует сказать, что встроенный пакет DBMS_DESCRIBE предоставляет программный интерфейс PL/SQL , который возвращает почти ту же информацию, что и USER_ARGUMENTS . Впрочем, эти два механизма отличаются некоторыми особенностями работы с типами данных.
Глобальное событие клавиатуры
Таблица данных словаря
Данные в таблице словаря данных - это системные данные, хранящиеся в системе Oracle, в то время как обычная таблица хранит данные пользователя.
Для удобства различения этих таблиц имена таблиц словаря данных заканчиваются на «$». Эти таблицы принадлежат пользователю SYS, и только Oracle может читать и писать.
Таблица словаря данных создается с помощью сценария $ ORACLE_HOME / rdbms / admin / sql.bsq.
Эти таблицы словаря данных под пользователем SYS хранятся в системном табличном пространстве, а имена таблиц заканчиваются на «$».
Чтобы упростить пользователям запросы к таблицам словаря данных, Oracle создала пользовательские представления для этих словарей данных, которые легко запомнить, а также скрывает связь между таблицей словаря данных и таблицей. Названы DBA_XXXX, ALL_XXXX и USER_XXXX.
Имитационная анимация и сенсор наклеек Мобайк
Сначала посмотрите на анимацию наклеек Mobike: Краткое изложение точек знаний: Используйте гравитационное поведение Использовать поведение при столкновении Используйте эластичное поведение Датчики, ис.
Словарь базы данных Oracle обычно создается при создании и установке базы данных. Словарь данных Oracle является основой системы базы данных Oracle. Без поддержки словаря данных система базы данных Oracle не может выполнять какую-либо работу. К таблицам в словаре данных нельзя получить прямой доступ, но к представлениям в словаре данных можно получить доступ.
Словарь данных Oracle состоит из таблиц и представлений, которые хранятся в табличном пространстве SYSTEM. К таблицам в словаре данных нельзя получить прямой доступ, но к представлениям в словаре данных можно получить доступ.
Представление словаря Oracle включает четыре уровня, а именно внутреннюю таблицу X $, таблицу словаря основных данных, представление словаря данных и представление динамической производительности ( v$ или GV$ начало).
Not all views sets have three members. For example, the data dictionary
contains a DBA_LOCK view but no ALL_LOCK view.
Мы видим, что v$ Точно v_$ Синоним, подтверждает предыдущую теорию представления производительности Oracle.
- 1. Информация обо всех объектах схемы в базе данных, таких как таблицы, представления, кластеры и индексы.
- 2. Сколько места выделено, сколько места используется в данный момент и т. Д.
- 3. Значение по умолчанию для столбца.
- 4. Ограничить целостность информации.
- 5. Имя пользователя Oracle.
- 6. Права, предоставленные пользователям и ролям.
- 7. Проверяйте информацию, доступную или используемую пользователями.
- 8. Другая генерируемая информация базы данных.
Словарь данных разделен на таблицу словаря данных и представление словаря данных
Динамические представления производительности (V$)
В дополнение к словарю данных Oracle поддерживает важнейший набор динамических таблиц производительности. Эти таблицы поддерживают информацию о текущем экземпляре, и Oracle постоянно их обновляет.
Набор виртуальных динамических таблиц называется таблицами X$. Oracle не разрешает прямой доступ к этим таблицам. Вместо этого создаются представления на базе всех этих таблиц, а затем — синонимы для таких представлений. Вы будете обращаться к этим представлениям, называемым представлениями V$, чтобы получить информацию о различных аспектах работающего экземпляра. Представления V$ — основа настройки производительности базы данных Oracle. Если вы хотите как следует освоить базу данных Oracle, то должны знать динамические представления V$, потому что они содержат всю важнейшую информацию об экземпляре Oracle.
Динамические представления производительности, подобно представлениями словаря данных, основаны на доступных только для чтения таблицах, обновлять которые может только Oracle. Некоторые из этих таблиц хранят информацию сеанса, а другие — информацию, касающуюся всей системы. Вы найдете динамические представления исключительно полезными для управления сеансами, выполнения операций резервного копирования и, что важнее всего, настройки производительности. Помните, однако, что динамические таблицы производительности заполняются только на протяжении работы экземпляра и очищаются при его останове.
Проверка ограничений размера
Представление USER_0BJECT_SIZE предоставляет информацию о размере программ, хранимых в базе данных:
- S0URCE_SIZE — размер исходного кода в байтах. Код должен находиться в памяти во время компиляции (включая динамическую/автоматическую перекомпиляцию).
- PARSED_SIZE — размер объекта в байтах после разбора. Эта форма должна находиться в памяти при компиляции любого объекта, ссылающегося на данный объект.
- C0DE_SIZE — размер кода в байтах. Код должен находиться в памяти при выполнении объекта.
Следующий запрос выводит кодовые объекты с размером больше заданного. Например, вы можете выполнить этот запрос для идентификации программ, закрепляемых в базе данных средствами DBMS_SHARED_P00L для того, чтобы свести к минимуму подгрузку кода в SGA :
Вывод и поиск исходного кода
Исходный код программ следует всегда хранить в текстовых файлах (или в средах разработки, предназначенных для хранения и работы с кодом PL/SQL за пределами Oracle). Однако хранение программ в базе данных позволяет использовать SQL-запросы для анализа исходного кода по всем модулям, что непросто сделать в текстовом редакторе.
Представление USER_SOURCE содержит исходный код всех объектов, принадлежащих текущему пользователю. Его структура такова:
Name | Null? | Type |
NAME | NOT NULL | VARCHAR2(30) |
TYPE | VARCHAR2(12) | |
LINE | NOT NULL | NUMBER |
TEXT | VARCHAR2(4000) |
Здесь NAME — имя объекта, TYPE — его тип (от программ PL/SQL до блоков Java и исходного кода триггеров), LINE — номер строки, а TEXT — текст исходного кода. Представление USER_SOURCE является чрезвычайно ценным источником информации для разработчиков. При помощи соответствующих запросов разработчик может:
- вывести строку исходного кода с заданным номером;
- проверить стандарты кодирования;
- выявить возможные ошибки и дефекты в исходном коде;
- найти программные конструкции, не выявляемые из других представлений. Предположим, в проекте действует правило, согласно которому отдельные разработчики никогда не должны жестко кодировать пользовательские номера ошибок из диапазона от -20 999 до -20 000 (поскольку это может привести к возникновению конфликтов). Конечно, руководитель проекта не может помешать разработчику написать следующую строку:
Но зато он может создать пакет, который находит все программы с подобными фрагментами. Это очень простой пакет, а его главная процедура имеет вид:
После компиляции этого пакета в схеме можно проверить присутствие в программах значений -20NNN :
Обратите внимание: третья строка не противоречит правилам; она выводится только потому, что условие отбора сформулировано недостаточно жестко.
Конечно, этот аналитический инструмент весьма примитивен, но при желании его можно усовершенствовать. Можно, к примеру, генерировать HTML-документ с информацией, размещая его в интрасети, или выполнять сценарии valstd каждое воскресенье средствами DBMS_JOB , чтобы в понедельник утром администратор мог проверить наличие данных обратной связи в интрасети.
Динамический словарь данных (динамическое представление производительности)
В дополнение к трем типам представлений в словаре статических данных, другие представления словаря в основном V$ Представления, так называемые, потому что все они основаны на V$ Или GV$ С начала.
Эти представления постоянно обновляются, чтобы предоставить информацию о работе памяти и диска, поэтому мы можем иметь к ним доступ только для чтения и не можем их изменять.
V$ Представление основано на X$ Виртуальный взгляд. V$ Представления принадлежат пользователю SYS. По умолчанию только пользователь SYS и пользователи с полномочиями системы DBA могут видеть все представления, а пользователи без полномочий DBA могут видеть представления USER_ и ALL_, но не DBA_ view.
В отличие от информации, ориентированной на базу данных в представлениях DBA_, ALL и USER_, эти представления визуально предоставляют информацию, ориентированную на экземпляр.
Представления словаря данных
Словарь данных Oracle — настоящие джунгли! Он изобилует полезной информацией, но найти путь к цели порой бывает очень непросто. В нем сотни представлений, основанных на сотнях таблиц, множество сложных взаимосвязей, специальных кодов и слишком много неоптимизированных определений представлений. Вскоре мы рассмотрим подмножество важнейших представлений, а пока выделим три типа (или уровня) представлений словаря данных:
- USER_* — представления с информацией об объектах базы данных, принадлежащих текущей схеме.
- ALL_* — представления с информацией об объектах базы данных, доступных в текущей схеме (либо принадлежащих ей, либо доступных благодаря соответствующим привилегиям). Обычно они содержат те же столбцы, что и соответствующие представления USER , с добавлением столбца OWNER в представлениях ALL .
- DBA_* — представления с информацией обо всех объектах базы данных. Обычно содержат те же столбцы, что и соответствующие представления ALL . Исключение составляют представления v$ , gx$ и x$ .
В этой статье мы будем работать с представлениями USER ; вы можете легко изменить любые сценарии и приемы, чтобы они работали с представлениями ALL , добавив в свою логику столбец OWNER . Вероятно, для разработчика PL/SQL самыми полезными будут следующие представления:
- USER_ARGUMENTS — аргументы (параметры) всех процедур и функций схемы.
- USER_DEPENDENCIES — все зависимости (входящие и исходящие) для принадлежащих текущей схеме объектов. Представление в основном используется Oracle для пометки неработоспособных объектов, а также средой разработки для вывода информации зависимостей в программах просмотра объектов. Примечание: для полного анализа зависимостей следует использовать представление ALL_DEPENDENCIES на случай, если программная единица будет вызвана другой программной единицей, принадлежащей другой схеме.
- USER_ERRORS — текущий набор ошибок компиляции для всех хранимых объектов (включая триггеры). Представление используется командой SQL*Plus SHOW ERRORS , описанной в этом блоге. Вы также можете писать собственные запросы к этому представлению.
- USER_IDENTIFIERS — представление появилось в Oracle11g , а для его заполнения используется утилита PL/Scope . Содержит информацию обо всех идентификаторах (имена программ, переменных и т. д.) в кодовой базе; исключительно полезный инструмент анализа кода.
- USER_0BJECTS — объекты, принадлежащие текущей схеме. Например, при помощи этого представления можно узнать, помечен ли объект как неработоспособный ( INVALID ), найти все пакеты, в имени которых присутствует EMP, и т. д.
- USER_0BJECT_SIZE — размер принадлежащих текущей схеме объектов. Точнее, это представление возвращает информацию о размере исходного, разобранного и откомпилированного кода. И хотя оно в основном используется компилятором и ядром времени выполнения, вы можете воспользоваться им для поиска больших программ в вашей среде — кандидатов для размещения в SGA .
- USER_PLSQL_0B3ECT_SETTINGS — представление появилось в Oracle10g. Содержит информацию о характеристиках объектов PL/SQL, которые могут изменяться командами DDL ALTER и SET : уровни оптимизации, параметры отладки и т. д.
- USER_PR0CEDURES — информация о хранимых программах (не только процедурах, как можно было бы подумать по названию) — например, модель AUTHID, признак детерминированности функций и т. д.).
- USER_S0URCE — исходный код всех принадлежащих текущей схеме объектов (в Oracle9i и выше — вместе с триггерами баз данных и исходным кодом Java). Это очень удобное представление — вы можете применять к нему всевозможные средства анализа исходного кода, используя SQL и особенно Oracle Text.
- USER_ST0RED_SETTINGS — флаги компилятора PL/SQL. Это представление поможет узнать, какие программы были откомпилированы в код аппаратной платформы.
- USER_TRIGGERS и USER_TRIG_C0LUMNS — триггеры базы данных, принадлежащие текущей схеме (включая исходный код и описание инициирующих событий), а также столбцы, связанные с триггерами.
Для просмотра структуры любого из этих представлений можно либо воспользоваться
командой DESCRIBE в SQI*Plus , либо обратиться к документации Oracle. Примеры использования этих представлений приведены в следующем разделе.
Вывод информации о хранимых объектах
В представлении USER_0BJECTS содержится ключевая информация об объекте:
- 0BJECT_name — имя объекта.
- OBJECT_TYPE — тип объекта ( PACKAGE, FUNCTI0N, TRIGGER и т. д.).
- STATUS — состояние объекта ( VALID или INVALID ).
- LAST_DDL_TIME — время последнего изменения объекта.
Следующий сценарий SQL*Plus выводит информацию о состоянии объектов PL/SQL :
Результат работы сценария выглядит примерно так:
OBJECT_TYPE | OBJECT_NAME | STATUS |
FUNCTION | DEVELOP ANALYSIS | INVALID |
NUMBER OF ATOMICS | INVALID | |
PACKAGE | CONFIG_PKG | VALID |
EXCHDLR PKG | VALID |
Обратите внимание на два модуля с пометкой INVALID . О том, как вернуть программный модуль в действительное состояние VALID , будет рассказано далее.
Анализ использования идентификаторов (Oracle Database 11g)
Проходит совсем немного времени, и рост объема и сложности кодовой базы создает серьезные проблемы с сопровождением и эволюцией. Допустим, мне потребовалось реализовать новую возможность в части существующей программы. Как убедиться в том, что я правильно оцениваю последствия от появления новой функции, и внести все необходимые изменения? До выхода Oracle Database 11g инструменты, которые могли использоваться для анализа последствий, в основном ограничивались запросами к ALL_DEPENDENCIES и ALL_SOURCE . Теперь, с появлением PL/Scope , я могу выполнять намного более подробный и полезный анализ.
PL/Scope собирает информацию об идентификаторах в исходном коде PL/SQL при компиляции кода и предоставляет собранную информацию в статических представлениях словарей данных. Собранная информация, доступная через USER_IDENTIFIERS , содержит очень подробные сведения о типах и использовании (включая объявления, ссылки, присваивание и т. д.) каждого идентификатора, а также о местонахождении использования в исходном коде.
Описание представления USER_IDENTIFIERS :
Name | Null? | Type |
NAME | VARCHAR2(128) | |
SIGNATURE | VARCHAR2(32) | |
TYPE | VARCHAR2(18) | |
OBJECT_NAME | NOT NULL | VARCHAR2(128) |
OBJECT_TYPE | VARCHAR2(13) | |
USAGE | VARCHAR2(11) | |
USAGE_ID | NUMBER | |
LINE | NUMBER | |
COL | NUMBER | |
USAGE_CONTEXT_ID | NUMBER |
Вы можете писать запросы к USER_IDENTIFIERS для поиска в коде разнообразной информации, включая нарушения правил об именах. Такие редакторы P L/SQL , как Toad, наверняка скоро начнут предоставлять доступ к данным PL/Scope , упрощая их использование для анализа кода. А пока этого не произошло, вам придется строить собственные запросы (или использовать написанные и опубликованные другими разработчиками).
Чтобы использовать PL/Scope , необходимо сначала приказать компилятору PL/SQL проанализировать идентификаторы программы в процессе компиляции. Для этого следует изменить значение параметра компилятора PLSC0PE_SETTINGS . Это можно делать на уровне сеанса и даже для отдельной программы, как в следующем примере:
Чтобы узнать значение PLSC0PE_SETTINGS для любой конкретной программы, обратитесь с запросом к USER_PLSQL_0BJECT_SETTINGS .
После включения PL/Scope при компиляции программы Oracle будет заполнять словарь данных подробной информацией об использовании каждого идентификатора в программе (переменные, типы, программы и т. д.).
Рассмотрим несколько примеров использования PL/Scope . Допустим, я создаю следующую спецификацию пакета и процедуру с включенной поддержкой PL/Scope:
Настройки PL/Scope проверяются следующим образом:
Проверка объявлений, обнаруженных в процессе компиляции этих двух программ:
Теперь я могу получить информацию обо всех локально объявляемых переменных:
Впечатляет, однако возможности PL/Scope этим не ограничиваются. Я могу получить информацию обо всех местах программы, в которых используется эта переменная, а также о типе использования:
Даже из этих простых примеров видно, что PL/Scope предоставляет выдающиеся возможности для того, чтобы лучше разобраться в коде и проанализировать изменения. Лукас Джеллема из AMIS предоставил более интересные и сложные примеры использования PL/Scope для проверки имен. Соответствующие запросы содержатся в файле 11g_plscope_amis.sql на сайте книги.
Кроме того, я создал вспомогательный пакет и демонстрационные сценарии, которые помогут вам начать работу с PL/Scope. Просмотрите файлы plscope_helper*.* , а также другие файлы plscope*.*.
Эта статья организована из Интернета.
I. Обзор
Словарь данных ORACLE является важной частью базы данных ORACLE, он предоставляет такие как структура базы данных, пара базы данных
Информация о базах данных, таких как распределение пространства и пользователей баз данных.
Словарь данных в Oracle можно разделить на таблицу словаря данных и динамическое представление производительности в соответствии с их существующей формой.
1. Таблица данных словаря
Нет никакой разницы между таблицей словаря данных и таблицей, созданной пользователем, но данные в таблице словаря данных - это системные данные, хранящиеся в системе Oracle, а обычная таблица хранит данные пользователя. Для удобства различения этих таблиц имена этих таблиц Он заканчивается на «$». Когда вы видите таблицы, заканчивающиеся на «$» в выражении SQL, это может быть таблица словаря данных. Для таблицы словаря данных данные внутри поддерживаются самой системой базы данных, поэтому, хотя операторы DML можно использовать для изменения содержимого данных, например, обычных таблиц, лучше не делать это самостоятельно, поскольку все эти таблицы полезны. Внутренний для базы данных.
Здесь все пользователи таблицы словаря данных - это sys, которая существует в табличном пространстве системы, а имена таблиц заканчиваются на «$». Чтобы упростить пользовательский запрос таблицы словаря данных, такое имя r не способствует нашей памяти, поэтому Oracle создала представления пользовательских представлений для этих словарей данных, которые не только имеют более легко принимаемое имя, но и скрывают связь между таблицами и таблицами словаря данных. Давайте запросим байты через представление, простое и наглядное, Oracle нацеливается Для области действия этих объектов представления называются DBA_XXXX, ALL_XXXX и USER_XXXX, соответственно.
DBA_XXXX может видеть всю информацию в словаре данных
ALL_XXXX может видеть всю информацию, которую может видеть этот пользователь
USER_XXXX - это просто информация, принадлежащая этому пользователю.
Эти представления создаются пользователем sys, поэтому необходимо добавить использование sys. Очевидно, что это слишком много проблем, поэтому Oracle установил общедоступный синоним с таким же именем для заголовка представления каждой таблицы словаря данных. Эта простая обработка Устранить проблемы написания системы.
2. Динамическое представление производительности
Информация об объектах базы данных, такая как таблицы, пользователи, хранимые процедуры, функции, представления, индексы и т. Д. Информация об этих объектах в базе данных хранится в таблице словаря данных, мы можем позаимствовать немного лучше Oracle Средства разработки, такие как PLSQL, для их просмотра или непосредственно через SQL-запрос к таблице словаря данных, чтобы получить информацию об объекте. Однако в метаинформации базы данных, помимо статической информации об этих объектах, некоторая информация о времени выполнения базы данных также очень полезна и более значима для нас. Например, сколько существует сеансов, какие процессы выполняются в экземпляре и какое состояние системы сейчас? Вы можете видеть, что эта информация является динамической информацией во время выполнения экземпляра, а не фиксированной информацией и может быть информацией в разное время. Иными словами, чтобы иметь возможность изучать динамическую информацию об этих экземплярах в одном и том же состоянии для выполнения обслуживания, Oracle предоставляет динамическое представление производительности.С помощью этого динамического представления производительности мы можем узнать о некоторой динамически изменяющейся информации о состоянии внутри экземпляра.
Динамическое информационное представление также является своего рода словарем данных, который также можно найти в словаре, а те, которые начинаются с v $, представляют собой динамические представления производительности, о которых мы упоминали здесь. Например, V $ Session.
3. Простое приложение (я не проверял это)
Используйте функцию словаря данных, чтобы переименовать столбцы в таблице. Конечно, вы также можете использовать простой язык ddl, такой как ALTER TABLE table_name RENAME COLUMN old_col TO new_col; ниже приведен код реализации
Метод вызова (может немного отличаться в разных средах):
Анализ и изменение состояний триггеров
Запросы к триггерным представлениям ( USER_TRIGGERS, USER_TRIG_COLUMNS ) обычно используются для решения следующих задач:
- Включение или отключение всех триггеров для заданной таблицы. Вместо того чтобы писать код вручную, вы выполняете соответствующие команды DDL из кода PL/SQL. Пример такой программы приведен в статье «Сопровождение триггеров».
- Поиск триггеров, выполняемых при изменении некоторых столбцов, но не имеющих предложения секции WHEN . Следующий запрос поможет найти триггеры, не имеющие секции WHEN , которые являются источниками потенциальных проблем:
Читайте также: