巧用shell指令碼分析資料庫使用者
在資料庫維護中,可能對於一個陌生的schema,需要了解它的一些情況,可以使用如下的指令碼來很快得到一個報告,裡面包含了詳盡的資訊。
使用者佔用的空間,許可權,角色和基本配置資訊。
NAME=`echo $1|cut -d. -f1`
if [ -z "$NAME" ]
then
echo -e "User must be provided: \c"; read NAME
fi
sqlplus -s $DB_CONN_STR@$SH_DB_SID <<EOF
clear buffer
set feed off
set verify off
set line 132
set pages 200
column bytes format 99,999,999,999 head "Bytes Used"
column max_bytes format 9,999,999,999 head Quota
column default_tablespace format a20 head "Default Tablespace"
column tablespace_name for a25
column username format a25
prompt ******************************************************************************************************
prompt * General Details *
prompt ******************************************************************************************************
select username, default_tablespace, created
from dba_users
where username=upper('${NAME}')
/
prompt.
prompt ******************************************************************************************************
prompt * Objects General Info *
prompt ******************************************************************************************************
select object_type,status,count(*) obj_count
from dba_objects
where owner=upper('$1') group by object_type,status order by obj_count desc
/
prompt.
prompt ******************************************************************************************************
prompt * Quotas *
prompt ******************************************************************************************************
select tablespace_name,
bytes,
decode( max_bytes,-1,'UNLIMITED',max_bytes) max_bytes
from dba_ts_quotas where username=upper('${NAME}')
/
prompt.
prompt ******************************************************************************************************
prompt * Bytes Used
prompt ******************************************************************************************************
col tablespace_name for a15 trunc
col MB head 'Size (Mb)' for 999,999,999
break on report
compute sum of bytes on REPORT
/*
select
ts.tablespace_name tablespace_name,
nvl(sum(seg.blocks*ts.block_size)/1024/1024,0) MB
from
dba_tablespaces ts,
dba_segments seg,
dba_users us
where
-- du.username=upper('${NAME}')
us.username=upper('${NAME}')
and seg.owner (+)= us.username
and ts.tablespace_name (+)= seg.TABLESPACE_NAME
group by ts.tablespace_name
order by ts.tablespace_name
*/
select
ts.name tablespace_name,
nvl(sum(seg.blocks*ts.blocksize)/1024/1024,0) MB
from
sys.ts$ ts,
sys.seg$ seg,
sys.user$ us,
dba_users du
where
du.username=upper('${NAME}')
and us.name (+)= du.username
and seg.user# (+)= us.user#
and ts.ts# (+)= seg.ts#
group by ts.name
order by ts.name
/
prompt .
prompt ******************************************************************************************************
prompt * Grants/Roles *
prompt ******************************************************************************************************
set feed off verify off line 132 pages 200
col owner format a15
break on owner
prompt ********* OWNER ROLE ***********
prompt ********************************
select d.owner,d.grantee role_name,r.PASSWORD_REQUIRED,s.admin_option,s.DEFAULT_ROLE
from dba_tab_privs d,dba_roles r,dba_role_privs s
where
d.grantee=r.role
and d.grantee=s.grantee(+)
and d.owner=nvl(upper('$1'),' ')
group by d.grantee,d.owner,r.password_required,s.admin_option,s.DEFAULT_ROLE
order by d.owner;
column grantee format a20
column granted_role format a35
column admin_option heading admin format a10
prompt .
prompt ********** GRANTED ROLE ********
prompt ********************************
select d.grantee role_name
from dba_tab_privs d
where owner=upper('$1')
group by d.grantee
union
select granted_role
from dba_role_privs
where grantee=upper('$1');
prompt .
prompt ******************************************************************************************************
prompt * Sys privileges *
prompt ******************************************************************************************************
set feed off verify off line 132 pages 200
column privilege format a25
column admin_option heading admin format a8
select privilege,
admin_option
from dba_sys_privs where grantee = upper('${NAME}')
/
!echo "******************************************************************************************************"
EOF
exit
生成的報告樣例如下所示。
sh[ora11g@rac1 dbm_lite]$ ksh showuser.sh n1
******************************************************************************************************
* General Details *
******************************************************************************************************
USERNAME Default Tablespace CREATED
------------------------- -------------------- ---------
N1 POOL_DATA 13-APR-14
.
******************************************************************************************************
* Objects General Info *
******************************************************************************************************
OBJECT_TYPE STATUS OBJ_COUNT
------------------- ------- ----------
TABLE VALID 18
INDEX VALID 3
FUNCTION VALID 2
DATABASE LINK VALID 1
LOB VALID 1
PROCEDURE VALID 1
.
******************************************************************************************************
* Quotas *
******************************************************************************************************
.
******************************************************************************************************
* Bytes Used
******************************************************************************************************
TABLESPACE_NAME Size (Mb)
--------------- ------------
POOL_DATA 203
SYSTEM 0
.
******************************************************************************************************
* Grants/Roles *
******************************************************************************************************
********* OWNER ROLE ***********
********************************
.
********** GRANTED ROLE ********
********************************
ROLE_NAME
------------------------------
CONNECT
DBA
RESOURCE
.
******************************************************************************************************
* Sys privileges *
******************************************************************************************************
PRIVILEGE admin
------------------------- --------
UNLIMITED TABLESPACE NO
******************************************************************************************************
使用者佔用的空間,許可權,角色和基本配置資訊。
NAME=`echo $1|cut -d. -f1`
if [ -z "$NAME" ]
then
echo -e "User must be provided: \c"; read NAME
fi
sqlplus -s $DB_CONN_STR@$SH_DB_SID <<EOF
clear buffer
set feed off
set verify off
set line 132
set pages 200
column bytes format 99,999,999,999 head "Bytes Used"
column max_bytes format 9,999,999,999 head Quota
column default_tablespace format a20 head "Default Tablespace"
column tablespace_name for a25
column username format a25
prompt ******************************************************************************************************
prompt * General Details *
prompt ******************************************************************************************************
select username, default_tablespace, created
from dba_users
where username=upper('${NAME}')
/
prompt.
prompt ******************************************************************************************************
prompt * Objects General Info *
prompt ******************************************************************************************************
select object_type,status,count(*) obj_count
from dba_objects
where owner=upper('$1') group by object_type,status order by obj_count desc
/
prompt.
prompt ******************************************************************************************************
prompt * Quotas *
prompt ******************************************************************************************************
select tablespace_name,
bytes,
decode( max_bytes,-1,'UNLIMITED',max_bytes) max_bytes
from dba_ts_quotas where username=upper('${NAME}')
/
prompt.
prompt ******************************************************************************************************
prompt * Bytes Used
prompt ******************************************************************************************************
col tablespace_name for a15 trunc
col MB head 'Size (Mb)' for 999,999,999
break on report
compute sum of bytes on REPORT
/*
select
ts.tablespace_name tablespace_name,
nvl(sum(seg.blocks*ts.block_size)/1024/1024,0) MB
from
dba_tablespaces ts,
dba_segments seg,
dba_users us
where
-- du.username=upper('${NAME}')
us.username=upper('${NAME}')
and seg.owner (+)= us.username
and ts.tablespace_name (+)= seg.TABLESPACE_NAME
group by ts.tablespace_name
order by ts.tablespace_name
*/
select
ts.name tablespace_name,
nvl(sum(seg.blocks*ts.blocksize)/1024/1024,0) MB
from
sys.ts$ ts,
sys.seg$ seg,
sys.user$ us,
dba_users du
where
du.username=upper('${NAME}')
and us.name (+)= du.username
and seg.user# (+)= us.user#
and ts.ts# (+)= seg.ts#
group by ts.name
order by ts.name
/
prompt .
prompt ******************************************************************************************************
prompt * Grants/Roles *
prompt ******************************************************************************************************
set feed off verify off line 132 pages 200
col owner format a15
break on owner
prompt ********* OWNER ROLE ***********
prompt ********************************
select d.owner,d.grantee role_name,r.PASSWORD_REQUIRED,s.admin_option,s.DEFAULT_ROLE
from dba_tab_privs d,dba_roles r,dba_role_privs s
where
d.grantee=r.role
and d.grantee=s.grantee(+)
and d.owner=nvl(upper('$1'),' ')
group by d.grantee,d.owner,r.password_required,s.admin_option,s.DEFAULT_ROLE
order by d.owner;
column grantee format a20
column granted_role format a35
column admin_option heading admin format a10
prompt .
prompt ********** GRANTED ROLE ********
prompt ********************************
select d.grantee role_name
from dba_tab_privs d
where owner=upper('$1')
group by d.grantee
union
select granted_role
from dba_role_privs
where grantee=upper('$1');
prompt .
prompt ******************************************************************************************************
prompt * Sys privileges *
prompt ******************************************************************************************************
set feed off verify off line 132 pages 200
column privilege format a25
column admin_option heading admin format a8
select privilege,
admin_option
from dba_sys_privs where grantee = upper('${NAME}')
/
!echo "******************************************************************************************************"
EOF
exit
生成的報告樣例如下所示。
sh[ora11g@rac1 dbm_lite]$ ksh showuser.sh n1
******************************************************************************************************
* General Details *
******************************************************************************************************
USERNAME Default Tablespace CREATED
------------------------- -------------------- ---------
N1 POOL_DATA 13-APR-14
.
******************************************************************************************************
* Objects General Info *
******************************************************************************************************
OBJECT_TYPE STATUS OBJ_COUNT
------------------- ------- ----------
TABLE VALID 18
INDEX VALID 3
FUNCTION VALID 2
DATABASE LINK VALID 1
LOB VALID 1
PROCEDURE VALID 1
.
******************************************************************************************************
* Quotas *
******************************************************************************************************
.
******************************************************************************************************
* Bytes Used
******************************************************************************************************
TABLESPACE_NAME Size (Mb)
--------------- ------------
POOL_DATA 203
SYSTEM 0
.
******************************************************************************************************
* Grants/Roles *
******************************************************************************************************
********* OWNER ROLE ***********
********************************
.
********** GRANTED ROLE ********
********************************
ROLE_NAME
------------------------------
CONNECT
DBA
RESOURCE
.
******************************************************************************************************
* Sys privileges *
******************************************************************************************************
PRIVILEGE admin
------------------------- --------
UNLIMITED TABLESPACE NO
******************************************************************************************************
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127756/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 巧用shell生成資料庫檢查指令碼資料庫指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- 建立管理MySQL資料庫的shell指令碼MySql資料庫指令碼
- 巧用shell指令碼統計磁碟使用情況指令碼
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- 簡單資料庫及表建立shell指令碼資料庫指令碼
- 監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 資料庫環境中的shell指令碼應用資料庫指令碼
- [轉]監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 監控Oracle資料庫的常用shell指令碼(轉)Oracle資料庫指令碼
- 使用shell 指令碼備份資料指令碼
- 資料匯出shell指令碼(上)指令碼
- 資料匯入shell指令碼(下)指令碼
- Shell多執行緒備份資料庫的指令碼執行緒資料庫指令碼
- 使用shell指令碼檢視資料庫負載情況指令碼資料庫負載
- 通過shell指令碼得到資料庫的基本資訊(一)指令碼資料庫
- 【轉載】監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- 透過shell得到資料庫中許可權的指令碼資料庫指令碼
- 通過shell得到資料庫中許可權的指令碼資料庫指令碼
- shell指令碼批量操作使用者指令碼
- shell oracle 建立使用者指令碼Oracle指令碼
- 透過shell指令碼分析足彩指令碼
- 通過shell指令碼分析足彩指令碼
- 使用shell指令碼檢測資料庫連線訪問情況指令碼資料庫
- MySQL 批量更新、刪除資料shell指令碼MySql指令碼
- 通過shell指令碼同時監控多個資料庫負載指令碼資料庫負載
- 通過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- 【博文推薦】用shell指令碼自動化備份資料庫指令碼資料庫
- mysql dump 拉取遠端資料同步到本地庫的shell 指令碼MySql指令碼
- 資料庫備份指令碼資料庫指令碼
- 刪除資料庫指令碼資料庫指令碼
- 資料庫監控指令碼資料庫指令碼
- 資料庫全備指令碼資料庫指令碼
- 監控資料庫指令碼資料庫指令碼