Как написать заявление SQL для восстановления пароля пользователя базы данных 11g оракула - PullRequest
1 голос
/ 27 марта 2012

В Oracle 11g я знаю, что могу сделать следующее:

select spare4 from user$ where name='BOB';

и получите

'S:06A5CA37447558898739F8475FB32C4E4267AD4615F93BD3443028FDB8D6'

Тогда я могу сделать

alter user BOB identified by values 'S:06A5CA37447558898739F8475FB32C4E4267AD4615F93BD3443028FDB8D6'

для восстановления пароля. Как я могу их объединить, следующее не сработает?

alter user BOB identified by values (select spare4 from user$ where name='BOB');

с ошибкой

alter user BOB identified by values (select spare4 from user$ where name='BOB')
                                   *
ERROR at line 1:
ORA-02153: invalid VALUES password string

Кроме того, как не вводить имя пользователя (здесь BOB) дважды? В идеале я хочу сделать эту операцию alter для каждого пользователя в dba_users.

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Я бы написал для этого короткий сценарий PL / SQL:

DECLARE
BEGIN
  FOR R IN (SELECT 'ALTER USER '||name||' IDENTIFIED BY VALUES '''||spare4||'''' AS s FROM user$ WHERE name <> 'ANONYMOUS') LOOP
    EXECUTE IMMEDIATE R.s;
  END LOOP;
END;
/

Вы не можете использовать подзапрос в DDL.

0 голосов
/ 28 марта 2012

Вы, конечно, могли бы написать немного PL / SQL

DECLARE
  l_sql_stmt VARCHAR2(1000);
BEGIN
  FOR u IN (SELECT * FROM user$)
  LOOP
    l_sql_stmt := 'ALTER USER ' || name || 
                  ' IDENTIFIED BY VALUES ''' ||
                  u.spare4 ||
                  '''';
    EXECUTE IMMEDIATE l_sql_stmt;
  END LOOP;
END;

Я был бы весьма обеспокоен, однако, обо всем, что изменило пароль каждого пользователя в базе данных.Достаточно необычно, что есть веская причина изменить пароль отдельного пользователя, сделать что-то, а затем изменить его обратно, даже не зная исходного пароля.Я с трудом представляю, что мне нужно сделать это с десятками аккаунтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...