Запити до баз даних ClearQuest Oracle 10g, Криптографія, Security & Hack, статті

У середовищах IBM Rational ClearQuest, що використовують БД Oracle версії 10g і пізніших версій, адміністратор може за допомогою однієї з функцій ClearQuest версії 7.0.1 дозволити користувачам виконувати запити до багаторядковим текстовим полям і отримувати регістронезавісімий результати. У цій статті також пояснюється, як повернутися до РеЄсТрОзАлЕжНі запитів для всього індексу бази даних або тільки для одного поля.

За замовчуванням, запити в IBM Rational ClearQuest, які звертаються до багаторядковим текстовим полям в базі даних Oracle, можуть повертати лише РеЄсТрОзАлЕжНі результати, тому що ця база даних для зберігання таких полів використовує РеЄсТрОзАлЕжНі тип даних Character Large Object (CLOB). Отже, запит по слову Test не видасть збігів зі словами test або TEST.


Однак якщо ви використовуєте СУБД Oracle Database 10g або пізніших версій, то для отримання регістронезавісімий результатів можна скористатися функцією, доступною в ClearQuest і ClearQuest MultiSite версії 7.0.1. Якщо ви задіюєте цю функцію, то запит по слову Test виявить збігу з test, TEST, І будь-яким іншим поєднанням букв верхнього і нижнього регістрів, якщо в іншому написання цих слів не відрізняється.


Примітка: Ця функція ClearQuest недоступна для баз даних Oracle більш ранніх версій, ніж Database 10g.


Для того щоб дозволити регістронезавісімий запити, необхідно виконати наступні кроки:



  1. Ідентифікувати всі багаторядкові текстові поля в користувальницької базі даних;
  2. Отримати необхідні дозволи від адміністраторів бази даних і ClearQuest;
  3. Створити індекси для всіх багаторядкових текстових полів, які будуть індексуватися;
  4. Включити функцію, додавши прапор поведінки в таблицю, попередньо створивши її, якщо вона не існує;
  5. Виконати сценарій SQL, щоб створити індекси для всіх багаторядкових полів, які будуть використовуватися для запитів.

У нашій статті цей процес описується більш детально, і, крім того, пояснюється, як повернутися до РеЄсТрОзАлЕжНі запитів за замовчуванням.


Необхідні умови





Таблиця 1. Кодові сторінки та асоційовані з ними мови















































Кодова сторінка


Мови

20127 (US_ASCII) Англійська

Safe Shift-JIS (60932)

Японський

932

Японський

936

Спрощена китайська

949

Корейська

950

Традиційний китайський

1250 (східноєвропейська)

Чеська, хорватська, угорська, польська, румунська, словацька, словенська, албанський

1251 (кирилична)

Білоруська, болгарська, македонська, російська, сербська, українська

1252 (західноєвропейська)

Іспанська, датська, німецька, англійська, французька, італійська, норвезька, голландська, португальська, шведська

1253

Грецький

1254

Турецька

1255

Іврит

1257 (прибалтійська)

Естонська, литовська, латиська


Додаткову інформацію про кодових сторінках можна знайти під заголовком Адміністрування Rational ClearQuest у розділі Ресурси в інтернет-документації по ClearQuest.


Як дозволити використання регістронезавісімий запитів


Це завдання зазвичай виконує адміністратор Rational ClearQuest, який має чітке уявлення про схему і полях, що використовуються для запитів за підтримки адміністратора бази даних Oracle, який добре знає бази даних Oracle і інтерфейс SQL * Plus.


Крок 1. Ідентифікація всіх багаторядкових текстових полів в користувальницької базі даних


Щоб почати процедуру дозволу регістронезавісімий запитів, перегляньте схему користувача бази даних і ідентифікуйте все багаторядкові текстові поля. Деякі поля, які виглядають, як короткі рядки, можуть насправді бути багаторядковими текстовими полями, як, наприклад, поля Keywords і Symptom в схемі Defect Tracking. Один із способів, що дозволяють визначити, які поля є багаторядковими текстовими полями – це використання сіткиFields. Для цього:



  1. Запустіть Rational ClearQuest Designer;
  2. Відкрийте схему;
  3. Розгорніть ієрархію типів записи;
  4. Натисніть лівою кнопкою миші значок Fields в панелі Workspace , Щоб вивести на екран сітку Fields;
  5. У сітці Fields встановіть прапорець для MULTILINE_STRING в стовпці Type і створіть список полів, які мають тип MULTILINE_STRING;

Якщо у ваших базах даних багато багаторядкових текстових полів, ви можете ідентифікувати їх за допомогою утиліти PDSQL яка встановлюється в Windows разом з Rational ClearQuest. Для того щоб ідентифікувати всі багаторядкові текстові поля за допомогою утиліти командного рядка PDSQL, виконайте наступні дії:



  1. Створіть файл, що містить одну команду columns <ІмяТабліци>, З символом “крапка з комою” наприкінці виразу. Наприклад:





C:	estpdsql.scr columns defect;



  1. Перенаправьте цей файл в PDSQL за допомогою оператора перенаправлення < і передайте на вхід команди grep для пошуку полів CLOB;
  2. Потім перенаправьте цей файл утиліті командного рядка PDSQL за допомогою оператора перенаправлення < і передайте висновок на вхід команди grep для пошуку багаторядкових текстових полів CLOB Нижче наводиться приклад такої команди:





C: ClearQuest>pdsql -v ora -s <host> -db <dbname> -u <cqschema_user>
-p <pw> < c: estpdsql.scr / grep CLOB



Система згенерує список всіх полів CLOB, виявлених в таблиці defect (див. таблицю 2).


Таблиця 2. Поля CLOB, виявлені в таблиці defect


























Тип


Поле CLOB


ОПИС

CLOB (2147483647,0)

KEYWORDS

CLOB (2147483647,0)

SYMPTOMS

CLOB (2147483647,0)

NOTE_ENTRY

CLOB (2147483647,0)

NOTES_LOG

CLOB (2147483647,0)

IMPL_COMPLETED_BY

CLOB (2147483647,0)


Додаткову інформацію про використання утиліти PDSQL можна знайти в технічному бюлетені IBM № 1145079, Information about PDSQL and how to use it (Інформація про утиліті PDSQL та її використанні).


Крок 2. Отримання дозволів від адміністраторів


Перш ніж ви зможете почати створювати індекси для багаторядкових текстових полів, адміністратор бази даних повинен надати повноваження на створення індексів адміністратору Rational ClearQuest, який управляє базою даних. Адміністратор бази даних надає повноваження з зазначенням імені користувача і пароля адміністратора бази даних Oracle, а також TNSname користувача бази даних. Після цієї адміністратор бази даних виконує сценарій setup_cq_ora_user_clob.sql і вказує ідентифікатор входу користувача Oracle, створений для користувача бази даних. Для цього використовується наступний синтаксис (ця одна команда, яка може переноситися на наступні рядки екрану, якщо не вміщується в один рядок):






> sqlplus <oracle_DBA_user>/<password>@<tnsnamesentry>@setup_cq_ora_user_clob.sql
<oracle_user>



Крок 3. Створення індексів для всіх багаторядкових текстових полів, які будуть індексуватися.


В Oracle Database 10g багаторядкові текстові поля, які не мають індексів, не можуть використовуватися в запитах. При створенні індексу для дозволу регістронезавісімий запитів по будь з багаторядкових текстових полів ви повинні створити індекс для кожного багаторядкового текстового поля, яке використовується в запитах. Однак не всі запити повинні бути регістронезавісімий. Крім того, не кожному багаторядковому текстовому полю потрібна підтримка регістронезавісімий запитів. При створенні індексів для кожного з полів ви можете вирішити, чи будуть запити для цього поля РеЄсТрОзАлЕжНі або регістронезавісімий. Виконуючи сценарій SQL setup_cq_clob_index, Ви можете вибрати, які поля будуть підтримувати регістронезавісімий запити, а які – РеЄсТрОзАлЕжНі.


Наприклад, можна створити індекс, що підтримує регістронезавісімий запити, в поле Description , І індекс, що підтримує РеЄсТрОзАлЕжНі запити, в поле Keyword . Однак якщо ви не створите індекс для поля Keyword, а потім спробуєте виконати до нього запит, цей запит не буде виконано, а система виведе звіт про помилку.


Використовуйте сценарій setup_cq_clob_index.sql, Щоб створити індекси для багаторядкових текстових полів. Необхідно створити індекс для всіх багаторядкових текстових полів в користувальницької базі даних, якщо текстовий запит використовується в якості фільтра.


Порада: Індекси для РеЄсТрОзАлЕжНі і регістронезавісімий запитів створюються за допомогою одного і того ж сценарію.


Сценарій setup_cq_clob_index.sql зберігається в каталозі Rational ClearQuest, який у вашій системі може мати вказаний нижче або інший шлях:
C:Program FilesRationalClearQuest


Для кожного з багаторядкових текстових полів запустіть сценарій setup_cq_clob_index.sql і виконайте наступні кроки:



  1. Вкажіть ім’я користувача та пароль для Oracle адміністратора ClearQuest та ім’я TNSname користувача бази даних:





> sqlplus <oracle_user>/<password>@<tnsnamesentry>@setup_cq_clob_index.sql




  1. Сценарій запропонує або видалити існуючий індекс, або створити новий. Вкажіть, що потрібно створити новий індекс для багаторядкового текстового поля;
  2. Введіть ім’я для типу запису Rational ClearQuest ,наприклад, defect;
  3. Введіть ім’я поля Rational ClearQuest ,наприклад, description;
  4. Вкажіть, що призначена для користувача база даних має версію Oracle 10 або більш пізню;
  5. Введіть BASIC_LEXER. Лексичний аналізатор – це програмний компонент, який ділить рядок тексту на окремі слова, або лексеми, щоб можна було проіндексувати окремі слова. Нижче наводиться список підтримуваних типів лексичних аналізаторів. (Решта лексичні аналізатори підтримують індексацію для мов, у яких немає поділу на букви верхнього і нижнього регістра, а пробіл не є роздільником між словами);
  6. Вкажіть, що індекс повинен бути регістронезавісімий. Індекс для багаторядкового поля створений.

Список підтримуваних лексичних аналізаторів:



Інформацію щодо цих лексичних аналізаторах можна знайти в документації по Oracle.


Крок 4. Включення функції шляхом додавання прапора поведінки в таблицю; з попередніми створенням таблиці при необхідності.


Перш ніж ви зможете створити індекс для багаторядкового текстового поля, ви повинні створити в базі даних нову таблицю і додати прапор поведінки, що дозволяє індексацію в цій таблиці. Виконайте наступні кроки за допомогою інтерфейсу Oracle “s SQL * Plus:



  1. Увійдіть в користувача базу даних з ідентифікатором входу користувача Oracle, що має дозвіл на створення таблиць, і вкажіть TNSname. Ім’я користувача і пароль Oracle – це ті ж ім’я і пароль, які ви вводите при створення бази даних за допомогою інструменту обслуговування Ratonal ClearQuest. Елемент команди tnsnamesentry це ім’я бази даних, що зберігається у файлі tnsnames.ora;





> sqlplus <oracle_user>/<password>@<tnsnamesentry>




  1. Створіть таблицю з зазначеними значеннями в рядках і стовпцях;





> sqlplus create table ratl_diagnostics (diag_name VARCHAR2(16), diag_value 
VARCHAR2(255));



Примітка: Система не зможе створити таблицю, якщо таблиця з вказаним ім’ям уже існує в користувальницької базі даних.



  1. Вставте в таблицю ratl_diagnostics наступний рядок. Цей рядок містить значення, яке дозволяє створювати індекси для багаторядкових текстових полів;





> sqlplus insert into ratl_diagnostics(diag_name, diag_value) 
values (“Behavior”, “CLOB_CASE_AND_INDEX”);




  1. Зафіксуйте зміна в базі даних.





> sqlplus commit;



Примітка: Інформацію про параметри синтаксису для SQL * Plus можна знайти в документації по Oracle.


Додаткові вказівки по індексах






Відключення функції


Дозволивши регістронезавісімий запити, можна скористатися процедурами для зміни всіх або частини зроблених настройок кількома способами:



Примітка: Відключення функції необхідно провести до видалення всіх індексів і до відкликання повноважень облікового запису користувача (якщо планується), щоб уникнути помилок користувачів.


Видалення індексів


Після того, як індекси для дозволу регістронезавісімий запитів будуть створені, цілком імовірно, що вам знадобиться можливість видалити окремі індекси. Це можна зробити наступним чином:



  1. Визначте ідентифікатор користувача і пароль адміністратора ClearQuest для Oracle та ім’я TNSname користувача бази даних, а потім виконайте сценарій setup_cq_clob_index.sql:





> sqlplus <oracle_user>/<password>@<tnsnamesentry>@setup_cq_clob_index.sql




  1. Сценарій запропонує або видалити існуючий багаторядковий текстовий індекс, або створити новий. Вкажіть, що потрібно видалити багаторядковий текстовий індекс;
  2. Введіть ім’я типу записи Rational ClearQuest ,наприклад, defect;
  3. Введіть ім’я поля Rational ClearQuest ,наприклад, description.

Важливо: Після видалення індексу для багаторядкового текстового поля це поле більше не може бути використано для запитів. Отже, вам доведеться інформувати про це користувачів і змінити запити, що використовують це поле.


Повернення до РеЄсТрОзАлЕжНі запитів тільки для одного поля


Після дозволу регістронезавісімий запитів для багаторядкового текстового поля ви можете повернутися до РеЄсТрОзАлЕжНі запитам. Якщо ви більше не хочете вирішувати регістронезавісімий запити для будь-яких полів таблиці, можна відключити індекси для всієї таблиці. Можна також повернутися до РеЄсТрОзАлЕжНі запитам лише для одного багаторядкового текстового поля, змінивши індекс:



  1. Скористайтеся сценарієм setup_cq_clob_index.sql для видалення наявного індексу;
  2. Знову запустіть сценарій setup_cq_clob_index.sql;
  3. В останньому кроці вкажіть, що новий індекс повинен підтримувати РеЄсТрОзАлЕжНі запити.

Відключення функції


Якщо вам більше не потрібно використовувати регістронезавісімий запити до будь-яких полів таблиці, можна повернутися до налаштувань Oracle за замовчуванням (РеЄсТрОзАлЕжНі запити), відключивши індекси для всіх багаторядкових текстових полів у таблиці. Щоб відключити використання всіх індексів в таблиці, видаліть в таблиці ratl_diagnostics значення, що дозволяє створення індексів для багаторядкових текстових полів:



  1. Після запрошення увійдіть в користувача базу даних з ідентифікатором та паролем користувача Oracle і TNSname користувальницької бази даних:





> sqlplus <Oracle_user>/<password>@<tnsnamesentry>



Параметр tnsnamesentry – Це ім’я бази даних, що зберігається у файлі tnsnames.ora .



  1. Введіть наступну команду, щоб видалити з таблиці значення, що дозволяє створення індексів для багаторядкових текстових полів;





> sqlplus delete from ratl_diagnostics where diag_name
“Behavior” and diag_value = “CLOB_CASE_AND_INDEX”




  1. Зафіксуйте зміна в базі даних.





> sqlplus commit;



Відгук повноважень на створення індексів


Адміністратор бази даних може відкликати дозвіл на створення індексів, раніше надане користувачеві Rational ClearQuest. Він повинен вказати ідентифікатор і пароль користувача. Щоб відкликати дозвіл на створення індексів, використовуйте наступні команди SQL:






> sqlplus <Oracle_DBA_user>/<password>@tnsnamesentry>  

> sqlplus revoke SELECT ON ctxsys.ctx_indexes from <cq_username>;

> sqlplus revoke ctxapp from <oracle_user>;

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*