重庆思庄Oracle、Redhat认证学习论坛
标题: 用户权限收集 [打印本页]
作者: admin 时间: 2024-10-12 15:13
标题: 用户权限收集
SQL> drop table t_tmp_user_lhr;
SQL> drop sequence s_t_tmp_user_lhr;
SQL> create table t_tmp_user_lhr(id number,username varchar2(50),
exec_sql varchar2(4000),
create_type varchar2(20));
SQL> create sequence s_t_tmp_user_lhr;
SQL> begin
for cur in (select d.username,
d.default_tablespace,
d.account_status,
'create user ' || d.username || ' identified by ' ||
d.username || ' default tablespace ' ||
d.default_tablespace || ' TEMPORARY TABLESPACE ' ||
d.temporary_tablespace || ';' create_user,
replace(to_char(DBMS_METADATA.GET_DDL('USER',d.username)),
chr(10), '') create_user1
from dba_users d
where d.username in ('业务用户')) loop
insert into t_tmp_user_lhr
(id,username,exec_sql,create_type)
values
(s_t_tmp_user_lhr.nextval,cur.username,cur.create_user,'USER');
insert into t_tmp_user_lhr
(id,username,exec_sql,create_type)
select s_t_tmp_user_lhr.nextval,
cur.username,
case
when d.admin_option = 'YES' then
'GRANT ' || d.privilege || ' TO ' || d.grantee ||
' WITH GRANT OPTION ;'
else
'GRANT ' || d.privilege || ' TO ' || d.grantee|| ';'
end priv,'DBA_SYS_PRIVS'
from dba_sys_privs d
where d.grantee=cur.username;
insert into t_tmp_user_lhr
(id,username,exec_sql,create_type)
select s_t_tmp_user_lhr.nextval,
cur.username,
case
when d.admin_option='YES' THEN
'GRANT ' || d.granted_role || ' TO ' || d.GRANTEE ||
' WITH GRANT OPTION;'
else
'GRANT ' || d.granted_role || ' TO ' || d.GRANTEE || ';'
end priv,'DBA_ROLE_PRIVS'
from DBA_ROLE_PRIVS d
where d.grantee=cur.username;
insert into t_tmp_user_lhr
(id,username,exec_sql,create_type)
select s_t_tmp_user_lhr.nextval,
cur.username,
case
when d.grantable='YES' THEN
'GRANT ' || d.privilege || ' ON ' || d.owner || '.' ||
d.table_name || ' TO ' ||d.grantee ||
' WITH GRANT OPTION ;'
else
'GRANT ' || d.privilege || ' ON ' || d.owner || '.' ||
d.table_name || ' TO ' ||d.grantee || ';'
end priv,'DBA_TAB_PRIVS'
from DBA_TAB_PRIVS d
where d.grantee=cur.username;
end loop;
commit;
end;
/
SQL> select * from t_tmp_user_lhr;
SQL> select id,username,create_type,exec_sql from t_tmp_user_lhr where create_type not in ('USER');
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) |
Powered by Discuz! X3.2 |