oracle dba что это
Различие между «SYSDBA», «SYSOPER» и «DBA» в базе данных Oracle
Начинающий разработчики часто путают SYSDBA и DBA между собой. Поэтому столь необходимо осветить различие между ними. Вкратце, SYSDBA – это системная привилегия, а DBA – это роль.
SYSDBA и SYSOPER – это специальные привилегии администратора, которые позволяют выполнять базовые задачи администрирования: запуск или остановка истанса; создание, удаление, открытие или монтирования базы и др. Роль DBA не включает SYSDBA или SYSOPER.
О системной привилегии SYSDBA
Привилегии SYSDBA и SYSOPER позволяют получать доступ к базе данных, даже если база не открыта. Контроль этих привилегий находится за пределами компетенции самой базы данных. SYSDBA и SYSOPER могут также быть расценены как тип подключения, который позволяет выполнять определённые операции для которых привилегии не могут быть назначены другим способом.
Обзор возможностей каждой из привилегий:
Выборка пользователей, которые имеют SYSDBA или SYSOPER привилегии:
SQL>column sysdba format a10
SQL>column sysdba format a10
SQL>select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
———- ——– ———-
SYS TRUE TRUE
SCOTT TRUE FALSE
О DBA роли
Роль DBA – это предопределённая роль, которая автоматически создаётся для каждой базы данных Oracle. Эта роль содержит все системные привилегии, кроме SYSDBA и SYSOPER. Поэтому она очень мощная и должна назначаться только администраторам, которым требуется полный доступ.
Выборка всех ролей с базы данных:
SQL> select role from dba_roles;
ROLE
———–
CONNECT
RESOURCE
DBA
…..
Выборка всех пользователей, которым назначена DBA роль:
SQL>select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———– ——————- —– ——
SYS DBA YES YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES
Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:
ORA-01931: cannot grant SYSDBA to a role
Для пользователя базы данных могут быть назначены роль DBA и привилегия SYSDBA:
SQL> select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———- ——————- —— —–
SYS DBA YES YES
SCOTT DBA NO YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES
Литература: Oracle® Database Administrator’s Guide
Кто такой — DBA. Краткий обзор
По материалам статьи Steve Jones на sqlservercentral.com: « What’s a DBA? — An Overview»
Я получаю этот вопрос уже больше чем несколько раз. Обычно он исходит от кого-то, кто желает стать DBA или только начинает свой путь на этом поприще, но я думаю, что администраторы также часто задаются вопросом, чем же является DBA и почему он так необходим. Почему не возможно эту работу поручить только системному администратору? Или старшему разработчику? Есть большое количество серьезных причин, по которым и я думаю, что DBA выполняет важную, узкоспециализированную работу в компании.
Я начал писать эту статью в прошлом году, но это быстро превратилось в длинный цикл статей. Сейчас, я хочу нарушать последовательность изложения цикла и сделать краткий обзор того, чем должен заниматься DBA с учётом полученных от читателей замечаний, предложений и т.п. Эта статья о том, как я вижу роль DBA, и основывается на более детальных статьях, относящихся к режимам работы и ролям различных типов DBA, которые я вижу в мире.
Кто такой — DBA?
Существует большое количество различных режимов работы DBA и не существует хорошего описания содержания его работы. Из того, что я видел, есть несколько основных типов DBA:
Быть DBA (вообще) утомительное занятие. Вы должны планировать развитие базы на будущее, резервировать место, где ваша схема будет размещаться или расширяться. План роста чреват множеством ошибок и просчётов. Эта работа не похожа на программирование с помощью «C» или Visual Basic, когда ответственность ограничивается уровнем пользовательского приложения. Ваши решения затрагивают все данные и имеют далеко идущие последствия. Так как Вы работаете в ориентируемой на массивы данных среде (set-oriented), Вы можете легко допустить ошибку, которая затронет большое количество элементов этих данных. В отличие от класса или структуры, где Вы имеете дело с не большими порциями данных (то есть, один пользователь), единственный SQL запрос может затронуть всех пользователей структуры. Скольких из Вас мучили сомнения при написании delete с предложением where?
Кто должен заботится о системе?
В разных компаниях это может выполняться по-разному. Вообще, в малых компаниях, DBA мог бы исполнять все перечисленные выше роли и применять сервисные пакеты, обновления и т.д. В больших фирмах, DBA не успеет делать дополнительно что-нибудь на NT/UNIX, а сможет только обслуживать само приложение (SQL/Oracle/DB2, и т.д.). В моей компании, я обслуживаю всё, что связано с SQL, включая сервисные пакеты для SQL. Сервисные пакеты для NT/2000 и заплаты применяются sysadmin-ом. Он также заменяет/добавляет жесткие диски, память и т.п. Исполняет резервирование на ленты. Я просто гарантирую, что SQL Server будет работать в требуемом режиме и довожу до сисадмина, нуждаюсь ли я в чём-либо.
Трудно решить, хотите ли Вы стать DBA. С одной стороны это может быть скучно, если всё работает хорошо (для меня это теперь вид раздражения). Но когда что-либо ломается, возникает огромное давление и напряжение. Варианты поведения, когда база данных «умерла» и Президент компании заходит в Ваш офис, чтобы спросить о её состоянии, не преподают ни в какой школе.
Подготовка к DBA-DOM
Изучайте реляционную теорию баз данных. Читайте об этом, и о том, что люди думают по этому поводу. IMHO (по моему скромному мнению), нет никакого «правильного» пути, но существует большое количество особенностей в любом отдельно взятом дизайне. Учитесь столько, сколько Вы можете, и затем принимайте решение, которое соответствует вашей ситуации. Я имею большой опыт в организации сети также как и в программировании, и я думаю, что это действительно мне помогает. Я понимаю, как построена операционная система, и я имею представление, что происходит внутри компьютера. Знание того, как данные перемещаются по сети, также поможет спроектировать лучшую систему и избежать многих проблем. В сегодняшнем мире, я думаю, понимание принципов сетевых соединений является очень важным. В MS мире умение программировать систему требуется только если Вы хотите быть системным программистом. В *nix мире, знание того, как разрабатываются системные утилиты полезно, но я не думаю, что это обязательно требуется.
Заключение
Всё, что изложено в этой статье — это моё мнение и мои эмоции, основанные на личном опыте и изучении соответствующих материалов. Я уверен — некоторые люди, не согласятся со мной, но я хочу иметь обратную связь, чтобы вносить изменения в эту статью. Я особенно хотел бы получить замечания и дополнения от non-SQL Server DBAs. Если Вы знаете кого-то, кто является Oracle, DB2 или другого типа DBA, пожалуйста перешлите ему(ей) эту статью, и попросите, чтобы они послали мне своё мнение об этой статье Steve Jones
Oracle dba что это
Базы данных и СУБД занимают центральное место на рынке ИТ-технологий. Их значение особенно возросло с развитием направления Data Science. Согласно рейтингу DB-Engines лидером рейтинга баз данных, показывающим рост на рынке, является Oracle.
Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на позиции Oracle DBA
1. Oracle Database Administrator (DBA): какими знаниями и навыками он должен обладать?
2. Инструментарий Oracle Database Administrator (DBA)?
3. Каковы требования компании к уровню образования потенциальных сотрудников?
4. Какие требования предъявляются к опыту работы?
5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Максим Филатов, старший администратор баз данных Oracle, компания «Яндекс»
1 Это зависит от того, какой перед нами DBA. Это может быть старший или младший администратор. Например, младший DBA обычно обладает довольно скудными знаниями ОС и баз данных СУБД. В то время как старший DBA обладает хорошими знаниями ОС, СУБД, сетей, железа и архитектуры проекта в целом. Также старший DBA нередко выступает в роли Team Lead, соответственно, на его плечи ложится и управление отделом или группой.
Что касается технической составляющей, хороший Oracle DBA должен знать следующие аспекты:
Сеть. Сетевое взаимодействие, связность и маршрутизация. На базовом уровне уметь и понимать настройку маршрутизаторов.
Безопасность на уровне сети, firewall и влияние на связность. Уметь диагностировать проблемы, связанные с сетью. Операционная система. Нужно уметь ее устанавливать, настраивать, оптимизировать, диагностировать, обновлять. Каждый из этих пунктов очень широк.
СУБД. Установка, настройка, диагностирование, оптимизация, бэкапы, миграция, обновление, распределенное взаимодействие, написание кода.
Так же и в операционной системе каждый пункт можно рассмотреть достаточно широко и при собеседованиях, по каждому из этих пунктов можно довольно долго и детально поговорить.
Еще немаловажный фактор это то, что все перечисленные аспекты и пункты нужно объединить в мониторинг, чтобы при возникновении проблем администратор узнал раньше, чем пользователь.
2 Есть стандартные инструменты, а есть наборы для каждого свои. Из стандартных это инструменты для разработки и просто выполнения запросов: sqlplus, Toad, PL/SQL Developer, SQL Developer. Из нестандартного это обычно самописные скрипты, которые либо самостоятельно собирают информацию из v$-представлений, либо комбинируют их с информацией из dbms_*-семейства пакетов. Есть еще инструменты snapper и oratop, они мало известны, но крайне эффективны. Также удобно пользоваться всякого рода инструментами профилирования, которые показывают распределение затраченного времени на операции внутри сессии. К ним относятся tkprof, mprof, orasrp. Также различные инструменты диагностики и рекомендаций: awr, ash, addm.
3 Требования обычные: высшее образование, но гораздо важнее опыт кандидата.
4 Все зависит от того, на какую позицию претендует кандидат, в какую компанию и на какой проект. К младшему могут предъявляться требования чуть ниже среднего, к старшему самые высокие, со знанием архитектуры и опытом построения нового проекта.
5 Такие требования могут быть только касаемо оборудования. В плане ПО все достаточно стандартно.
Павел Тришин, инженер технической поддержки в Oracle
1 Знание архитектуры базы данных, хотя бы поверхностное знание набора утилит, поставляемых с инсталляцией, знание SQL/PL_SQL, умение программировать.
А дальше уже в зависимости от специфики:
Очень пригодится знание английского языка (желательно выше уровня «читаю техническую документация со словарем»).
2 Даже сейчас, в 2018-м, это старая добрая консоль. Несмотря на то что для RDBMS Oracle написано много GUI-клиентов, главным и универсальным средством работы с базой по-прежнему остается набор консольных утилит, поставляемых в дистрибутиве. К исключениям можно отнести разве что широко распространенный Oracle Enterprise Manager, который представляет собой клиент-серверное приложение с веб-мордой. Широко распространены Oracle SQL Developer, Toad for Oracle, PL/SQL Developer, но применяют их с учетом специфики работы. PL/SQL Developer, например, популярен среди тех, кто пишет много кода.
3 Мне сложно говорить наверняка, поскольку я не собеседую кандидатов. Полагаю, что отдают предпочтение кандидатам с высшим техническим образованием. Думаю, что смотрят на наличие профильных сертификатов. Но окончательное решение выносится по итогам собеседования, что вполне обычно для всей ИТ-отрасли. В конце концов главное – это знания, а не бумажки.
4 Когда меня брали, то писали про три – пять лет, но не буду утверждать, что кандидатов с меньшим опытом не рассматривают. Если говорить про отрасль в целом, то есть очень крупные компании из телеком и банковского секторов, куда можно попасть и без опыта работы DBA. Можно, например, перейти из стана разработчиков, что в свое время сделал я.
5 Иногда приходится работать в условиях неполной/недостаточной информации. Когда работаешь с заказчиком, который в силу своих внутренних политик не может выносить всю информацию за пределы своей инфраструктуры, приходится что-то додумывать, что-то предполагать, ну или запрашивать нужную информацию у клиента и ждать ответ. Это требует времени, терпения и умения точно формулировать, что конкретно, в каком виде и для чего тебе нужно. Но это специфика работы в технической поддержке, а не специфика работы DBA.
Александр Коньков, OCA 11g, Oracle DBA в компании Lanit-Tercom
1 Говоря об администрировании системы управления базами данных (СУБД) Oracle, в первую очередь необходимо знать архитектуру СУБД Oracle и хотя бы иметь представление о реляционной модели данных и теории нормализации.
Кроме того, совершенно не лишними для Oracle DBA будут знания по:
Что до навыков… Думаю, что они определяются умением применять теоретические знания на практике. Например, зная особенности работы БД с различными файлами, можно при необходимости грамотно разделить общий объем СХД на отдельные части с разными параметрами по объему и быстродействию.
Однако это определение, наверное, справедливо для всех сфер деятельности человека, поэтому не уверен, что есть какой-то особенный навык, присущий только Oracle DBA.
2 Oracle предоставляет достаточно широкий набор инструментов для администратора.
Прежде всего это утилиты командной строки, такие как:
Если в организации несколько БД Oracle, то удобно использовать Oracle Enterprise Manager – отдельная платформа управления и мониторинга.
Несмотря на то что Oracle предлагает бесплатную Java-программу SQL Developer, которая позиционируется в том числе и для администрирования БД, большой популярностью продолжает пользоваться платная программа TOAD for Oracle от фирмы Quest Software.
И ни в коем случае не стоит забывать про инструменты, предлагаемые операционной системой: например, Perfomance Monitor в Windows, top/sar/iostat в *NIX. Возможность написания скриптов, например на *sh в *NIX, для автоматизации рутинных задач.
3,4 У нас в компании очень гибкий подход – в зависимости от проекта и должности. Например, в группе администраторов БД на одном из проектов работают и сертифицированные специалисты Oracle, и вчерашние выпускники.
5 Не столько компанией, сколько нашими заказчиками. Зачастую это связано с выполнением различных работ по обслуживанию баз данных во внерабочее время. Но, как правило, это касается многих Oracle DBA.
Дмитрий Гаврилычев, старший системный инженер в компании IBS
2 Putty – ssh-клиент для доступа к командной строке ОС сервера. WinSCP – sftp-клиент для доступа к файловой системе сервера. PL/SQL Developer – графический клиент к базе данных, легкий и удобный. X-ming – клиент для проброса графики с сервера на свой рабочий стол. Oracle Virtual Box – для создания тестовых сред на ПК. Notepad++ – удобный блокнот.
3 В основном требуют высшее, но берут и с незаконченным высшим, специальность не имеет значения.
4 Требования зависят от предоставляемой вакансии. По опыту работы обычно спрашивают, с каким количеством баз данных работал, какой объем баз данных, какая конфигурация: STANDBY, RAC, Single Instance. Как настраивал производительность, чем мониторил базы, на что бэкапил и чем. Какие аварийные ситуации были, как их решал.
5 Основной набор компонентов RDBMS Oracle и принцип ее работы не зависят от деятельности компании.
Павел Болотин, администратор баз данных в «ЕКА-Процессинг»
1 Oracle DBA можно подразделить на три типа, как и во всех областях ИТ-индустрии: начинающий, средний и мастер. Но у Oracle есть четкое понимание, какими наборами знаний должен обладать DBA из каждой области, а именно это сертификация по продукту OCA (Oracle Certified Associate) → OCP (Oracle Certified Professional) → OCM (Oracle Certified Master). Нo в первую очередь это концепции SQL! Oracle DBA в своей работе общается с СУБД посредствам SQL, он пишет запросы на выборку из системных и пользовательских таблиц, он читает пользовательский SQL-код. В целом от знания SQL и особенностей Oracle SQL зависит уровень понимания того, что происходит в базе данных.
Вторым пунктом идут концепции Oracle RDBMS, их можно выделить по пунктам с разделением по уровням подготовки:
2 Инструментарий очень разнообразный – как правило, это внутренние утилиты самого Oracle, необходимые для работы с логами и журналами AWR. Набор Oracle джентльмена скорее всего выглядит так:
3 Не думаю, что руководителя подразделения остановит отсутствие у кандидата высшего образования, но, как правило, с ним проще. Что касается профессиональных навыков в области ИТ, то здесь все зависит от профиля компании. Как правило, на DBA возлагают еще и обязанности по сопровождению операционных систем и написанию различных скриптов для отчетности и миграции данных. Но здесь все зависит от потребностей.
Очень желательно понимание принципов работы сетей хранения данных и локальных сетей. Это позволит как минимум не дать ездить себе по ушам со стороны сисадминов, а как максимум выставлять более четкие и грамотные требования для построения и эксплуатации инфраструктуры, в которую входит обслуживаемая БД.
4 Как правило, приветствуется знание софта, эксплуатируемого на обслуживаемой БД. Например, если DBA ранее работал в процессинговых центрах и знаком с OpenWay или SmartVista, он уже понимает, на какие объекты обратить повышенное внимание.
5 Здесь могу, наверное, только выделить банки и процессинговые центры, которые подпадают под действие регуляторов по PCI-DSS. В этом случае действует ряд требований, которые DBA просто не может не выполнять. Во всех остальных случаях главное, чтобы данные были сохранны, а софт работал.
Разница между SYSDBA, SYSOPER и DBA в базе данных Oracle
Начинающий разработчики часто путают SYSDBA и DBA между собой. Поэтому столь необходимо осветить различие между ними. Вкратце, SYSDBA – это системная привилегия, а DBA – это роль.
SYSDBA и SYSOPER – это специальные привилегии администратора, которые позволяют выполнять базовые задачи администрирования: запуск или остановка истанса; создание, удаление, открытие или монтирования базы и др. Роль DBA не включает SYSDBA или SYSOPER.
О системной привилегии SYSDBA
Обзор возможностей каждой из привилегий:
Если подключаться с привилегией SYSOPER или SYSDBA, то вы будете ассоциированы со схемой по умолчанию для данной привилегии, а не с той, которая была назначена пользователю.
Схема по умолчанию для SYSDBA: SYS
Схема по умолчанию для SYSOPER: PUBLIC
Выборка пользователей, которые имеют SYSDBA или SYSOPER привилегии:
О DBA роли
Роль DBA – это предопределённая роль, которая автоматически создаётся для каждой базы данных Oracle. Эта роль содержит все системные привилегии, кроме SYSDBA и SYSOPER. Поэтому она очень мощная и должна назначаться только администраторам, которым требуется полный доступ.
Выборка всех ролей с базы данных:
Выборка всех пользователей, которым назначена DBA роль:
Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:
Для пользователя базы данных могут быть назначены роль DBA и привилегия SYSDBA:
Литература: Oracle® Database Administrator’s Guide
Представления для управления объектами базы данных Oracle
Существует несколько важных представлений словаря базы данных, которые можно использовать для нахождения детальной информации о любом из объектов базы данных, о которых говорилось в этой главе. Администраторы баз данных также интенсивно используют представления словаря данных, чтобы управлять различными объектами схемы. Здесь приводится краткий список важнейших представлений, часть из которых упоминалась выше. Полные данные о типах информации, которую можно получить от каждого из этих представлений, доступны по команде DESCRIBE (например, DESCRIBE DBA_CATALOG).
В этой статье блога будут описаны некоторые важные представления словаря данных, которые помогут управлять объектами, не хранящими данные (т.е. объектами, которые не относятся к таблицам и индексам). Ниже приведен список важнейших представлений словаря данных для просмотра объектов базы данных.
Как упоминалось ранее, представление DBA_OBJECTS предоставляет важную информацию обо всех перечисленных объектах, наряду с некоторыми другими типами объектов базы данных. Однако перечисленные представления содержат детальную информацию о каждом объекте, такую как исходный текст триггера, которую вы не получите из представления DBA_OBJECTS.
Управление такими объектами, как таблицы и представления, осуществляется ссылкой на представления словаря данных, наподобие DBA_TABLES и DBA_VIEWS. Существуют также отдельные представления для секционированных таблиц. Давайте рассмотрим ключевые представления словаря данных, относящиеся к таблицам и индексам.
DBA_OBJECTS
Представление DBA_OBJECTS содержит информацию обо всех объектах базы данных, включая таблицы, индексы, пакеты, процедуры, функции, измерения, материализованные представления, планы ресурсов, типы, последовательности, синонимы, триггеры, представления и разделы таблиц (оно же секционирование). Как несложно догадаться, это представления удобно, когда нужно знать общую информацию относительно любого объекта базы данных. В листинге ниже показан запрос, предназначенный для нахождения времени создания и времени последней модификации объекта (LAST_DDL_TIME). Этот тип запроса поможет идентифицировать время модификации определенного объекта, что часто используется в процессе аудита.
DBA_TABLES
Представление DBA_TABLES содержит информацию обо всех реляционных таблицах базы данных. Представление DBA_TABLES — основной справочник для нахождения информации о хранении, количестве строк в таблице, состоянии протоколирования, информации буферного пула и многих других деталях. Ниже приведен простой пример запроса представления DBA_TABLES:
На заметку! Представление DBA_ALL_TABLES содержит информацию обо всех объектных и реляционных таблицах в базе данных, в то время как представление DBA_TABLES ограничено только реляционными таблицами.
Представление DBA_TABLES служит для нахождения таких вещей, как включено ли сжатие и отслеживание зависимостей на уровне строки, и была ли таблица уничтожена и помещена в корзину (Recycle Bin).
DBA_EXTERNAL_TABLES
Представление DBA_EXTERNAL_TABLES показывает подробности о любой внешней таблице в базе данных, включая их тип доступа, параметры доступа и информацию о каталоге.
DBA_TAB_PARTITIONS
Представление DBA_TAB_PARTITIONS подобно представлению DBA_TABLES, но содержит детальную информацию о разделах таблиц. Благодаря DBA_TAB_PARTITIONS, можно узнать имя раздела, его максимальные значения, информацию о хранении раздела,статистику по разделу, а также прочую информацию, которая доступна в представлении DBA_TABLES. В листинге ниже показан простой запрос, использующий представление DBA_TAB_PARTITIONS.
DBA_PART_TABLES
Представление DBA_PART_TABLES содержит информацию о типе схемы раздела и прочих параметрах хранения разделов и подразделов. Узнать тип каждого раздела каждой секционированной таблицы можно с помощью следующего запроса:
DBA_TAB_MODIFICATIONS
Представление DBA_TAB_MODIFICATIONS показывает все изменения DML в таблице,произошедшие с момента последнего сбора статистики по этой таблице. Вот запрос к этому представлению:
База данных не обновляет представление DBA_TAB_MODIFICATIONS в реальном времени. Следовательно, вы можете и не увидеть изменений в различных таблицах, немедленно отраженных в этом представлении.
DBA_TAB_COLUMNS
Предположим, вы нужно узнать среднюю длину каждой строки таблицы или значение по умолчанию каждого столбца (если таковое есть). Представление DBA_TAB_COLUMNS — отличный способ быстро получить всю детальную информацию о столбцах таблиц схемы, как показано в листинге ниже.
DBA_VIEWS
Как известно, представления — это результаты запросов к некоторым таблицам базы данных. Представление словаря данных DBA_VIEWS позволяет увидеть SQL-запросы, лежащие в основе представлений. В листинге ниже показано, как получить текст представления OS_CUSTOMERS, принадлежащего пользователю oe.
Совет. Чтобы обеспечить полное отображение текста при использовании представления DBA_VIEWS, установите большое значение переменной long (например, SET LONG 2000). В противном случае вы увидите лишь несколько первых строк определения представления.
DBA_MVIEWS
Представление словаря DBA_MVIEWS сообщает все о материализованных представлениях в базе данных, в том числе информацию, включено ли для них средство переписывания запросов. В листинге ниже демонстрируется использования этого представления.
DBA_INDEXES
Представление словаря DBA_INDEXES служит для того, чтобы узнать все необходимое об индексах в базе данных, включая имя индекса, его тип, таблицу и табличное пространство, к которому он относится. Определенные столбцы, наподобие BLEVEL (сообщает уровень B-дерева индекса) и DISTINCT_KEYS (количество разных значений ключа индекс), наполняются, только если собрана статистика по индексу с использованием пакета DBMS_STATS.
DBA_IND_COLUMNS
Представления DBA_IND_COLUMNS по структуре подобно представлению DBA_CONS_COLUMNS и содержит информацию обо всех проиндексированных столбцах каждой таблицы. Эта информация важна при настройке производительности, когда вы замечаете,что запрос использует индекс, но вы не знаете точно, на каких столбцах этот индекс определен. Запрос, приведенный в листинге ниже, показывает, что таблица имеет индексы, определенные на неверных столбцах.
Совет. Взглянув на столбец INDEX_NAME, можно легко идентифицировать составные ключи. Если одно и то же вхождение INDEX_NAME появляется больше одного раза, значит, это составной ключ; и столбцы, являющиеся его частью, показаны в столбце COLUMN_NAME. Например,INVENTORY_PK — первичный ключ таблицы INVENTORIES, определенный на двух столбцах:PRODUCT_ID и WAREHOUSE_ID. Порядок столбцов в определении составного ключа можно узнать с помощью столбца COLUMN_POSITION.
INDEX_STATS
Представление INDEX_STATS полезно для того, чтобы узнать, насколько эффективно индекс использует свое пространство. Крупные индексы имеют тенденцию со временем становиться несбалансированными, если происходит много удалений данных таблицы (а, следовательно, и индекса). Ваша цель — не упускать из виду эти крупные индексы,чтобы сохранять их сбалансированными.
Обратите внимание, что представление INDEX_STATS наполняется, только когда таблица подвергается анализу с помощью команды ANALYZE, как показано ниже:
Запрос из листинга ниже, использующий представление INDEX_STATS, помогает определить необходимость в перестройке индекса. Чтобы определить, следует ли перестраивать индекс, в запросе необходимо сосредоточиться на перечисленных ниже столбцах представления INDEX_STATS.