转:从PUBLIC回收SELECT ANY TABLE权限

from:
http://yangtingkun.itpub.net/post/468/5287

public回收SELECT ANY TABLE权限(或其他类似权限)将导致数据库中所有的procedure、function和package失效。

这时登陆数据库会报错:ORA-06553: PLS-213: STANDARD 包不可访问。

下面用一个例子说明怎么会产生这种情况,以及如何解决,感谢biti给出的思路--使用utlrp.sql脚本编译失效包。

当然从备份中恢复是最稳妥的方法,下面的方法只是没有备份,或无法停机的方法。另外还可以执行catalog.sql和catproc.sql重建数据字典,不过操作风险相对较大。


SQL> CONN YANGTK/YANGTK@TEST
已连接。
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

未选定行

SQL> GRANT SELECT ANY TABLE TO PUBLIC;

授权成功。

SQL> REVOKE SELECT ANY TABLE TO PUBLIC;
REVOKE SELECT ANY TABLE TO PUBLIC
                        *
ERROR 位于第 1 行:
ORA-00905: 缺少关键字


SQL> REVOKE SELECT ANY TABLE FROM PUBLIC;

撤销成功。

SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

OBJECT_NAME
------------------------------------------------------------------
CLIENT_IP_ADDRESS
DATABASE_NAME
DBMSOBJG
DBMSOBJG2
DBMSOBJGWRAPPER
DBMSOBJG_DP
DBMSZEXP_SYSPKGGRNT
DBMS_ALERT
DBMS_APPCTX
DBMS_APPLICATION_INFO
DBMS_APPLY_ADM
DBMS_APPLY_ADM_INTERNAL
DBMS_APPLY_ERROR
DBMS_APPLY_PROCESS
DBMS_AQ
DBMS_AQADM
DBMS_AQADM_SYS
DBMS_AQADM_SYSCALLS
DBMS_AQELM
DBMS_AQIN
DBMS_AQJMS
DBMS_AQJMS_INTERNAL
DBMS_AQ_EXP_HISTORY_TABLES
DBMS_AQ_EXP_INDEX_TABLES
DBMS_AQ_EXP_QUEUES
DBMS_AQ_EXP_QUEUE_TABLES
DBMS_AQ_EXP_SIGNATURE_TABLES
DBMS_AQ_EXP_SUBSCRIBER_TABLES
DBMS_AQ_EXP_TIMEMGR_TABLES
DBMS_AQ_EXP_ZECURITY
DBMS_AQ_IMPORT_INTERNAL
DBMS_AQ_IMP_INTERNAL
DBMS_AQ_IMP_ZECURITY
DBMS_AQ_SYS_EXP_ACTIONS
DBMS_AQ_SYS_EXP_INTERNAL
DBMS_AQ_SYS_IMP_INTERNAL
DBMS_ASYNCRPC_PUSH
DBMS_AW
DBMS_AW_EXP
DBMS_BACKUP_RESTORE
DBMS_CAPTURE_ADM
DBMS_CAPTURE_ADM_INTERNAL
DBMS_CAPTURE_PROCESS
DBMS_CDC_PUBLISH
DBMS_CDC_SUBSCRIBE
DBMS_CDC_UTILITY
DBMS_CRYPTO_TOOLKIT
DBMS_CRYPTO_TOOLKIT_FFI
DBMS_CRYPTO_TOOLKIT_TYPES
DBMS_DDL
DBMS_DDL_INTERNAL
DBMS_DEBUG
DBMS_DEBUG_JDWP
DBMS_DEBUG_JDWP_CUSTOM
DBMS_DEFER
DBMS_DEFERGEN
DBMS_DEFERGEN_AUDIT
DBMS_DEFERGEN_INTERNAL
DBMS_DEFERGEN_LOB
DBMS_DEFERGEN_PRIORITY
DBMS_DEFERGEN_RESOLUTION
DBMS_DEFERGEN_UTIL
DBMS_DEFERGEN_WRAP
DBMS_DEFER_ENQ_UTL
DBMS_DEFER_IMPORT_INTERNAL
DBMS_DEFER_INTERNAL_QUERY
DBMS_DEFER_INTERNAL_SYS
DBMS_DEFER_QUERY
DBMS_DEFER_QUERY_UTL
DBMS_DEFER_REPCAT
DBMS_DEFER_SYS
DBMS_DEFER_SYS_PART1
DBMS_DESCRIBE
DBMS_DISTRIBUTED_TRUST_ADMIN
DBMS_DRS
DBMS_EPGC
DBMS_EXPORT_EXTENSION
DBMS_EXTENDED_TTS_CHECKS
DBMS_FGA
DBMS_FLASHBACK
DBMS_HS
DBMS_HS_ALT
DBMS_HS_CHK
DBMS_HS_UTL
DBMS_IAS_CONFIGURE
DBMS_IAS_INST
DBMS_IAS_INST_UTL
DBMS_IAS_INST_UTL_EXP
DBMS_IAS_MT_INST
DBMS_IAS_MT_INST_INTERNAL
DBMS_IAS_QUERY
DBMS_IAS_SESSION
DBMS_IAS_TEMPLATE
DBMS_IAS_TEMPLATE_INTERNAL
DBMS_IAS_TEMPLATE_UTL
DBMS_IJOB
DBMS_INTERNAL_LOGSTDBY
DBMS_INTERNAL_REPCAT
DBMS_INTERNAL_TRIGGER
DBMS_IREFRESH
DBMS_ISNAPSHOT
DBMS_ITRIGGER_UTL
DBMS_JAVA_TEST
DBMS_JOB
DBMS_LCR
DBMS_LOB
DBMS_LOCK
DBMS_LOGMNR
DBMS_LOGMNR_D
DBMS_LOGMNR_FFVTOLOGMNRT
DBMS_LOGMNR_INTERNAL
DBMS_LOGMNR_LOGREP_DICT
DBMS_LOGMNR_OCTOLOGMNRT
DBMS_LOGMNR_SESSION
DBMS_LOGREP_DEF_PROC
DBMS_LOGREP_DEF_PROC_UTL
DBMS_LOGREP_EXP
DBMS_LOGREP_IMP
DBMS_LOGREP_IMP_INTERNAL
DBMS_LOGREP_UTIL
DBMS_LOGSTDBY
DBMS_MAINT_GEN
DBMS_METADATA
DBMS_METADATA_INT
DBMS_METADATA_UTIL
DBMS_OBFUSCATION_TOOLKIT
DBMS_OBFUSCATION_TOOLKIT_FFI
DBMS_ODCI
DBMS_OFFLINE_INTERNAL
DBMS_OFFLINE_OG
DBMS_OFFLINE_RGT
DBMS_OFFLINE_SNAPSHOT
DBMS_OFFLINE_UTL
DBMS_OUTPUT
DBMS_PCLXUTIL
DBMS_PICKLER
DBMS_PIPE
DBMS_PITR
DBMS_PLUGTS
DBMS_PLUGTSP
DBMS_PROPAGATION_ADM
DBMS_PRVTAQIM
DBMS_PRVTAQIP
DBMS_PRVTAQIS
DBMS_PRVTRMIE
DBMS_PSP
DBMS_PSWMG_IMPORT
DBMS_RANDOM
DBMS_RCVMAN
DBMS_RECTIFIER_DIFF
DBMS_RECTIFIER_FRIENDS
DBMS_REDEFINITION
DBMS_REFRESH
DBMS_REFRESH_EXP_LWM
DBMS_REFRESH_EXP_SITES
DBMS_REGISTRY
DBMS_REGISTRY_SYS
DBMS_REPAIR
DBMS_REPCAT
DBMS_REPCAT_ADD_MASTER
DBMS_REPCAT_ADMIN
DBMS_REPCAT_AUTH
DBMS_REPCAT_CACHE
DBMS_REPCAT_COMMON_UTL
DBMS_REPCAT_CONF
DBMS_REPCAT_DECL
DBMS_REPCAT_FLA
DBMS_REPCAT_FLA_MAS
DBMS_REPCAT_FLA_UTL
DBMS_REPCAT_INSTANTIATE
DBMS_REPCAT_INTERNAL
DBMS_REPCAT_INTERNAL_PACKAGE
DBMS_REPCAT_MAS
DBMS_REPCAT_MIG
DBMS_REPCAT_MIG_INTERNAL
DBMS_REPCAT_OBJ_UTL
DBMS_REPCAT_OUTPUT
DBMS_REPCAT_RGT
DBMS_REPCAT_RGT_ALT
DBMS_REPCAT_RGT_CHK
DBMS_REPCAT_RGT_CUST
DBMS_REPCAT_RGT_CUST2
DBMS_REPCAT_RGT_EXP
DBMS_REPCAT_RGT_UTL
DBMS_REPCAT_RPC
DBMS_REPCAT_RPC_UTL
DBMS_REPCAT_RQ
DBMS_REPCAT_SNA
DBMS_REPCAT_SNA_UTL
DBMS_REPCAT_SQL_UTL
DBMS_REPCAT_UNTRUSTED
DBMS_REPCAT_UTL
DBMS_REPCAT_UTL2
DBMS_REPCAT_UTL3
DBMS_REPCAT_UTL4
DBMS_REPCAT_VALIDATE
DBMS_REPUTIL
DBMS_REPUTIL2
DBMS_RESOURCE_MANAGER
DBMS_RESOURCE_MANAGER_PRIVS
DBMS_RESUMABLE
DBMS_RLS
DBMS_RMGR_GROUP_EXPORT
DBMS_RMGR_PACT_EXPORT
DBMS_RMGR_PLAN_EXPORT
DBMS_RMIN
DBMS_ROWID
DBMS_RULE
DBMS_RULEADM_INTERNAL
DBMS_RULE_ADM
DBMS_RULE_COMPATIBLE_90
DBMS_RULE_EXIMP
DBMS_RULE_EXP_EC_INTERNAL
DBMS_RULE_EXP_EV_CTXS
DBMS_RULE_EXP_RL_INTERNAL
DBMS_RULE_EXP_RS_INTERNAL
DBMS_RULE_EXP_RULES
DBMS_RULE_EXP_RULE_SETS
DBMS_RULE_EXP_UTL
DBMS_RULE_IMP_OBJ
DBMS_SESSION
DBMS_SNAPSHOT
DBMS_SNAPSHOT_UTL
DBMS_SNAP_INTERNAL
DBMS_SNAP_REPAPI
DBMS_SPACE
DBMS_SPACE_ADMIN
DBMS_SQL
DBMS_SQLJTYPE
DBMS_STANDARD
DBMS_STATS
DBMS_STATS_INTERNAL
DBMS_STORAGE_MAP
DBMS_STREAMS
DBMS_STREAMS_ADM
DBMS_STREAMS_ADM_UTL
DBMS_SUMADV
DBMS_SUMADVISOR
DBMS_SUMMARY
DBMS_SUMREF_UTIL
DBMS_SUMVDM
DBMS_SYSTEM
DBMS_SYS_ERROR
DBMS_SYS_SQL
DBMS_TRACE
DBMS_TRANSACTION
DBMS_TRANSACTION_INTERNAL_SYS
DBMS_TRANSFORM
DBMS_TRANSFORM_EXIMP
DBMS_TTS
DBMS_TYPES
DBMS_TYPE_UTILITY
DBMS_UTILITY
DBMS_XMLGEN
DBMS_XPLAN
DBMS_XRWMV
DBMS_ZHELP
DBMS_ZHELP_IR
DES_ENCRYPTED_PASSWORD
DIANA
DICTIONARY_OBJ_NAME
DICTIONARY_OBJ_NAME_LIST
DICTIONARY_OBJ_OWNER
DICTIONARY_OBJ_OWNER_LIST
DICTIONARY_OBJ_TYPE
DIUTIL
GETTVOID
GRANTEE
HTF
HTP
INSTANCE_NUM
IS_ALTER_COLUMN
IS_CREATING_NESTED_TABLE
IS_DROP_COLUMN
IS_SERVERERROR
LOGIN_USER
LOGMNR_CREATE_REPLACE_METADATA
LOGMNR_DICT_CACHE
LOGMNR_DPC
LOGMNR_GTLO3
LOGMNR_KRVRDA_TEST_APPLY
LOGMNR_KRVRDLUID3
LOGMNR_KRVRDREPDICT3
LOGOFF_PROC
LOGON_PROC
LT
LTADM
LTAQ
LTDDL
LTDTRG
LTPRIV
LTRIC
LTUTIL
LT_CTX_PKG
LT_EXPORT_PKG
LT_REPLN
NO_VM_CREATE
NO_VM_CREATE_PROC
NO_VM_DROP
NO_VM_DROP_PROC
ODCICOLINFODUMP
ODCICONST
ODCIENVDUMP
ODCIINDEXALTEROPTIONDUMP
ODCIINDEXCALLPROPERTYDUMP
ODCIINDEXINFODUMP
ODCIINDEXINFOFLAGSDUMP
ODCIPREDINFODUMP
ODCIQUERYINFODUMP
ODCISTATSOPTIONSDUMP
OEMGETNEXTEXTEND
OLAP_TABLE
OUTLN_EDIT_PKG
OUTLN_PKG
OWA
OWA_CACHE
OWA_COOKIE
OWA_CUSTOM
OWA_IMAGE
OWA_OPT_LOCK
OWA_PATTERN
OWA_SEC
OWA_TEXT
OWA_UTIL
OWM_DDL_PKG
OWM_MIG_PKG
OWM_REPUTIL
PARTITION_POS
PBREAK
PBRPH
PBSDE
PBUTL
PIDL
PLITBLM
PRIVILEGE_LIST
PRVT_EGUTL
PRVT_EPGC
PSTUB
PSTUBT
REVOKEE
SERVER_ERROR
SERVER_ERROR_DEPTH
SERVER_ERROR_MSG
SERVER_ERROR_NUM_PARAMS
SERVER_ERROR_PARAM
SPACE_ERROR_INFO
SQL_TXT
STANDARD
STREAMS$_EVALUATION_CONTEXT
SUBPTXT
SUBPTXT2
SYSEVENT
SYS_IXMLAGG
SYS_LOGOFF
SYS_LOGON
SYS_STUB_FOR_PURITY_ANALYSIS
SYS_XMLAGG
UD_TRIGS
URIFACTORY
UTL_COLL
UTL_ENCODE
UTL_FILE
UTL_GDK
UTL_HTTP
UTL_INADDR
UTL_RAW
UTL_RECOMP
UTL_REF
UTL_SMTP
UTL_TCP
UTL_URL
UTL_XML
WITH_GRANT_OPTION
WM_DDL_UTIL
WM_ERROR
WPG_DOCLOAD
WPIUTL
XMLCONCAT
XMLSEQUENCEFROMREFCURSOR
XMLSEQUENCEFROMREFCURSOR2
XMLSEQUENCEFROMXMLTYPE
DBMS_REPCAT_AUTH
DEF$_PROPAGATOR_TRIG
ORA$_SYS_REP_AUTH
REPCATLOGTRIG
ORA$GRANT_SYS_SELECT
OWM_VALIDATE
ADD_JOB_HISTORY
COUNTRIES$RP
DEPARTMENTS$RP
EMPLOYEES$RP
JOBS$RP
JOB_HISTORY$RP
LOCATIONS$RP
REGIONS$RP
SECURE_DML
SECURE_EMPLOYEES
UPDATE_JOB_HISTORY

已选择398行。

SQL> CONN YANGTK/YANGTK@TEST
ERROR:
ORA-06553: PLS-213: STANDARD 包不可访问


访问程序包 DBMS_APPLICATION_INFO 时出错
已连接。
SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> alter package standard compile;

程序包已变更。

SQL> alter package dbms_standard compile;

程序包已变更。

SQL> @%ORACLE_HOME%rdbmsadminutlrp.sql

PL/SQL 过程已成功完成。


表已创建。


表已创建。


表已创建。


索引已创建。


表已创建。


表已创建。


视图已建立。


视图已建立。


程序包已创建。

没有错误。

程序包主体已创建。

没有错误。

PL/SQL 过程已成功完成。


PL/SQL 过程已成功完成。

SQL> SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

  COUNT(*)
----------
         6

SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

OBJECT_NAME
-------------------------------------------------------------------
ODCIARGDESC
ODCICOLINFO
ODCICOST
ODCIINDEXINFO
ODCIINDEXINFO
STREAMS$_EVALUATION_CONTEXT

已选择6行。

SQL> CONN YANGTK/YANGTK@TEST
已连接。
SQL>

至此,可以看到,原来失效的将近400个对象基本上都被重新编译通过,登陆时的错误也消失了。

需要注意的是,必须首先手工编译STANDARD包,然后编译DBMS_STANDARD包,utlrp脚本的正常运行的前提是这两个包正确。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/230160/viewspace-671046/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/230160/viewspace-671046/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一开始的需求只是表头部分在滚动时能一直固定在头部,那关键要实现的就是让tr能定位。 首先想到的方法是给tr设置relative,用ie6/7测试以下代码: Code 1 2 3 4 给tr设置relative后就能相对table定位了,看来很简单啊,但问题是这个方法ie8和ff都无效,而且存在很多问题,所以很快就被抛弃了。 ps:该效果用来做tr的拖动会很方便。 接着想到的是给table插入一个新tr,克隆原来的tr,并设置这个tr为fixed(ie6为absolute),例如: Code 1 2 3 4 5 6 第一个问题是fixed的tr在ie7中不能进行定位,而且td在定位后并不能保持在表格中的布局,这样在原表格插tr就没意义了。 ps:fixed的相关应用可参考仿LightBox效果。 最后我用的方法是新建一个table,并把源tr克隆到新table中,然后通过对新table定位来实现效果。 用这个方法关键有两点,首先要做一个仿真度尽可能高的tr,还有是要准确的定位,这些请看后面的程序说明。 程序说明 【克隆table】 克隆一个元素用cloneNode就可以了,它有一个bool参数,表示克隆是否包含子节点。 程序第一步就是克隆原table: this._oTable = $(table);//源table this._nTable = this._oTable.cloneNode(false);//新table this._nTable.id = "";//避免id冲突 要注意虽然ie的cloneNode参数是可选的(默认是false),但在ff是必须的,建议使用时都写上参数。 还要注意的是id属性也会被克隆,也就是克隆后会有两个相同id的元素(如果克隆对象有设置的话),这很容易会导致其他问题,程序会把克隆table的id属性设空。 ps:table请用class来绑定样式,用id的话新table就获取不了样式了。 克隆之后再设置样式: this._style.width = this._oTable.offsetWidth + "px"; this._style.position = isIE6 ? "absolute" : "fixed"; this._style.zIndex = 100; 一般来说offsetWidth是width+padding+border的结果,但table比较特别,测试下面的代码: Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra
CREATE USER cedar IDENTIFIED BY cedar DEFAULT TABLESPACE CEDAR_DATA TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; -- 5 Roles for cedar GRANT DBA TO cedar; GRANT RESOURCE TO cedar WITH ADMIN OPTION; GRANT AQ_ADMINISTRATOR_ROLE TO cedar; GRANT CONNECT TO cedar WITH ADMIN OPTION; GRANT AQ_USER_ROLE TO cedar; ALTER USER cedar DEFAULT ROLE ALL; -- 44 System Privileges for cedar GRANT CREATE ANY DIRECTORY TO cedar WITH ADMIN OPTION; GRANT CREATE PUBLIC SYNONYM TO cedar WITH ADMIN OPTION; GRANT EXECUTE ANY CLASS TO cedar WITH ADMIN OPTION; GRANT DROP ANY VIEW TO cedar WITH ADMIN OPTION; GRANT CREATE CLUSTER TO cedar; GRANT ALTER SYSTEM TO cedar; GRANT UPDATE ANY TABLE TO cedar; GRANT INSERT ANY TABLE TO cedar; GRANT LOCK ANY TABLE TO cedar; GRANT CREATE EXTERNAL JOB TO cedar WITH ADMIN OPTION; GRANT EXECUTE ANY PROGRAM TO cedar WITH ADMIN OPTION; GRANT CREATE JOB TO cedar WITH ADMIN OPTION; GRANT DROP ANY DIRECTORY TO cedar WITH ADMIN OPTION; GRANT ALTER ANY TRIGGER TO cedar; GRANT CREATE DATABASE LINK TO cedar; GRANT DROP ANY TABLE TO cedar WITH ADMIN OPTION; GRANT CREATE TABLE TO cedar WITH ADMIN OPTION; GRANT QUERY REWRITE TO cedar; GRANT ANALYZE ANY TO cedar; GRANT DROP ANY TRIGGER TO cedar; GRANT EXECUTE ANY PROCEDURE TO cedar; GRANT SELECT ANY TABLE TO cedar WITH ADMIN OPTION; GRANT ALTER ANY TABLE TO cedar; GRANT UNLIMITED TABLESPACE TO cedar WITH ADMIN OPTION; GRANT CREATE SESSION TO cedar; GRANT CREATE ANY TRIGGER TO cedar; GRANT DROP ANY PROCEDURE TO cedar WITH ADMIN OPTION; GRANT ALTER ANY PROCEDURE TO cedar; GRANT DROP PUBLIC SYNONYM TO cedar WITH ADMIN OPTION; GRANT DROP ANY SYNONYM TO cedar WITH ADMIN OPTION; GRANT MANAGE SCHEDULER TO cedar WITH ADMIN OPTION; GRANT CREATE ANY PROCEDURE TO cedar; GRANT CREATE PROCEDURE TO cedar WITH ADMIN OPTION; GRANT CREATE SEQUENCE TO cedar; GRANT CREATE VIEW TO cedar WITH ADMIN OPTION; GRANT CREATE SYNONYM TO cedar; GRANT DROP ANY INDEX TO cedar; GRANT DELETE ANY TABLE TO cedar; GRANT CREATE ANY TABLE TO cedar; GRANT CREATE ANY JOB TO cedar WITH ADMIN OPTION; GRANT SELECT ANY DICTIONARY TO cedar WITH ADMIN OPTION; GRANT CREATE ROLE TO cedar; GRANT CREATE ANY SYNONYM TO cedar WITH ADMIN OPTION; GRANT ALTER SESSION TO cedar WITH ADMIN OPTION; GRANT EXECUTE ON sys.dbms_aq TO cedar; GRANT EXECUTE ON sys.dbms_aqadm TO cedar; GRANT EXECUTE ON sys.dbms_network_acl_admin TO cedar; GRANT ALL ON sys.DBMS_LOCK TO cedar; 这个SQL在oracle 能用吗
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值