Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Как удалить database link из под другого пользователя : Oracle

18.04.2024 3:51


31.03.2014 17:12
OlegON
 
Как-то не приходилось раньше такой мусор чистить, а тут попалось.
Сначала втупую выбрал
Код:
select * from dba_db_links;
и просто попытался дропнуть user.link, на что БД ответила об отсутствии такогового. Немного зашел в тупик. Вроде бы и DBA, а грохнуть линк у другого пользователя не дает. Сделал
Код:
alter session set current schema
нет прав. Копать мануалы было долго, поэтому сделал
Код:
create or replace procedure user.drop_link(linkname varchar) 
as
begin
execute immediate 'drop database link '||linkname;
end;

begin
ibs.drop_link('link_name');
end;

drop procedure user.drop_link;
обращаю внимание, что процедурка "дырявая" с точки зрения безопасности, поэтому лучше ее сразу и убить. Если кому-то попадется более правильный вариант - прошу написать.
24.09.2014 13:00
bayan
 
Код:
CREATE OR REPLACE PROCEDURE drop_dblink(
    schemaname VARCHAR2,
    dbLink     VARCHAR2 )
IS
  plsql VARCHAR2(1000);
  cur   NUMBER;
  UID   NUMBER;
  rc    NUMBER;
BEGIN
  SELECT u.user_id INTO UID FROM all_users u WHERE u.username = schemaName;
  plsql := 'DROP DATABASE LINK "'||dbLink||'"';
  cur   := SYS.DBMS_SYS_SQL.open_cursor;
  SYS.DBMS_SYS_SQL.parse_as_user( c => cur, STATEMENT => plsql, language_flag => DBMS_SQL.native, userID => UID );
  rc := SYS.DBMS_SYS_SQL.EXECUTE(cur);
  SYS.DBMS_SYS_SQL.close_cursor(cur);
END;
/
И собственно запуск будет выглядеть:
Код:
EXEC drop_dblink('USER', 'DB_LINK');
Owner процедуры должен быть отгрантован на execute SYS.DBMS_SYS_SQL и иметь права на селект из all_users. Таким же образоом удаляются и создаются dba_jobs.
24.09.2014 13:06
OlegON
 
Прикольная эта SYS.DBMS_SYS_SQL, только вот недокументированная, предназначена для использования только внутри Oracle... И надо предупредить, что грантовка ее кому-то обозначает практически выдачу прав DBA.
Часовой пояс GMT +3, время: 03:51.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.