2026-03-12 20:23:15
This commit is contained in:
224
vdh/show_privs2.sql
Normal file
224
vdh/show_privs2.sql
Normal file
@@ -0,0 +1,224 @@
|
||||
set verify off
|
||||
|
||||
set linesize 200
|
||||
set pages 50000
|
||||
|
||||
prompt
|
||||
accept grantee prompt Grantee:
|
||||
prompt
|
||||
|
||||
column account_status format a20
|
||||
column creation_date format a20
|
||||
column tablespac_name format a20
|
||||
column profile format a15
|
||||
|
||||
select
|
||||
to_char(created, 'DD/MM/YYYY HH24:MI:SS') creation_date,
|
||||
account_status, profile, default_tablespace, authentication_type,
|
||||
to_char(expiry_date, 'DD/MM/YYYY') expiry_date
|
||||
from
|
||||
dba_users
|
||||
where
|
||||
username = '&&grantee'
|
||||
;
|
||||
|
||||
|
||||
prompt
|
||||
prompt All System Privileges
|
||||
prompt ---------------------
|
||||
|
||||
column grantee format a30 heading "Grantee"
|
||||
column grantee_type format a10 heading "Type"
|
||||
column privilege format a40 heading "Privilege"
|
||||
column admin_option format a10 heading "Admin"
|
||||
|
||||
break on grantee skip 1 on grantee_type
|
||||
|
||||
with grantees as
|
||||
( select
|
||||
distinct
|
||||
connect_by_root(usr.name) username,
|
||||
r_usr.name name,
|
||||
'Role' grantee_type
|
||||
from
|
||||
sys.sysauth$ sau,
|
||||
sys.user$ r_usr,
|
||||
sys.user$ usr
|
||||
where
|
||||
sau.privilege# = r_usr.user#
|
||||
and sau.grantee# = usr.user#
|
||||
connect by
|
||||
prior privilege# = grantee#
|
||||
start with
|
||||
grantee# in
|
||||
( select
|
||||
user#
|
||||
from
|
||||
sys.user$
|
||||
where
|
||||
name = '&&grantee'
|
||||
)
|
||||
union all
|
||||
select
|
||||
name, name, 'User'
|
||||
from
|
||||
sys.user$
|
||||
where
|
||||
name = '&&grantee'
|
||||
)
|
||||
select
|
||||
sp.grantee, grt.grantee_type, sp.privilege, sp.admin_option
|
||||
from
|
||||
grantees grt,
|
||||
dba_sys_privs sp
|
||||
where
|
||||
grt.name = sp.grantee
|
||||
order by
|
||||
sp.grantee,
|
||||
sp.privilege
|
||||
;
|
||||
|
||||
clear breaks
|
||||
|
||||
prompt
|
||||
prompt All Object Privileges
|
||||
prompt ---------------------
|
||||
|
||||
column grantee format a30 heading "Grantee"
|
||||
column grantee_type format a10 heading "Type"
|
||||
column owner format a30 heading "Owner"
|
||||
column table_name format a40 heading "Object"
|
||||
column privilege format a40 heading "Privilege"
|
||||
column admin_option format a10 heading "Admin"
|
||||
|
||||
break on grantee skip 1 on grantee_type on owner on table_name
|
||||
|
||||
with grantees as
|
||||
( select
|
||||
distinct
|
||||
connect_by_root(usr.name) username,
|
||||
r_usr.name name,
|
||||
'Role' grantee_type
|
||||
from
|
||||
sys.sysauth$ sau,
|
||||
sys.user$ r_usr,
|
||||
sys.user$ usr
|
||||
where
|
||||
sau.privilege# = r_usr.user#
|
||||
and sau.grantee# = usr.user#
|
||||
connect by
|
||||
prior privilege# = grantee#
|
||||
start with
|
||||
grantee# in
|
||||
( select
|
||||
user#
|
||||
from
|
||||
sys.user$
|
||||
where
|
||||
name = '&&grantee'
|
||||
)
|
||||
union all
|
||||
select
|
||||
name, name, 'User'
|
||||
from
|
||||
sys.user$
|
||||
where
|
||||
name = '&&grantee'
|
||||
)
|
||||
select
|
||||
tp.grantee, grt.grantee_type, tp.owner, tp.table_name,
|
||||
tp.privilege, tp.grantable, tp.hierarchy
|
||||
from
|
||||
grantees grt,
|
||||
dba_tab_privs tp
|
||||
where
|
||||
grt.name = tp.grantee
|
||||
order by
|
||||
tp.grantee,
|
||||
tp.owner,
|
||||
tp.table_name,
|
||||
tp.privilege
|
||||
;
|
||||
|
||||
clear breaks
|
||||
|
||||
prompt
|
||||
prompt Directly Granted Roles
|
||||
prompt -----------------------
|
||||
|
||||
select
|
||||
granted_role, admin_option, default_role
|
||||
from
|
||||
dba_role_privs
|
||||
where
|
||||
grantee = '&&grantee'
|
||||
order by
|
||||
granted_role
|
||||
;
|
||||
|
||||
prompt
|
||||
prompt All Granted Roles
|
||||
prompt -----------------
|
||||
|
||||
column role format a200 heading "Role"
|
||||
|
||||
select
|
||||
lpad(' ', 2*level-1) || sys_connect_by_path(usr.name, '/') role
|
||||
from
|
||||
sys.sysauth$ sau,
|
||||
sys.user$ usr
|
||||
where
|
||||
sau.privilege# = usr.user#
|
||||
connect by
|
||||
prior privilege# = grantee#
|
||||
start with
|
||||
grantee# =
|
||||
( select
|
||||
user#
|
||||
from
|
||||
sys.user$
|
||||
where
|
||||
name = '&&grantee'
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
prompt
|
||||
prompt TS Quotas
|
||||
prompt -----------------
|
||||
|
||||
select
|
||||
tablespace_name, max_bytes, dropped
|
||||
from
|
||||
dba_ts_quotas
|
||||
where
|
||||
username = '&&grantee'
|
||||
order by
|
||||
tablespace_name
|
||||
;
|
||||
|
||||
|
||||
prompt
|
||||
prompt Objects
|
||||
prompt -------
|
||||
|
||||
break on tablespace_name skip 1
|
||||
|
||||
select
|
||||
seg.tablespace_name, obj.object_type, count(*) counted
|
||||
from
|
||||
dba_objects obj,
|
||||
dba_segments seg
|
||||
where
|
||||
obj.owner = seg.owner(+)
|
||||
and obj.object_name = seg.segment_name(+)
|
||||
and obj.owner = '&&grantee'
|
||||
group by
|
||||
seg.tablespace_name, obj.object_type
|
||||
order by
|
||||
seg.tablespace_name nulls last, obj.object_type
|
||||
;
|
||||
|
||||
clear breaks;
|
||||
|
||||
undef grantee
|
||||
Reference in New Issue
Block a user