如何限制SQLPLUS工具可执行的命令

Oracle除了提供数据库级的各种权限来控制安全以外,对于SQLPLUS工具而言,还提供了特殊的控制方法。

一般数据库创建的时候,DBCA都会自动在SYSTEM用户下加载$ORACLE_HOME/sqlplus/admin/pupbld.sql脚本,来创建SQLPLUS_PRODUCT_PROFILE表,如果这个表没有创建,则在普通用户登陆时候会出现告警。这个表可以限制除SYS、SYSTEM以及SYSDBA/SYSOPER身份登陆以外的所有普通用户。通过这个表可以限制绝大部分的SQLPLUS命令、SQL命令和PL/SQL命令。

一个简单的例子:

SQL> CONN SYSTEM

请输入口令:

已连接。

SQL> DESC SQLPLUS_PRODUCT_PROFILE

名称                                     是否为空?类型

----------------------------------------- -------- ----------------------------

PRODUCT                                   NOT NULL VARCHAR2(30)

USERID                                             VARCHAR2(30)

ATTRIBUTE                                          VARCHAR2(240)

SCOPE                                              VARCHAR2(240)

NUMERIC_VALUE                                      NUMBER(15,2)

CHAR_VALUE                                         VARCHAR2(240)

DATE_VALUE                                         DATE

LONG_VALUE                                         LONG

SQL> INSERT INTO SQLPLUS_PRODUCT_PROFILE

 2  VALUES ('SQL*Plus', 'U1', 'DROP', NULL, NULL, 'DISABLED', NULL, NULL);

已创建1行。

SQL> COMMIT;

提交完成。

SQL> CONN U1/U1

已连接。

SQL> SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERID

------------------------------ ------- ----------

T                              TABLE

SQL> DROP TABLE T;

SP2-0544:无效的命令: drop

SQL> SELECT * FROM V$VERSION;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release9.2.0.4.0 - 64bitProduction

PL/SQL Release 9.2.0.4.0 - Production

CORE    9.2.0.3.0       Production

TNS for Linux: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45454.htm

由于SQLPLUS_PRODUCT_PROFILE表只是专门针对SQLPLUS工具的,因此对于PRODUCT列需要输入‘SQL*Plus’。USERID列输入需要限制的用户名,如果输入通配符‘%’,则对所有用户生效。ATTRIBUTE输入限制的命令,这里限制的是DROP命令。CHAR_VALUE必须输入‘DISABLED’,而其余的列目前没有使用,输入NULL。

可以看到,在9i中错误信息很不明确,用户如果碰到这个错误,根本不清楚到底是什么原因导致了命令的失败。

而在10g中,错误信息就清晰多了:

SQL> conn / as sysdba

Connected.

SQL> insert into system.sqlplus_product_profile

 2  values ('SQL*Plus', '%', 'SELECT', null, null, 'DISABLED', null, null);

1 row created.

SQL> commit;

时间: 2024-12-01 11:39:17

如何限制SQLPLUS工具可执行的命令的相关文章

java方法执行控制台命令工具类

package com.yanek.util; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class Tool { /** * @param args */ public static void main(String[] args) { System.out.println(executeCommond("ipconfig"

Excel中执行“宏”命令动画教程

<Excel2003入门动画教程59.Excel中执行"宏"命令>. 演示动画 操作步骤 在Excel中宏录制完成后,我们运行一下看看其效果如何: 执行"工具→宏→宏"命令,打开"宏"对话框,选中需要运行的宏,按一下"执行"按钮即可. 注意:如果在"录制新宏"对话框中设置了"快捷键",我们就可以通过按快捷键来运行相应的宏.

在Word2003菜单栏中执行菜单命令

  在Word2003中,用户可以使用鼠标或键盘来执行菜单中的命令.在使用鼠标选择命令时,首先单击菜单栏中的菜单命令,然后在出现的下拉菜单中直接单击需要的命令.如果用户看到某个命令之后带有省略号(-),说明在执行该命令时,会现对话框;反之,则会直接产生用户想要实现的效果,如图2009101901所示. 图2009101901 鼠标执行Word2003菜单命令 在使用键盘执行Word2003菜单命令时,首先按下ALT键激活菜单栏,然后输入菜单名后带下划线的字母.例如,按下ALT+T组合键可以打开"

按照net-snmp后执行mib2c命令有错

问题描述 按照net-snmp后执行mib2c命令有错 安装后net-snmp后,执行mib2c命令,结果如下: [root@0 mibs]# pwd /media/disk2/loongson/netsnmp/net-snmpinstall/share/snmp/mibs [root@0 mibs]# mib2c -bash: /usr/local/bin/mib2c: 没有那个文件或目录 可能是perl工具有问题,又到源码目录下执行下面命令,也有错误.提示没有按照net-snmp-confi

Android Java执行Shell命令

主要介绍Android或Java应用中如何以默认用户或root用户执行Shell命令,ShellUtils的API介绍.使用及使用场景(如静默安装和卸载.修改hosts文件.拷贝文件).使用纯Java实现,所以对Java程序同样适用. 很多朋友在使用TrineaAndroidCommon@Github中的ShellUtils工具类了,那就大致介绍下他的功能吧. 1.API介绍 以下是ShellUtils中最终执行命令的方法execCommand: Java 1 public CommandRes

Java程序执行Linux命令

java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: [plain] view plaincopyprint? ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,   该实例可用来控制进程并获得相关信息.Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.   检查进程的退出状态以及销毁(杀掉)进程的方法.   创建进程的方法可能无法

Laravel执行migrate命令提示:No such file or directory的解决方法_php实例

本文实例讲述了Laravel执行migrate命令提示:No such file or directory的解决方法.分享给大家供大家参考,具体如下: 今天使用Laravel命令行工具操作数据库迁移操作时报错,提示mysql 2002错误,如图: 查看数据库配置没错呀,网站前台也可以打开,说明能连上,那是什么原因呢? 在Laravel5中,有两种办法解决: 1.增加一个数据库配置项 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_H

sqlserver bcp(数据导入导出工具)一般用法与命令详解_MsSql

bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出.在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中.下面将详细讨论如何利用bcp导入导出数据. 1. bcp的主要参数介绍 bcp共有四个动作可以选择. (1) 导入. 这个动作使用in命令完成,后面跟

dos里执行tracert命令只有一跳的原因及解决方法_DOS/BAT

一直以来,我在家电脑DOS里执行Tracert命令时都只看到只有一跳的返回结果,令我非常不解.我原以为是电信运营商那边的问题,所以也就一直没去追究是什么真正的原因. C:\Documents and Settings\Administrator>tracert www.baidu.com Tracing route to www.a.shifen.com [220.181.111.148]over a maximum of 30 hops:   1     45 ms    46ms    46