Топ-100

Редактор SQL запросов для СУБД Oracle

Не нашли нужных функций? Пишите в комментариях на форуме и мы добавим нужный функционал
 

Подключение к СУБД Oracle

1. Выбрать ранее сохраненное соединение из выпадающего списка "Connection control"

2. Выполнив команду connect ... в редакторе запросов.

Структура команды: connect <username>/<Password>@<TNSALIAS>

Пример: connect sys/oracle@tmpdb

p.s.: указание режима as sysdba не требуется, программа разбирает команду на части и проверяет введенный параметры

3. В редакторе соединения листа с БД

Структура листа

Менеджер соединений
 
 
 
Connection list

Список ранее сохраненных соединений

Вкладка "Connection parameter"

Alias

Или имя блока из файла tnsnames.ora или строка соединения в формате: host:port/service_name

Кнопка "Local TNS editor"

Редактор локального файла tnsnames.ora

Login

Имя пользователя под которым выполнять подключение к БД

Password 

Пароль пользователя под которым выполнять подключение

New password

Смена пароля на указанный. После смены пароля (кнопка "Change password") его необходимо скопировать в поле "Password" и сохранить изменения 

Mode

Режим подключения

Переключатель "Load db report"

После подключения к БД сформировать краткий отчет о состоянии БД

Вкладка "TNS settings"

Vendor lib (oci.dll) 

Полный путь к файлу oci.dll из каталога с установленным клиентом Oracle

TNS_ADMIN

Директория на диске с файлом tnsnames.ora

NLS_LANG

Параметры кодировки используемые клиентом

Кнопка "Test"

Проверить соединение с БД используя введенные значения

Кнопка "Connect"

Подключится к БД Oracle используя введенные значения

Кнопка "Save"

Сохранить параметры соединения для последующего их использования

Кнопка "Delete"

Удалить выбранное соединение

Load db report

->Запрос для извлечения данных<-

select instance_name,
       host_name,
       version,
       startup_time,
       status,
       archiver
  from v$instance;

select name,
       created,
       log_mode,
       open_mode,
       database_role,
       SWITCHOVER_STATUS,
       PLATFORM_NAME
  from v$database;

select count(*) "Count" from V$TABLESPACE;

select count(*) "Count",
       round(sum(bytes/1024/1024/1024),2)||' GB' "SizeFile"
  from DBA_DATA_FILES;

select count(*) "Count" from ALL_USERS;

select count(distinct(l.group#)) "Count",
       round(l.bytes/1024/1024) "MB",
       count(lf.GROUP#)/count(distinct(l.group#)) "File"
  from V$LOG l,
       V$LOGFILE lf
 where l.GROUP#=lf.GROUP#
group by bytes;

select name, round(value/1024/1024,2)|| ' MB' "MB" from V$SGA;

select l.RESOURCE_NAME, l.CURRENT_UTILIZATION, l.MAX_UTILIZATION, l.LIMIT_VALUE
  from V$RESOURCE_LIMIT  l where l.LIMIT_VALUE <>' UNLIMITED' and l.LIMIT_VALUE<>'         0' ;

select ad.status,
       ad.target,
       ad.schedule,
       ads.destination,
       ads.RECOVERY_MODE,
       ads.DATABASE_MODE,
       ad.LOG_SEQUENCE,
       ads.ARCHIVED_SEQ#,
       ads.APPLIED_SEQ#,
       ad.fail_sequence,
       ad.error
  from V$ARCHIVE_DEST ad, V$ARCHIVE_DEST_STATUS ads
 where ad.target='STANDBY'
   and ad.DEST_NAME=ads.DEST_NAME 

-----

Дерево объектов

 

Управление соединением листа

Текущая схема

Схема поиска объектов

Дерево объектов

Настройки листа

Команды на листе

Connection control

Список соединений сохраненных в программе. При выборе соединения происходит подключение к БД

Кнопка "Show connection mabager" - отобразить/скрыть менеджер соединения

Кнопка "Disconnect current list" - Разорвать соединение с БД текущего листа 

Current schema

Схема по умолчанию для поиска объектов. Равна имени пользователя под которым осуществлено подключение к БД.

При выборе другой схемы выполняется попытка выполнить команду:

alter session set current_schema = ....;

Schema name

Схема (пользователь) в которой осуществляется поиск объектов при работе с деревом объектов (ветка SCHEMA)

The object tree

Дерево объектов. Структурно состоит из 2 корневых узлов:

SCHEMA - объекты пользователя, таблицы, представления, .....

PUBLIC - "общие объекты"  

"SCHEMA"
Узел "CLUSTER"

Кластер - это объект схемы, который содержит данные из одной или нескольких таблиц, каждая из которых имеет один или несколько общих столбцов. Oracle хранит вместе все строки из всех таблиц с одним и тем же ключом кластера.

 
 

Меню папки "CLUSTER"

  • Generate create command for all objects - сформировать код создания всех объектов

  • Generate code for all objects - сформировать код создания всех объектов, но так же вывести команды формирования и количество объектов

Меню дочерних узлов

  • View - сформировать код создания выбранного объекта, вывести описание объекта из системного каталога

->Запрос для извлечения данных<-

select distinct(object_name) "object_name", status from $$VIEWTYPE_objects where object_type = $$OBJECT_TYPE and OWNER=$$OWNER order by object_name

-----

Узел "DATABASE LINK"

Список соединений к другим базам данных в выбранной схеме

 

Меню папки "DATABASE LINK"

  • Command create link - вывести в окне редактора шаблон кода для создания линка

CREATE DATABASE LINK "Link name"
   CONNECT TO [User name]
   IDENTIFIED BY [User password]
   USING '[tnsalias or description]'

Меню дочерних узлов

  • Testing - проверить соединение. 

фактически выполняется запрос вида:

select 'x' "x" from dual@<dblink name>

  • View - сформировать код создания выбранного объекта, вывести описание объекта из системного каталога

Узел "DIRECTORY"

Список "директорий" созданных в выбранной схеме. Директория создается командой create directory ... 

 

->Запрос для извлечения данных<-

select dd.OWNER||'.'||dd.DIRECTORY_NAME "Name",
       dd.DIRECTORY_PATH
  from DBA_DIRECTORIES dd
 where owner=$$SCHEMA_NAME
order by dd.OWNER, dd.DIRECTORY_NAME

-----

Меню

  • Drop (execute) - удалить директорию. Операция требует подтверждения

Редактор директорий  

Вызывается или из меню ветки "DIRECTORY

  • Create

Создание директории

  • Ввести в поле "Name directory" название новой директории

  • В поле "Path" ввести путь к директории на сервере с СУБД

  • Нажать кнопку "Create directory"

Изменение привилегий на директорию

  • В списке пользователей "List user" выбрать пользователей для которых необходимо выдать права

  • В блоке "Right"  установить чеки на нужных правах

  • Нажать кнопку "Apply

Узел "FUNCTION"

Список функций в выбранной схеме 

 

->Запрос для извлечения данных<-

select distinct(object_name) "object_name",
       status
  from $$VIEWTYPE_objects
 where object_type = $$OBJECT_TYPE
   and OWNER=$$OWNER 
order by object_name 

-----

Меню

  • Get DDL - сформировать код создания функции и вывести в окне редактора

->Запрос для извлечения данных<-

select dbms_metadata.get_ddl('FUNCTION',$$FUNCTION_NAME,$$FUNCTION_OWNER) as ddl from dual 

-----

  • Show errors - отобразить список ошибок в функции при их наличии (данные выводятся в сетке). Функции с ошибками отображаются специальным значком

->Запрос для извлечения данных<-

select line||'->'||position||' ('||text||')' "Error"
  from ALL_ERRORS
 where owner= $$OWNER
   and type='FUNCTION'
   and name=$$FUNCTION_NAME
order by sequence

-----

  • Compile - перекомпилировать функцию

->Запрос для извлечения данных<-

ALTER FUNCTION $$OWNER.$$FUNCTION_NAME COMPILE

-----

Узел "INDEX"

Список индексов в выбранной схеме

 

->Запрос для извлечения данных<-

select distinct(object_name) "object_name",
       status
  from $$VIEWTYPE_objects
 where object_type = $$OBJECT_TYPE
   and OWNER=$$OWNER 
order by object_name 

-----

Дочерний узел "Column"

Список колонок по которым построен индекс

->Запрос для извлечения данных<-

select column_name
  from $$VIEWTYPE_IND_COLUMNS
 where  index_name=$$INDEX_NAME
   and index_owner=$$OWNER
order by column_name 

-----

Дочерний узел "Table"

Таблица по колонкам которой построен индекс

->Запрос для извлечения данных<-

select distinct(table_name) "Table_name"
  from $$VIEWTYPE_INDEXES
 where index_name=$$INDEX_NAME
   and owner=$$OWNER

-----

Дочерний узел "Expression"

Список выражений функциональных индексов

->Запрос для извлечения данных<-

select column_expression
  from $$VIEWTYPE_IND_EXPRESSIONS
 where index_name=$$INDEX_NAME
   and index_owner=$$OWNER 

-----

Меню

  • Get DDL - сформировать код создания индекса и вывести в окне редактора

Узел "INDEX PARTITION"

Список партицированных индексов в выбранной схеме

 

Меню аналогично меню узла "INDEX"

Дочерние узлы аналогичны дочерним узлам узла "INDEX", за исключением

Дочерний узел "Partition"

Список партиций индекса

->Запрос для извлечения данных<-

select partition_name
  from $$VIEWTYPE_IND_PARTITIONS
 where index_name = $$INDEX_NAME
   and index_owner = $$OWNER 
order by partition_position desc 

-----

Узел "TABLE"

Список таблиц в выбранной схеме. 

 

->Запрос для извлечения данных<-

select distinct(object_name) "object_name",
       status
  from DBA_objects
 where object_type = 'TABLE'
   and OWNER=$$OWNER
order by object_name

-----

Дочерний узел "Storage"

Размер таблицы и имя табличного пространства 

->Запрос для извлечения данных<-

select tablespace_name,
       round(bytes/1024/1024,3) "size"
  from DBA_SEGMENTS
 where segment_name = $$TABLE_NAME
   and owner=$$OWNER 

-----

Дочерний узел "Columns"

Список колонок таблицы с типом данных

->Запрос для извлечения данных<-

select column_name||' ('||data_type||
       (case
        data_type WHEN 'VARCHAR2'
                  THEN '('||DATA_LENGTH||')'
        end)||')' "name"
  from $$VIEWTYPE_TAB_COLUMNS
 where table_name=$$TABLE_NAME
   and owner=$$OWNER
order by column_id

-----

Дочерний узел "Index"

Список индексов построенных по колонкам таблицы

->Запрос для извлечения данных<-

select i.index_name,
       i.INDEX_TYPE,
       i.UNIQUENESS,
       i.COMPRESSION,
       i.TABLESPACE_NAME,
       i.STATUS,
       i.NUM_ROWS,
       i.VISIBILITY
  from SYS.DBA_INDEXES i
 where table_name = $$TABLE_NAME
   and owner =$$OWNER
order by index_name 

-----

Дочерний узел "Trigger"

Список триггеров на выбранной таблице

->Запрос для извлечения данных<-

select trigger_name
  from $$VIEWTYPE_TRIGGERS
 where table_name=$$TABLE_NAME and table_owner=$$OWNER

-----

Дочерний узел "Constraint"

Список ограничений на данные в колонках таблицы

->Запрос для извлечения данных<-

select c.CONSTRAINT_NAME "name",
       c.SEARCH_CONDITION,
       c.STATUS,
       c.DEFERRABLE,
       c.DEFERRED,
       c.VALIDATED
  from $$VIEWTYPE_CONSTRAINTS c
 where table_name=$$TABLE_NAME and owner=$$OWNER

-----

Дочерний узел "Granted"

Права на таблицу выданные другим пользователям в БД. 

->Запрос для извлечения данных<-

select p.GRANTEE,
       p.GRANTOR,
       p.PRIVILEGE,
       p.GRANTABLE
  FROM $$VIEWTYPE_TAB_PRIVS p
 where p.owner=$$OWNER
   and p.table_name = $$TABLE_NAME
order by p.GRANTEE, p.PRIVILEGE 

-----

Дочерний узел "Statistics"

Статистика по выбранной таблице

->Запрос для извлечения данных<-

select * from DBA_TAB_STATISTICS
  where table_name =$$TABLE_NAME
    and owner = $$OWNER 

-----

Меню узла "TABLE"

  • Get DDL - сформировать код создания таблицы и добавить его в окно редактора

->Запрос для извлечения данных<-

select dbms_metadata.get_ddl('TABLE',$$TABLE_NAME,$$OWNER) as ddl
   from dual

-----

  • Table view - просмотр подробной информации о таблице

-------

Страница "General" - общая информация

 

->Запрос для извлечения данных<-

select t.OWNER, t.TABLE_NAME, t.TABLESPACE_NAME, t.STATUS,
       t.PCT_FREE, t.PCT_USED, t.INI_TRANS, t.MAX_TRANS,
       t.INITIAL_EXTENT, t.NEXT_EXTENT, t.FREELISTS,
       t.LOGGING, t.PARTITIONED, t.LAST_ANALYZED, t.MONITORING, tc.COMMENTS
  from $$VIEWTYPE_TABLES t, $$VIEWTYPE_TAB_COMMENTS tc
 where t.table_name=$$TABLE_NAME
   and t.owner=$$OWNER
   and tc.OWNER=t.OWNER
   and tc.TABLE_NAME=t.TABLE_NAME

select ts.NUM_ROWS, ts.BLOCKS, ts.AVG_ROW_LEN,
       ts.SAMPLE_SIZE, ts.LAST_ANALYZED
  from $$VIEWTYPE_TAB_STATISTICS ts
 where ts.OWNER=$$OWNER
   and ts.TABLE_NAME=$$TABLE_NAME

select tm.INSERTS, tm.UPDATES, tm.DELETES, tm.TIMESTAMP, tm.TRUNCATED
  from $$VIEWTYPE_TAB_MODIFICATIONS tm
 where tm.TABLE_OWNER=$$OWNER
   and tm.TABLE_NAME=$$TABLE_NAME

select round(sum(bytes)/1024/1024,2) "MBSize"
  from $$VIEWTYPE_SEGMENTS
 where segment_name = $$TABLE_NAME and owner=$$OWNER

select round(sum(bytes)/1024/1024,2) "MBSize", count(*) "CountIND"
  from $$VIEWTYPE_SEGMENTS
 where segment_name in (select index_name
                          from $$VIEWTYPE_INDEXES
                         where table_name = $$TABLE_NAME
                           and table_owner = 'SYSTEM')
   and Owner=$$OWNER

-----

Страница "Column" - информация о колонках таблицы

Страница "Constraint"

Подробное описание ограничений на данные созданных на солонках таблицы

->Запрос для извлечения данных<-

select ac.CONSTRAINT_NAME "Name"
  from ALL_CONSTRAINTS ac
 where ac.table_name=$$TABLE_NAME
   and ac.OWNER= $$OWNER                
 order by CONSTRAINT_NAME

 

select ac.OWNER,
       ac.TABLE_NAME,
       ac.CONSTRAINT_NAME,
       decode(ac.CONSTRAINT_TYPE,'C','Check constraint','P','Primary key','U','Unique key','R','Referential','V','Check option','O','Read only') "CONSTRAINT_TYPE",
       ac.STATUS,
       nvl(ac.BAD,'-') "BAD",
       nvl(ac.RELY,'-') "RELY",
       ac.LAST_CHANGE,
       nvl(ac.INDEX_OWNER,'-') "INDEX_OWNER",
       nvl(ac.INDEX_NAME,'-') "INDEX_NAME",
       nvl(ac.INVALID,'-') "INVALID",
       nvl(ac.VIEW_RELATED,'-') "VIEW_RELATED",
       nvl(ac.R_OWNER,'-') "R_OWNER",
       nvl(ac.R_CONSTRAINT_NAME,'-') "R_CONSTRAINT_NAME",
       nvl(ac.DELETE_RULE,'-') "DELETE_RULE",
       ac.DEFERRABLE,
       ac.DEFERRED,
       ac.VALIDATED,
       ac.GENERATED,
       ac.SEARCH_CONDITION
  from DBA_CONSTRAINTS ac
 where ac.CONSTRAINT_NAME=$$CONSTRAINT_NAME
   and ac.TABLE_NAME=$$TABLE_NAME
   and ac.OWNER=$$OWNER 

-----

Страница "Index"

Подробная информация о индексах таблицы

->Запрос для извлечения данных<-

select Index_name
  from ALL_INDEXES
 where table_name=$$TABLE_NAME
   and table_owner=$$OWNER

select i.INDEX_TYPE,
        i.TABLE_OWNER||'.'||i.TABLE_NAME "TABLE",
        i.UNIQUENESS,
        i.COMPRESSION,
        i.TABLESPACE_NAME,
        i.LOGGING,
        i.STATUS,
        i.NUM_ROWS,
        i.SAMPLE_SIZE,
        i.LAST_ANALYZED,
        i.PARTITIONED,
        i.BUFFER_POOL
   from DBA_INDEXES i
  where i.OWNER=$$OWNER
    and i.INDEX_NAME=$$INDEX_NAME
    and i.TABLE_NAME=$$TABLE_NAME

select ic.COLUMN_NAME,
       ic.COLUMN_POSITION,
       ic.COLUMN_LENGTH,
       ic.CHAR_LENGTH,
       ic.DESCEND
  from DBA_IND_COLUMNS ic
 where ic.INDEX_OWNER=$$OWNER
   and ic.INDEX_NAME=$$INDEX_NAME
   and ic.TABLE_NAME=$$TABLE_NAME 

-----

Страница "Trigger"

Подробная информация по триггерам таблицы

->Запрос для извлечения данных<-

select tr.TRIGGER_NAME,
       tr.TRIGGER_TYPE,
       tr.TRIGGERING_EVENT,
       tr.TRIGGER_BODY
  from $$VIEWTYPE_TRIGGERS tr
 where tr.TABLE_OWNER=$$OWNER
   and tr.TABLE_NAME=$$TABLE_NAME
   and tr.TRIGGER_NAME=$$TRIGGER_NAME 

-----

-------

  • Show data - извлечь данные из таблицы

  • Column -> Info - список колонок таблицы с типом данных и комментарием. Данные отображаются в сетке 

  • Column -> Add - добавит в окно редактора пример команды для добавления колонки в таблицу

->Пример кода<-

# alter table table_name add (
#  column1_name column1_datatype column1_constraint,
#  column2_name column2_datatype column2_constraint,
#  column3_name column3_datatype column3_constraint)

alter table SYSTEM.TESTTB add column  (... ... ...)

-----

  • Column -> Modify - добавит в окно редактора пример команды для изменения колонки

->Пример кода<-

# alter table table_name modify (
#  column1_name  column1_datatype,
#  column2_name  column2_datatype,
#  column3_name  column3_datatype)

alter table SYSTEM.TBL modify  (... ...)

-----

  • Column -> Drop - добавит в окно редактора пример команды для удаления колонки из таблицы

->Пример кода<-

alter table SYSTEM.TBL drop column  ...

-----

  • POOL -> DEFAULT - переместить таблицу в пул DEFAULT. Команда выполняется

->Пример кода<-

alter table $$OWNER.$$TABLE_NAME storage ( buffer_pool default )

-----

  • POOL -> KEEP - переместить таблицу в пул KEEP. Команда выполняется

->Пример кода<-

alter table $$OWNER.$$TABLE_NAME storage ( buffer_pool keep)

-----

  • POOL -> RECYCLE - переместить таблицу в пул RECYCLE. Команда выполняется

->Пример кода<-

alter table $$OWNER.$$TABLE_NAME storage ( buffer_pool RECYCLE)

-----

  • Script -> Select - сформировать и добавить в редактор запросов текст запроса select с перечислением всех колонок и алиаса таблицы

->Пример кода<-

select t.ID,
       t.NAME,
       t.CURR_DATE
  from SYSTEM.TBL t;

-----

  • Script -> Insert - сформировать и добавить в редактор запросов текст команды insert с перечислением всех колонок

->Пример кода<-

insert into SYSTEM.TBL(ID,NAME,CURR_DATE)
  values(:ID,:NAME,:CURR_DATE);

-----

  • Script -> Delete - сформировать и добавить в редактор запросов текст команды delect всех данных из таблицы

->Пример кода<-

delete from SYSTEM.TBL;

-----

  • Script -> Truncate - сформировать и добавить в редактор запросов текст команды truncate  таблицы

->Пример кода<-

truncate table SYSTEM.TBL;

-----

  • Script -> Analyze- сформировать и добавить в редактор запросов текст команды на обновление статистики по таблице 

->Пример кода<-

begin
  dbms_stats.gather_table_stats(ownname =>'SYSTEM',
                                tabname =>'TBL',
                                estimate_percent =>DBMS_STATS.AUTO_SAMPLE_SIZE,
                                degree =>DBMS_STATS.DEFAULT_DEGREE,
                                granularity =>'ALL',
                                cascade =>DBMS_STATS.AUTO_CASCADE,
                                force =>true );
end;

-----

  • Script -> Drop - сформировать и добавить в редактор запросов текст команды удаления таблицы

->Пример кода<-

drop table SYSTEM.TBL

-----

  • Script -> Rename- сформировать и добавить в редактор запросов текст команды переименования таблицы

->Пример кода<-

alter table SYSTEM.TBL rename to 

-----

Узел "VIEW"

Список представлений в выбранной схеме

 

Дочерний узел "Column"

Список колонок представления

->Запрос для извлечения данных<-

select column_name,
       data_type
  from DBA_TAB_COLUMNS
 where table_name = $$TABLE_NAME
   and owner = $$OWNER
order by column_id

-----

 
"PUBLIC"
Узел "PARAMETER"

Список параметров БД Oracle и его значение

 

->Запрос для извлечения данных<-

select name, nvl(value, '<Null>') "value" from V$PARAMETER order by name 

-----

Меню

Узел "DIRECTORY"

Список директорий во всех схемах

 

->Запрос для извлечения данных<-

select dd.OWNER||'.'||dd.DIRECTORY_NAME "Name",
       dd.DIRECTORY_PATH
  from DBA_DIRECTORIES dd 
order by dd.OWNER, dd.DIRECTORY_NAME

-----

Меню

  • Edit rights - запустить редактор прав для директории

  • Drop (execute) - удалить директорию

Узел "INVALID"

Список объектов в статусе invalid сгруппированный по схемам и типам объектов

 

->Запрос для извлечения данных<-

select OWNER,
       count(*) "Count"
  from $$VIEWTYPE_objects
 where status='INVALID'
group by owner order by OWNER

-----

Меню

  • Get source - сформировать код создания объекта и вывести в окне редактора

  • Compile - перекомпилировать объект

  • Drop (execute) - удалить объект

  • Error list - вывести в сетке список всех ошибок в объекте БД

->Запрос для извлечения данных<-

select *
  from ALL_ERRORS ae
  where ae.OWNER=$$OWNER
    and ae.TYPE=$$OBJECT_TYPE
    and ae.NAME=$$OBJECT_NAME 

-----

Узел "RECYCLEBIN"

Список таблиц в корзине БД Oracle сгруппированные по схемам

 

->Запрос для извлечения данных<-

select distinct(owner) "NAME",
       round(sum(space)/1024/1024,2) "MB",
       sum(space) "sbytes"
  from DBA_recyclebin 
group by owner order by 2 desc

-----

Меню

  • To create a table from - добавить в окно редактора код команды create новой таблицы на основе таблицы из корзины

->Пример кода<-

CREATE TABLE <TABLE NAME> AS SELECT * FROM TESTUSER."BIN$KVmaWfsMSteelsO9Quo3Hw==$0"

-----

  • Data - извлечь данные из таблицы в корзине

Узел "TABLESPACE"

Список табличных пространств созданных в БД Oracle

 

->Запрос для извлечения данных<-

select tablespace_name||' ('||substr(contents,1,1)||')' "Tablesp",
       status,
       logging,
       tablespace_name
  from DBA_TABLESPACES
order by tablespace_name

-----

Дочерний узел "DATAFILE"

Список файлов данных на дисках с текущим размером

->Запрос для извлечения данных<-

select DDF.FILE_NAME||':=>'||round(ddf.bytes/1024/1024/1024,2)||' GB' "File",
       online_status,
       (maxbytes-bytes)/1024 "free"
  from DBA_DATA_FILES ddf
 where ddf.tablespace_name=$$TABLESPACE_NAME

-----

Дочерний узел "OCCUPANTS"

Выводится только для пространства SYSAUX

->Запрос для извлечения данных<-

SELECT schema_name||': '|| occupant_name ||' -> '||space_usage_kbytes||' KB' "Occup"
   FROM v$sysaux_occupants
ORDER BY space_usage_kbytes desc, schema_name,occupant_name

-----

Дочерний узел "INFOTS"

Подробная информация о табличном пространстве

->Запрос для извлечения данных<-

select tablespace_name,
       status,
       logging,
       force_logging,
       extent_management,
       segment_space_management,
       bigfile,
       retention
  from DBA_TABLESPACES
 where tablespace_name=$$TABLESPACE_NAME

-----

Дочерний узел "OBJSIZE"

Список всех объектов в табличном пространстве с их размером отсортированный по размеру

->Запрос для извлечения данных<-

select segment_name,
       segment_type,
       OWNER,
       round((sum(bytes)/1024/1024),2) "ObjSize"
  from DBA_SEGMENTS
 where tablespace_name=$$TABLESPACE_NAME
 group by  segment_name, segment_type, owner
 order by 4 desc

-----

Меню

  • Show storage manager - запустить storage manager для данной БД

Узел "REDO"

Информация по группам журналом redo

 

->Запрос для извлечения данных<-

select l.group#,
       round((l.bytes)/1024/1024/1024,2) "Size",
       l.status,
       l.first_time,
       f.MEMBER,
       l.ARCHIVED,
       l.SEQUENCE#
  from V$LOG l, v$logfile f
 where l.GROUP# = f.GROUP#
order by 1

-----

Узел "NOLOGGING"

Список таблиц в БД операции в которых не логируются в журналах предварительной записи REDO

 

->Запрос для извлечения данных<-

select owner,
       count(*) "CountNo"
  from DBA_TABLES
 where logging='NO'
group by owner order by 2 desc

select t.table_name,
       t.TABLESPACE_NAME,
       t.STATUS,
       t.LOGGING
  from DBA_TABLES t
 where logging='NO'
   and owner = $$OWNER
order by table_name 

-----

Узел "NOANALYZE"

Список таблиц у которых отсутствует статистика

 

->Запрос для извлечения данных<-

select distinct(owner) "OWNER",
       count(*) "Count"
  from DBA_TABLES
 where last_analyzed is null
group by owner
order by 2 desc

select table_name
  from DBA_TABLES
 where last_analyzed is null
   and owner=$$OWNER
order by table_name

-----

Узел "USER"

Список пользователей в БД Oracle

 

->Запрос для извлечения данных<-

select username,
       account_status
  from dba_users
order by username

-----

Меню

  • Lock - заблокировать пользователя

->Команда<-

alter user $$USER_NAME account lock

-----

  • Unlock - разблокировать пользователя

->Команда<-

alter user $$USER_NAME account unlock

-----

  • Create SQL - сформировать набор команд для создания пользователя и выдачи привилегий

->Запрос для извлечения данных<-

SELECT dbms_metadata.get_ddl('USER',$$USERNAME) "DDL" FROM dual
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT',$$USERNAME "DDL" from dual
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT',$$USERNAME) "DDL" from dual
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT',$$USERNAME) "DDL" from dual
SELECT DBMS_METADATA.GET_GRANTED_DDL('TABLESPACE_QUOTA',$$USERNAME) "DDL" from dual
SELECT DBMS_METADATA.GET_GRANTED_DDL('DEFAULT_ROLE',$$USERNAME) "DDL" from dual 

-----

  • Change -> Password - сформировать и добавить в окно редактора команду для смены пароля

->Пример кода<-

alter user $$USERNAME identified by ...

-----

  • Change -> Tablespace  - сформировать и добавить в окно редактора команду для смены табличного пространства по умолчанию

->Пример кода<-

alter user $$USERNAME default tablespace

-----

  • Change -> Temp  - сформировать и добавить в окно редактора команду для смены временного табличного пространства по умолчанию

->Пример кода<-

alter user $$USERNAME temporary tablespace

-----

  • Change -> Rename [sys only]- сформировать и добавить в окно редактора команды для переименования пользователя в БД. 

ВАЖНО: Операция не документированная, выполнять строго на тестовых базах!!!

->Пример кода<-

--Операция не документированная!!!
--!!!Выполнять строго на тестовых базах!!!
update sys.user$ set name = upper('<New name>') where user = 'TESTUSER'
alter system flush shared_pool
/*после выполнения данных команд, рестартовать экземпляр*/
/*и перекомпелировать все объекты схемы, инвалидные исправить 

-----

  • Create code object - сформировать код создания всех объектов в схеме. Код выводится в отдельном окне.

Выполнение задачи идет в основном потоке, может быть длительным.

Tree object - дерево объектов. Кликабельно, переход к коду объекта в списке "DDL Schema"

Save - сохранить весь код в файл на диске, файл сохраняется в директории .\tmp\ddl\

  • Edit - редактор пользователя и просмотр подробных свойств

Вкладка "OBJECT PRIVILEGE"

Права на объекты у пользователя

->Запрос для извлечения данных<-

select p.OWNER, p.TABLE_NAME, p.PRIVILEGE, p.GRANTABLE
  from sys.dba_tab_privs p
 where p.grantee = $$USERNAME
 order by  p.table_name, p.PRIVILEGE 

-----

Вкладка "ROLE PRIVILEGE"

Список ролей БД выданный пользователю

->Запрос для извлечения данных<-

select granted_role, admin_option, default_role
  from sys.dba_role_privs
 where grantee = $$USERNAME
order by granted_role

-----

Вкладка "SYSTEM PRIVILEGE"

Список системных привилегий выданный пользователю

->Запрос для извлечения данных<-

select privilege, admin_option
from  sys.dba_sys_privs
where grantee = $$USERNAME
order by privilege

-----

Вкладка "QUOTA"

Квота пользователя на табличные пространства 

->Запрос для извлечения данных<-

select tq.TABLESPACE_NAME,
       case
        when tq.MAX_BYTES=-1 then 'Unlimited' else to_char(round(tq.MAX_BYTES/1024/1024))
       end "Max_Bytes",
       case
        when tq.MAX_BLOCKS=-1 then 'Unlimited' else to_char(tq.MAX_BLOCKS)
       end "Max_Block"
  from DBA_TS_QUOTAS tq
 where tq.USERNAME=$$USERNAME

-----

Вкладка "SEGMENT"

Данные по использованию места в табличных пространствах пользователем

->Запрос для извлечения данных<-

select s.TABLESPACE_NAME,
       round(sum(s.BYTES/1024/1024/1024), 3) "Size"
  from DBA_SEGMENTS s
 where s.OWNER=$$USERNAME
group by TABLESPACE_NAME order by 2 desc 

-----

Вкладка "OBJECT SIZE"

Список объектов в БД пользователя с размером

->Запрос для извлечения данных<-

select s.SEGMENT_NAME,
       s.TABLESPACE_NAME,
       round(sum(s.BYTES/1024/1024/1024), 3) "Size"
  from DBA_SEGMENTS s where s.OWNER=$$USERNAME
group by TABLESPACE_NAME, s.SEGMENT_NAME
order by 3 desc

-----

Страница "OBJECT MAPPING"

Группировка объектов по типам, с информацией по объектам каждой группы

->Запрос для извлечения данных<-

select segment_type,
       count(*) "Count",
       tablespace_name,
       round((sum(bytes)/1024/1024)) "Size"
  from DBA_SEGMENTS
 where owner=$$OWNER
group by segment_type, tablespace_name
order by 2 desc

select segment_name,
       tablespace_name,
       round(sum(bytes)/1024/1024,2) "Size",
       buffer_pool
  from dba_segments
 where owner=$$OWNER and segment_type=$$SEGMENT_TYPE
 group by segment_name,tablespace_name, buffer_pool
order by segment_name

----

Узел "USER CONNECT"

Информация по сессиям в БД сгруппированная по схемам

 

->Запрос для извлечения данных<-

select username||' ('||count(*)||')' "username"
  from v$session
 where username is not null
group by username
order by username

 

select s.SID,
       s.SERIAL#,
       s.USERNAME,
       s.STATUS,
       s.SERVER,
       s.SCHEMA#,
       s.OSUSER,
       s.MACHINE,
       s.PORT,
       s.TERMINAL,
       s.PROGRAM,
       s.SQL_ID
  from v$session s
 where username = $$OWNER
order by sid 

-----

Меню

Пункты меню аналогичны вкладкам "Session manager"

Узел "PROFILE"

Список профилей в БД Oracle

 

->Запрос для извлечения данных<-

select username||' ('||count(*)||')' "username"
  from v$session
 where username is not null
group by username
order by username

 

select s.SID,
       s.SERIAL#,
       s.USERNAME,
       s.STATUS,
       s.SERVER,
       s.SCHEMA#,
       s.OSUSER,
       s.MACHINE,
       s.PORT,
       s.TERMINAL,
       s.PROGRAM,
       s.SQL_ID
  from v$session s
 where username = $$OWNER
order by sid 

-----

Меню

  • View or edit - редактор профиля

Редактор профиля служит для просмотра списка пользователей у которых применен профиль и внесения в него изменений.

Узел "SESSION"

Запустить менеджер сессий для текущей базы данных.

Узел "TOP SQL"

Запустить менеджер запросов вносящих максимальный вклад в нагрузку на базу данных 

Узел "ROLE"

Список ролей в БД

 
 
 

->Запрос для извлечения данных<-

select r.ROLE||' ['||(select count(*)
                        from DBA_ROLE_PRIVS rp
                       where rp.GRANTED_ROLE =r.ROLE)||']' "ROLE"
  from DBA_ROLES r
order by r.ROLE

select distinct(grantee) "grantee"
  from sys.dba_role_privs
 where granted_role = $$ROLENAME
 order by grantee

-----

Узел "RESTORE POINT"

Список точек отката созданных в БД

 

->Запрос для извлечения данных<-

SELECT NAME,
       SCN,
       TIME,
       DATABASE_INCARNATION#,
       GUARANTEE_FLASHBACK_DATABASE,
       STORAGE_SIZE
  FROM V$RESTORE_POINT

-----

Узел "DATABASE LINK"

Список соединений к другим базам данных во всех схемах 

 

->Запрос для извлечения данных<-

select owner||'.'||db_link "db_Link",
       username,
       host
  from DBA_DB_LINKS 
order by owner, db_link

-----

Настройки листа
 

Font size - размер шрифта визуальных элементов текущего листа 

Type view - тип системных представлений каталога СУБД Oracle из которых извлекаются данные для дерева объектов. В запросах $$VIEWTYPE

Complition load - способ загрузки данных для подсказчика кода

  • Work - в режиме реального времени

  • Manual - в ручную. Режим подходит для больших баз, когда запросы к каталогу выполняются длительное время

Use styler - использовать подсветку синтаксиса и ключевых слов в редакторе запросов

Statistics query - выводить статистику выполнения запроса. Статистика собирается дважды, до и после выполнения и выводится разница

->Запрос для извлечения данных<-

select st.SID,
       sn.NAME,
       st.VALUE
  from V$SESSTAT st, V$STATNAME sn
 where st.STATISTIC# = sn.STATISTIC#
  and st.SID=$$SID
  and st.VALUE<>0
order by value desc​

-----

TrimTrailingSpace - удалять пробелы в конце строки

AutoThemeAdapt - адаптировать цвета к теме windows

DelErase - заменять выделенный текст при вводе или добавлять новые символы в начале

HiddenCaret - скрывать положение курсора в тексте

Кнопки управления
 
  • Execute current SQL - Выполнить текущий выделенный запрос или все запросы на листе 

Execute - аналогично нажатию на кнопку

To run the script from a file - выполнить скрипт с диска. Скрипт не загружается в редактор.

Check the script file for validate - проверить на корректность скрипт на диске без его выполнения

Show a list of command for execute - произвести разбор команд в редакторе на блоки выполнения. Выводится внутренний код и текст единичной команды

  • Commit - зафиксировать изменения

  • Rollback - откатить изменения внесенные в данные последними запросами

  • Stop execute - остановить выполнение текущего запроса

  • Close open cursor - закрыть текущий набор данных

  • Show plan - показать план выполнения выделенного запроса

->Запрос для извлечения данных<-

EXPLAIN PLAN FOR <QUERY TEXT>

select * from TABLE(DBMS_XPLAN.display(NULL,NULL,'all'))

-----

  • Export data in file - выгрузка данных грида (видимой части данных) в файл на диске в:

Export data in XLS - выгрузить данные в файл в формате XLS

Export data in TXT - выгрузить данные в файл в формате TXT

Export data in CSV - выгрузить данные в файл в формате CSV

Export data in HTML - выгрузить данные в файл в формате HTML

Export data in RTF - выгрузить данные в файл в формате RTF

  • Save current list in file - сохранить содержимое текущего листа в файл на диске

  • Open file - открыть менеджер файлов

  • List saving code - открыть менеджер создания блоков кода. Блоки кода - это конструкции кода сохраненные в программе, доступ к которым осуществляется из выпадающего меню кнопки

Создание блока кода

  1. Нажать кнопку "New"

  2. Из выпадающего списка "Parent name" выбрать имя корневого узла. Корневой узел так же является родителем в меню. Для добавления новой записи в список нажать кнопку "Add new parent" и внести новые значения

  3. Из выпадающего списка "Page type" выбрать тип СУБД для которых должен отображаться блок кода в списке

  4. В поле "Code" ввести текст блока кода, данный текст добавляется в редактор

  5. Нажать кнопку "Save

  • System view description - описание системный представлений

  • Load complition data - загрузить описание объектов БД в память программы для подсказчика кода. Функцию необходимо использовать при выборе режима "Manual" в настройках листа (Complition load

  • Project manager - открыть менеджер проектов

Рабочая область

 

Это поле на листе для ввода запросов/команд.

Разделение кода на составные части

Движок запросов перед выполнением команд производит разбор кода, определяя составные части.

Для разделения кода используются специальные символы (; - точка с запятой, / - слеш, go - ключевое слово на отдельной строке).

 

Программа поддерживает два синтаксиса кода:

  • Классический синтаксис Oracle: для отделения команд друг от друга используется символ ; (точка с запятой) за исключением команд create, begin, declate - данные команды отделяет от других символ / (слеш) на отдельной строке

  • Синтаксис MSSQL Server: для отделения команд друг от друга используется ключевое слово go на отдельной строке

Разрешено использовать любой из двух синтаксисов, в том числе оба одновременно

 

Логирование выполняемых операций

Текст любой команды/запроса языка SQL после выполнения сохраняется в локальном хранилище (база Core - таблица cer_history_query). В базе фиксируется: текст запроса/команды фактически выполненной ядром программы, статус выполнения, время выполнения, количество измененных строк, сообщения БД (output)

Дополнительно к сохранению данных в БД прогресс выполнения каждой команды фиксируется на вкладке "Messages" листа: отображается статус выполнения команд, время выполнения, номера строк в редакторе на которых располагается выполненная команда. Данные вкладки очищаются перед запуском выполнения команд

Иконки в левой части окна отображают прогресс выполнения(выполненные команды, текущая команда, ожидают выполнения, ошибка выполнения запроса, строка с ошибкой в запросе)

Подсказчик кода

Подсказчик кода помогает ускорить написание запрос, подсказывая имена объектов, колонок.

Для схем - отображаются все объекты схемы

Для алиасов таблиц, представлений - список колонок

По части имени объекта - отображаются объекты в БД имя которых начинается с введенного текста. Подсказка отображается по комбинации клавиш Crtl+Space

Алиасы запросов

В программе для запросов можно назначить алиас и в последствии выполнять запрос по нему, подробно смотрите в разделе "Диспетчер алиасов запросов"

Меню рабочей области
  • Copy - скопировать выделенный текст в буфер обмена

  • Past - вставить содержимое буфера обмена в окно редактора

  • Cut - вырезать выделенный текст

  • SelectAll - выделить весь текст в рабочей области

  • View table - просмотр подробной информации по выделенной таблице

  • Get DDL - показать код создания выделенной таблицы

  • Show command help - показать справку по выбранной команде

  • Show object data - показать данные выделенной таблицы, представления, синонима

  • Project manager -> Add object - создать страницу для выделенного кода в текущем проекте по умолчанию

  • Project manager -> Search object card - найти карточку выделенного объекта в текущем проекте по умолчанию

  • Comment -> Add current line - добавить символы комментария в начало текущей строки 

  • Comment ->Remove current line - удалить символы комментария в начале текущей строки

  • Comment -> Add selected text - добавить символы комментария в начало каждой из выделенных строк

  • Comment -> Remove selected text - удалить символы комментария в начале каждой из выделенных строк

  • YouTube Social  Icon
  • Facebook Социальной Иконка