Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Права для dbms_redefinition  [new]
роман23t
Member

Откуда:
Сообщений: 83
Парни привет.

Есть необходимость под своей учеткой на 11 версии оракла переделать табличку на секционированную. Для сохранения всех прав зависимостей, да и просто для удобства использую для таких дел dbms_redefinition.

Столкнулся с нехваткой прав. В доке пишут [url=]https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables007.htm#ADMIN11678[/url], что нужно следующее:

EXECUTE_CATALOG_ROLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
LOCK ANY TABLE
SELECT ANY TABLE
CREATE ANY TRIGGER
CREATE ANY INDEX



Все это у моего пользователя я вижу в dba_role_privs и dba_sys_privs соответственно. Сам скрипт с dbms_redefinition запускаю в командном окне, так что версия про то, что напрямую надо грантовать(а не через роль), если юзать в процедуре, тут не подходит.

Так же на форуме нашел, что кому то помог в подобной ситуации grant select any dictionary. Дал тоже. Но не помогло

Что посоветуете?
11 сен 18, 12:00    [21670752]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
роман23t,

точный текст ошибки какой?
11 сен 18, 12:19    [21670785]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
роман23t,

ошибка возникает в какой момент? на каком шаге?
11 сен 18, 12:21    [21670789]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
роман23t,

показывайте запускаемый скрипт, полный текст ошибки и точную версию оракле.
11 сен 18, 12:22    [21670791]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
роман23t
Member

Откуда:
Сообщений: 83
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

В тестовой среде под учеткой с широкими правами все работает.

declare
  nr_errors    pls_integer;
  v_tab        varchar2(60);
  v_tab_iterim varchar2(60);
  v_owner      varchar2(60);
begin
  v_tab        := 'TEST_TAB'; 
  v_tab_iterim := 'TEST_TAB_TEMP'; 
  v_owner      := 'SCHEMA'; 
  
  dbms_redefinition.abort_redef_table(uname => v_owner, orig_table => v_tab, int_table    => v_tab_iterim);
  dbms_redefinition.can_redef_table  (uname => v_owner, tname      => v_tab, options_flag => dbms_redefinition.cons_use_pk);
  dbms_redefinition.start_redef_table(uname        => v_owner,
                                      orig_table   => v_tab,
                                      int_table    => v_tab_iterim,
                                      options_flag => dbms_redefinition.cons_use_pk);
  dbms_redefinition.copy_table_dependents(uname            => v_owner, 
                                          orig_table       => v_tab,
                                          int_table        => v_tab_iterim,
                                          copy_indexes     => 1,
                                          copy_triggers    => true,
                                          copy_constraints => true,
                                          copy_privileges  => true,
                                          ignore_errors    => true,
                                          num_errors       => nr_errors,
                                          copy_statistics  => true);
  dbms_redefinition.sync_interim_table(uname => v_owner, orig_table => v_tab, int_table => v_tab_iterim);
  dbms_redefinition.finish_redef_table(uname => v_owner, orig_table => v_tab, int_table => v_tab_iterim);  
end;
/


Текст:

ORA-06550: Строка 11, столбец 3:
PLS-00201: идентификатор 'DBMS_REDEFINITION' должен быть объявлен
11 сен 18, 12:58    [21670841]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
роман23t,

что показывает запрос:
select * from dba_objects where object_name = 'DBMS_REDEFINITION'
???
11 сен 18, 13:05    [21670849]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Elic
Member

Откуда:
Сообщений: 29976
роман23t
EXECUTE_CATALOG_ROLE
роман23t
PLS-00201: идентификатор 'DBMS_REDEFINITION' должен быть объявлен
set role all;
11 сен 18, 13:18    [21670868]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
роман23t
Member

Откуда:
Сообщений: 83
Elic
set role all;


Спасибо, буду знать.
11 сен 18, 13:33    [21670889]     Ответить | Цитировать Сообщить модератору
 Re: Права для dbms_redefinition  [new]
Elic
Member

Откуда:
Сообщений: 29976
роман23t
буду знать.
Elic
STFF Default Role AND GRANT
11 сен 18, 13:40    [21670905]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить