select
usr.user#,
case usr.type# when 0 then 'user' when 1 then 'role' else '?' end user_or_role,
usr.name,
usr.tempts#,
usr.astatus,
usr.audit$,
usr.ctime,
usr.datats#,
usr.defgrp#,
usr.defgrp_seq#,
usr.defrole, -- See also defrole$
usr.defschclass,
usr.exptime,
usr.ext_username,
usr.lcount,
usr.ltime,
usr.password,
usr.ptime,
usr.resource$,
usr.spare1, -- Used for schema level supplemental logging (see ktscts.h)
usr.spare2, -- Seems to be related to an edition id [ sys_context('userenv', 'current_edition_id') ]
usr.spare3, -- Schema level default collation
usr.spare4, -- Hashed values of passwords.
usr.spare5,
usr.spare6, -- Last successful logon time
usr.spare7,
usr.spare8,
usr.spare9, -- Default local temporary tablespace
usr.spare10, -- Creation application ID
usr.spare11
from
SYS.user$ usr;
spare4 - Hash values of password
Digest
column digest_enabled format a3
column digest_value format a32
select
case when instr(spare4, 'H:') > 0 then 'Yes' else 'No' end digest_enabled
from
sys.user$ where name ='RENE';
--
-- Dig
-- ---
-- No
--
alter user rene digest enable;
select
case when instr(spare4, 'H:') > 0 then 'Yes' end digest_enabled,
regexp_replace(spare4, '.*H:(.{32}).*', '\1') digest_value
from
sys.user$ where name ='RENE';
--
-- DIG DIGEST_VALUE
-- --- --------------------------------
-- Yes 00000000000000000000000000000000
alter user rene identified by rene;
select
case when instr(spare4, 'H:') > 0 then 'Yes' end digest_enabled,
regexp_replace(spare4, '.*H:(.{32}).*', '\1') digest_value
from
sys.user$ where name ='RENE';
--
-- DIG DIGEST_VALUE
-- --- --------------------------------
-- Yes D52D963CF546B9AFF1878A99107DA061