2013-08-21 23 views
0

我已創建這樣的過程,這是上班SYSSYSDBA,但我想運行此我新創建的用戶帳戶DEMOUSER請幫助我....如何運行這個程序作爲普通用戶

CREATE OR REPLACE PACKAGE E_Types as 
    PROCEDURE TestProc (p_recordset OUT SYS_REFCURSOR); 
END E_Types; 
/

CREATE OR REPLACE PACKAGE BODY E_Types IS 
    PROCEDURE TestProc (p_recordset OUT SYS_REFCURSOR) IS 
    BEGIN 
     OPEN p_recordset 
     FOR select a.TABLESPACE_NAME         Tablespace 
        , round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2) Percentages 
       from (
         select TABLESPACE_NAME 
          , sum(BYTES) BYTES 
         from sys.dba_data_files 
        group by TABLESPACE_NAME 
        ) a 
        , (
         select TABLESPACE_NAME 
          , sum(BYTES) BYTES 
         from sys.dba_free_space 
        group by TABLESPACE_NAME 
        ) b where a.TABLESPACE_NAME = b.TABLESPACE_NAME (+) 
      order by ((a.BYTES-b.BYTES)/a.BYTES) desc 
        ; 
    END; 
END; 
/
+1

你有錯誤信息嗎?如果是這樣,*它說什麼*? –

+1

你的軟件包在哪裏創建?在DEMOUSER或其他架構?如果它不在DEMOUSER中,則必須授予DEMOUSER執行特權才能執行。 – user75ponic

+0

永遠不要像SYS(或SYSTEM帳戶)那樣創建過程(或任何*數據庫對象)。停止使用這些特殊帳戶進行開發。 –

回答

1

你必須授予對使用的對象SELECT權限給用戶(如SYS):

GRANT SELECT ON dba_free_space TO demouser; 
GRANT SELECT ON dba_data_files TO demouser; 

之後,您可以在DEMOUSER架構創建過程。

而且,順便說一句:你應該永遠不會創建或更改在SYS架構中的對象。 AFAIK,這將無法獲得Oracle的支持。

+0

yeee謝謝你@frank施密特問題解決:) –

+0

thanx Damien,Polppan和thanx的建議一個沒有名字的房子我是新來的oracle和pl/sql和我想測量oracle數據庫performane(表空間的使用情況,進動,像東西一樣鎖定......) –

相關問題