11. 9. 2017

Oracle - záloha hashov hesiel

Pre odloženie a návrat hesiel na databáze oracle v.12 som si spravil tento skript. Výstupom je sql súbor s alter user príkazmi.

Pri verziách 10, 11, 12 pribúdali rôzne typy šifrovania a case-sensitive verzie.

Hash-e hesiel sú preto uložené v rôznych stĺpcoch (ako boli napríklad rôzne heslá naposledy menené v rôznych verziách) a je vhodné ich správne v príkaze skombinovať, aby boli všetky pôvodné informácie zachované.

set head off
set pages 0
set long 9999999
set linesize 5000
set trimspool on
set trimout on
set termout off
set serveroutput on size unlimited
set feedback off
set longchunksize 30000
set arraysize 1000
set flush off
set appinfo off

column ddl format a1000
column ddt format a1000
column global_name new_value dbname noprint
select global_name from global_name;


-- HESLA VSETKYCH USEROV
-- --------------------------------------

set termout on
prompt -- all_pwd &dbname
set termout off
spool ddl_&dbname._pwds.sql
begin
   for konta_rec in (
        select name,password,spare4
          from sys.user$ where type# = 1 and password != 'EXTERNAL'
         )
   loop
    if konta_rec.spare4 is null then
      DBMS_OUTPUT.put_line ( 'alter user "'|| konta_rec.name ||'" identified by values ''' || konta_rec.password || ''';' );
    elsif konta_rec.password is null then
      DBMS_OUTPUT.put_line ( 'alter user "'|| konta_rec.name ||'" identified by values ''' || konta_rec.spare4 || ''';' );
    else
      DBMS_OUTPUT.put_line ( 'alter user "'|| konta_rec.name ||'" identified by values ''' || konta_rec.spare4 ||';'|| konta_rec.password || ''';' );
    end if;
   end loop;
end;
/
spool off

exit

Žiadne komentáre:

Zverejnenie komentára