有时出于安全考虑需要禁止一些业务系统的数据库用户执行sqlplus命令,方法很简单:在运行命令之前,将这些命令限制到一个由 SQL*Plus 引用的“特殊位置”。 此特殊位置是SYSTEM 模式中一个名为PRODUCT_USER_PROFILE 的表。 如果该表不存在,则您在每次启动 SQL*Plus 时将获得一个类似“Product User Profile Not Loaded”这样的警告。 为了创建这个表,需要运行pupbld.sql脚本。通常,这个脚本在$ORACLE_HOME/sqlplus/admin 路径中运行,具体的位置由系统决定。记住用system用户执行: SQL> conn system/passwd SQL> @?/sqlplus/admin/pupbld.sql pupbld.sql脚本内容如下(红色的内容是我添加的,表示禁止WENDING结尾的数据库用户操作列出的那些sqlplus命令,可以根据实际情况增删改): -- -- USAGE
DROP SYNONYM PRODUCT_USER_PROFILE; CREATE TABLE SQLPLUS_PRODUCT_PROFILE AS DROP TABLE PRODUCT_USER_PROFILE; -- Create SQLPLUS_PRODUCT_PROFILE from scratch CREATE TABLE SQLPLUS_PRODUCT_PROFILE -- Remove SQL*Plus V3 name for sqlplus_product_profile DROP TABLE PRODUCT_PROFILE; -- Create the view PRODUCT_PRIVS and grant access to that DROP VIEW PRODUCT_PRIVS; GRANT SELECT ON PRODUCT_PRIVS TO PUBLIC; -- End of pupbld.sql -- wangnc added, 2008-9-25 16:47:11, insert data delete PRODUCT_USER_PROFILE where product='SQL*Plus' and userid='%WENDING'; insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) --insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) --insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) --insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) insert into PRODUCT_USER_PROFILE (product, userid, attribute, char_value) commit; 注意: 禁用SQL*Plus SET指令的同时也会禁用SQL SET ROLE和SET TRANSACTION命令。 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22123669/viewspace-666607/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22123669/viewspace-666607/