Формат представления объектов БД

Ниже описаны форматы представления некоторых объектов БД в диагностических сообщениях и протоколах утилиты и SQL-запросы для получения логического имени объекта по его системному идентификатору.

Таблица #<​nnn​>

Идентификация системной или пользовательской таблицы БД. Параметр <​nnn​> – системный номер таблицы в БД. Для получения реального имени таблицы (например, для #32) используется запрос:

select '"' || rtrim($$$USR.$$$S34) || '"."'
  || rtrim($$$SYSRL.$$$S13) || '"'
  from $$$SYSRL, $$$USR
    where $$$SYSRL.$$$S12=$$$USR.$$$S31
      and $$$SYSRL.$$$S11=32;

| "SYSTEM"."TYPEINFO"|

Файл <​тип​> #<​номер​>

Идентификация файла таблицы БД. Параметр <​тип​> – символьное обозначение типа файла, <​номер​> – порядковый номер файла этого типа.

Реальное имя файла (в каталоге БД) является конкатенацией трех значений: системного номера таблицы, номера типа файла и порядкового номера файла.

Номера типов файлов:

  • 0 – файл индексов;

  • 1 – файл данных;

  • 2 – файл BLOB-данных.

Для получения реального имени файла (например, имя второго файла данных для таблицы с системным номером #32) используется запрос:

select '32.' || '1' || '2';

Столбец #<​nnn​>

Идентификация столбца таблицы БД. Параметр <​nnn​> – порядковый номер столбца в таблице. Для получения полного имени столбца таблицы (например, столбца #3 для таблицы #101) используется запрос:

select '"' || rtrim($$$USR.$$$S34) || '"."'
  || rtrim($$$SYSRL.$$$S13) ||'"."'
  || rtrim($$$ATTRI.$$$S23 )
  || '"' from $$$SYSRL, $$$USR,$$$ATTRI
  where $$$SYSRL.$$$S12=$$$USR.$$$S31
    and $$$SYSRL.$$$S11=$$$ATTRI.$$$S21
    and $$$SYSRL.$$$S11=101
    and $$$ATTRI.$$$S22=3;

| "SYSTEM"."AUTO"."BODYTYPE"|

Составной индекс #<​nnn​>

Идентификация составного индекса таблицы БД. Параметр <​nnn​> – порядковый номер составного индекса в указанной таблице БД. Для получения имени составного индекса таблицы (например, составного индекса #4 для таблицы #189) используется запрос:

select $$$S23 as "Name",
  CAST(CASE WHEN GetBits (GetLong($$$S24,64),0,9,1)=1
    THEN 'Primary'
  ELSE
    CASE WHEN GetBits(GetLong($$$S24,64),0,10,1)=1 THEN 'Unique'
    END END)
  AS CHAR (20) as "Type",
  GetByte ($$$S24,5) as "Columns Count"
  from SYSTEM.$$$SYSRL, SYSTEM.$$$ATTRI, SYSTEM.$$$USR
  where $$$S11=$$$S21
    and $$$S12=$$$S31
    and $$$S32=0
    and $$$S22=-4
    and $$$S11 = 189;

|NAME | TYPE  | COLUMNS COUNT |
|key4 |   | 3 |

Бит #<​nnn​>

Идентификация бита в указанной перед этим странице файла.

ROWID #<​nnn​>

Идентификация строки указанной перед этим таблицы БД.

Для получения строки таблицы (например, строки с ROWID #100 для таблицы #189) используется запросы:

получить имя таблицы (см. объект Таблица #<​nnn​>)
select '"' || rtrim($$$USR.$$$S34) || '"."'
  || rtrim($$$SYSRL.$$$S13) || '"'
  from $$$SYSRL, $$$USR
    where $$$SYSRL.$$$S12=$$$USR.$$$S31
    and $$$SYSRL.$$$S11=189;

затем строки таблицы:
select * from <​имя таблицы​> where rowid=100;

Страница #<​nnn​>

Идентификация страницы указанного перед этим файла.

Доступ к указанной странице осуществляется средствами файловой системы ОС.

Запись #<​nnn​> (смещение <​mmm​>)

Идентификация смещения в записи указанной перед этим странице файла.

Доступ к указанному смещению в записи страницы осуществляется средствами файловой системы ОС.

Узел #<​nnn​>

Идентификация узла в B-дереве файла индексов.

Распознается только утилитой testdb.

Ограничение целостности #<​nnn​>

Идентификация ограничения целостности таблицы БД. Параметр <​nnn​> – порядковый номер ограничения целостности в указанной таблице БД.

Процедура #<​nnn​>

Идентификация хранимой процедуры. Параметр <​nnn​> – системный идентификатор процедуры в БД. Для получения имени процедуры (например, имени процедуры с системным идентификатором #2) используется запрос:

select '"' || rtrim($$$USR.$$$S34) || '"."'
  || rtrim($$$PROC.$$$NAME) || '"'
  from $$$PROC, $$$USR
 where $$$PROC.$$$OWNER=$$$USR.$$$S31
   and $$$PROC.$$$ID=2
   and $$$PROC.$$$NAME<​​>'';

| "SYSTEM"."Сальдо"|

Триггер #<​nnn​>

Идентификация триггера. Параметр <​nnn​> – системный идентификатор триггера в БД. Для получения имени триггера (например, имени триггера с системным идентификатором #5) используется запрос:

select '"' || rtrim($$$USR.$$$S34) || '"."'
  || rtrim($$$TRIG.$$$NAME) || '"'
  from $$$TRIG, $$$USR
 where $$$TRIG.$$$OWNER=$$$USR.$$$S31
   and $$$TRIG.$$$ID=5;

| "SYSTEM"."Before insert on TAB1"|

Кодировка #<​nnn​>

Идентификация кодировки. Параметр <​nnn​> – системный идентификатор кодировки в БД. Для получения имени кодировки (например, имени кодировки с системным идентификатором #3) используется запрос:

select NAME
  from $$$CHARSET
 where IDENT=3;

| KOI8-R|

Трансляция #<​nnn​>

Идентификация трансляции. Параметр <​nnn​> – системный идентификатор трансляции в БД. Для получения имени трансляции (например, имени трансляции с системным идентификатором #5) используется запрос:

select NAM
  from $$$TRANSL
 where IDENT=5;
| fromCP1251toKOI8-R|

Группа

  • Устройство #<​nnn​>

  • Группа #<​nnn​>

  • Уровень #<​nnn​>

  • Станция #<​nnn​>

идентифицируют объекты БД, используемые в средствах защиты информации от несанкционированного доступа. Параметр <​nnn​> – системный идентификатор объекта в БД. Для получения имени объекта (например, имени объекта с системным идентификатором #5) используются соответственно следующие запросы:

select $$$NAME
  from $$$DEVICE
 where $$$ID=5;

select $$$NAME
  from $$$GROUP
 where $$$ID=5;

select $$$NAME
  from $$$LEVEL
 where $$$ID=5;

select $$$SNAME
  from $$$STATION
 where $$$STATIONID=5;