[20180328]不要在sys建立使用者物件.txt

lfree發表於2018-03-28

[20180328]不要在sys建立使用者物件.txt

--//好幾年前遇到的問題,開發安裝UTL_DBWS在linux下遇到問題,最後選擇winows下安裝.
--//隨著業務增加,無法支撐,需要資料庫組遷移到linux下,也就是我當時的安裝筆記:
--//http://blog.itpub.net/267265/viewspace-2099501/

--//但是在遷移中遇到一件我苦笑不得的事情,開發把整個應用建立在sys使用者下,無語.好在應用不大,很容易移植.
--//實際上不要在sys下建立任何用物件.透過一個簡單的例子加強印象.

1.環境:

SYS@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> select count(*) from dba_objects where status = 'INVALID';
  COUNT(*)
----------
         1

--//僅僅有1個無效物件.

SYS@book> create table SYS.SYSTEM (id number);
Table created.

SYS@book> select count(*) from dba_objects where status = 'INVALID';
  COUNT(*)
----------
       176

--//建立一個特殊的表system,就導致無效物件增加到176.
--//重新編譯看看:

SYS@book> @ /u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlrp.sql

SYS@book> select count(*) from dba_objects where status = 'INVALID';
  COUNT(*)
----------
        39

--//依舊有39-1個.

SYS@book> drop table sys.system purge ;
Table dropped.

SYS@book> @ /u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlrp.sql
...

SYS@book> select count(*) from dba_objects where status = 'INVALID';
  COUNT(*)
----------
         1

--//實際上建立在sys下還有許多問題,比如一些oracle特性無效,資料建立在system表空間等等.
--//總之下次拿這個例子來嚇唬一下開發...

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2152280/,如需轉載,請註明出處,否則將追究法律責任。

相關文章