為了把事情變成簡單化,我在多個Oracle數據上建立統一的檢查數據庫賬戶,並且賬戶只能訪問特定的幾個視圖(需要查詢的sql已生成視圖),具體做法如下:
root>sqlplus / as sysdba
用DBA的權限進入數據庫,需要創建一個賬戶
http://www.jb51.net/article/20367.htm
SQL>create user dbmonitor identified by "ty_sd_s";
給賬戶授權
SQL>grant connect,resource to dbmonitor;
此賬戶執行的腳本轉換成視圖
代碼如下:
SQL> drop view vstablespace;
SQL> create view vstablespace as
(
select
a.tablespace_name "TABLESPACE",
sum(a.bytes) SUM ,
sum(b.bytes) FREE ,
sum(b.bytes)/sum(a.bytes)*100 PRECENTFREE
from
dba_data_files
a,dba_free_space b
where
a.file_id=b.file_id
group by a.tablespace_name
)
給用戶賦予select試圖的權限
SQL>grant select on vstablespace to dbmonitor ;
如此下來,這個用戶只能查看此數圖,不能改動其他的,就可以保證數據庫的安全了
退出,再用新建的oracle賬戶登錄
root>sqlplus dbmonitor/"ty_sd_s" as sysdba;
進入之後查看用戶所賦予的權限
SQL>select * from user_tab_privs;
從這裡看到只用新建視圖的權限
SQL>select * from sys.vstablespace ;