Программирование >>  Oracle 

1 ... 350 351 352 [ 353 ] 354 355 356 ... 469


Тщательный контроль доступа 1479

дельности. Чтобы продемонстрировать проблемы, придется несколько расширить пре-д1дущий пример, изменив правила защиты T POLICY. На этот раз правила будут применяться не только для операторов SELECT, но и для операторов INSERT:

tkyte@TK16> begin

2 dbms rls.drop policy(TKYTE, T, T POLICY) ;

3 end;

PL/SQL procedure successfully completed.

tkyte@TK:E816> begin

2 dbms rls.add policy

3 (object name => T,

4 policy name => T POLICY,

5 policy function => rls examp,

6 statement types => select, insert,

7 update check => TRUE);

8 end;

PL/SQL procedure successfully completed. После этого мы получим следующий эффект:

tkyte@TKYTE816> delete from t;

1 row deleted.

tkyte@TKYTE816> commit;

Commit complete.

tkyte@TKYTE816> exec set ctx(null);

PL/SQL procedure successfully completed.

tkyte@TKYTE816> insert into t values (1); insert into t values (1)

ERROR at line 1:

ORA-28115: policy with check option violation

tkyte@TKYTE816> exec set ctx(0) ;

PL/SQL procedure successfully completed.

tkyte@TKYTE816> insert into t values (1);

1 row created.

Итак, теперь контекст необходимо устанавливать не только для чтения, но и для вставки данных.

Проблемы экспорта

Стандартно утилита ЕХР работает в режиме обычного (conventional path) экспорта. Для чтения данных она использует SQL-операторы. Используя утилиту ЕХР для получения данных таблицы T из базы данных, получим следующий результат (учтите, чю в таблице T имеется одна строка - результат выполнения оператора INSERT):



1480

Глава 21

G:\fgac\exp userid=tkyte/tkyte tables=t

Export: Release 8.1.6.0.0 - Production on Mon Apr 16 16:29:25 2001 (c) Gopyright 1999 Oracle Gorporation. All rights reserved.

Gonnected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

Export done in WE8ISO8859P1 character set and WE8ISO8859P1 NGHAR character set

About to export specified tables via Gonventional Path

EXP-00079: Data in table T is protected. Conventional path may only be exporting partial table.

. . exporting table T 0 rows exported

Export terminated successfully with warnings.

Обратите внимание, как утилита ЕХР великодушно сообщила, что таблица может быть экспортирована только частично, поскольку используется обычный способ экспортирования. Для решения этой проблемы при экспортировании надо подключаться как пользователь SYS (или от имени любого другого пользователя с ролью SYSDBA). Для пользователя SYS средства тщательного контроля доступа не действуют:

G:\fgac\exp userid=sys/manager tables=tkyte.t

Export: Release 8.1.6.0.0 - Production on Mon Apr 16 16:35:21 2001 (c) Gopyright 1999 Oracle Gorporation. All rights reserved.

Gonnected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

Export done in WE8ISO8859P1 character set and WE8ISO8859P1 NGHAR character set

About to export specified tables via Gonventional Path .. .

Gurrent user changed to TKYTE

. . exporting table T 1 rows exported

Export terminated successfully without warnings.

Можно также использовать процедуру DBMS RLS.ENABLE POLICY для временного отключения правил зашиты и повторного их включения после экспортирования. Хотя так делать нежелательно, поскольку на время экспорта таблицы остаются незащищенными.

ВнекоторыхверсияхOracle 8.1.5при непосредственномэкспортепо ошибкеобходятс средства тшательного контроля доступа. Другими словами, если указать onции direct=true, будут экспортированы все данные. На этот способполагаться не стоит поскольку в следующих версиях эта ошибка была исправлена. В новых версиях ei получите:

About to export specified tables via Direct Path ...

EXP-00080: Data in table T is protected. Using conventional mode.

EXP-00079: Data in table T is protected. Gonventional path may only...



Тщательный контроль доступа 1481

Утилита ЕХР будет автоматически экспортировать защищенные таблицы в обычном режиме.

Проблемы импорта

Эти проблемы возникают только в том случае, когда установлены правила защиты для операторов вставки и опция UPDATECHECK имеет значение True. B этом случае утилита IMP не будет вставлять строки, не удовлетворяющие условию, возвращаемому соответствующей функцией. Именно так и произойдет в рассмотренном ранее примере. Если не установить контекст, ни одна строка вставлена не будет (по умолчанию значение в контексте - Null). Поэтому, если попытаться импортировать экспортированные данные:

C:\fgac>imp userid=tkyte/tkyte full=y ignore=y

Import: Release 8.1.6.0.0 - Production on Mon Apr 16 16:37:33 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved.

Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option

JServer Release 8.1.6.0.0 - Production

Export file created by EXPORT:V08.01.06 via conventional path

Warning: the objects were exported by SYS, not by you

import done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR

character set

. importing SYSs objects into TKYTE

. . importing table T

IMP-00058:ORACLE error 28115 encountered ORA-28115: policy with check option violation

IMP-00017: following statement failed with ORACLE error 28101:

BEGIN DBMS RLS.ADD POLICY(TKYTE, T, T POLICY,TKYTE,RLS EXAMP, SE LECT,INSERT,TRUE,TRUE) ; END;

IMP-00003: ORACLE error 28101 encountered ORA-28101: policy already exists ORA-06512: at SYS.DBMS RLS , line 0

ORA-06512: at line 1

import terminated successfully with warnings.

строки вставлены не будут. Проблему можно решить, подключившись от имени пользовать SYS или пользователя с ролью SYSDBA:

C:\fgac>imp userid=sys/manager full=y ignore=y

import: Release 8.1.6.0.0 - Production on Mon Apr 16 16:40:56 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved.

Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production



1 ... 350 351 352 [ 353 ] 354 355 356 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика