Raj*_*esh 1 sql oracle privileges schema
在用于 IT 客户的 Oracle 票证操作/请求中,我们通常会收到这样的请求,即复制具有其他用户拥有的相同权限的用户帐户。或者你可以说在这个或那个用户帐户之后授予我的模型 ID。所以这里是简单的伪代码来实现这一点。
在 Oracle SQL Developer 中,打开 DBA、安全性和用户部分。
选择您的帐户。
右键点击。
选择,创造喜欢。
切换“复制对象权限”
提供新的用户名/密码。
瞧。
转到 SQL 页面,查看我们为您从数据字典中提取的代码。
它获得了配额、角色、系统权限和对象权限。
在 18.1 版中,您也可以只打开用户并转到 SQL 页面并复制/粘贴/替换那里提供的代码中的架构名称。
唉! (我听到你说,我需要代码才能做到这一点。)
通过在 SQL Developer 中打开 Log 面板并单击 Statements 页面,您可以看到我们用来从 DB 获取此信息的 SQL。
这是代码:
select M.NAME,
decode(
NVL(
S.ADMIN_OPTION,
'NULL'
),
'NO',
'YES',
'NULL',
'NO',
'YES'
) GRANTED,
NVL(
ADMIN_OPTION,
'NO'
) ADMIN
from SYSTEM_PRIVILEGE_MAP M,
(
select *
from DBA_SYS_PRIVS
where (
GRANTEE =?
or ? = null
)
) S
where S.PRIVILEGE (+) = M.NAME
order by 1;
select R.ROLE,
decode(
S.NAME,
R.ROLE,
'YES',
'NO'
) GRANTED,
NVL(
S.ADMIN,
'NO'
) ADMIN,
NVL(
S.DEF,
'NO'
) DEF
from DBA_ROLES R,
(
select GRANTED_ROLE NAME,
ADMIN_OPTION ADMIN,
DEFAULT_ROLE DEF
from DBA_ROLE_PRIVS
where GRANTEE =?
) S
where S.NAME (+) = R.ROLE
and R.AUTHENTICATION_TYPE != 'GLOBAL'
order by 1;
select OWNER,
TABLE_NAME,
PRIVILEGE,
GRANTABLE
from DBA_TAB_PRIVS
where GRANTEE =?;
select ACCOUNT_STATUS,
DEFAULT_TABLESPACE DEF,
TEMPORARY_TABLESPACE TEMP,
PASSWORD,
EXTERNAL_NAME,
EDITIONS_ENABLED,
ALL_SHARD
from DBA_USERS
where USERNAME =?;
select T.TABLESPACE_NAME,
NVL(
Q.UNLIMITED,
'NO'
) UNLIMITED,
Q.QUOTA,
Q.UNIT,
T.CONTENTS
from DBA_TABLESPACES T,
(
select TABLESPACE_NAME,
decode(
MAX_BYTES,
-1,
'YES',
'NO'
) UNLIMITED,
decode(
MAX_BYTES,
-1,
null,
MAX_BYTES / 1024
) QUOTA,
'K' UNIT
from DBA_TS_QUOTAS
where (
USERNAME =:1
or :1 = null
)
) Q
where Q.TABLESPACE_NAME (+) = T.TABLESPACE_NAME
order by 1;
Run Code Online (Sandbox Code Playgroud)