CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

Oracle 和 PL/SQL一堆问题~~

楼主sozdream(Dream.Zhang)2006-07-01 12:28:09 在 Oracle / 基础和管理 提问

1.权限问题    
  create   table   D_SPC_DATA01(  
          time_key   timestamp(3)   primary   key,  
          eqp_id char(6)   not   null,  
          lot_id char(10)   not   null,  
          spc_value number   default   0   not   null  
  )  
   
  同样是这句create   table,在同一个user下,用sql*plus能创建成功,   调用存储过程确报错:  
  ORA-01031:权限不足  
   
  2.代码隐藏问题:  
  写了很多存储过程和包~怎样设置才能使自己看得到代码,别人只能调用和看到声明?  
   
  3.   先建一个user(比如appdev,给予resource权限),   另外我还想建个user(比如appadmin,属于同一个方案,但权限比appdev大很多)  
   
   
  每题10分,解完立刻给分 问题点数:30、回复次数:13Top

1 楼yqwd911(windy)回复于 2006-07-01 12:53:56 得分 0

不知道帮你顶  
  第三个问题说的不是很清楚,要建立两个就直接去建立就好了Top

2 楼sozdream(Dream.Zhang)回复于 2006-07-01 13:31:54 得分 0

第三个问题详细举例:  
          建立user:   appdev,   赋予resource角色,专门给developer用的userid.  
  然后在appdev下建立很多表,索引,存储过程之类.  
          然后,再需要建立user:   appadmin,   赋予dba角色,   是管理这个application的dba专用userid.   要求是appadmin的方案和appdev是同一个,   可以管理上面建立的表,索引,存储过程.  
          再建立user:   appuser,   ....     等等,不同userid给不同人使用,   但管理的是同一个DB方案.  
   
  明白?     怎么实现?     (oracle默认方式建立user,一个user对应一个方案,各不相关)Top

3 楼sozdream(Dream.Zhang)回复于 2006-07-01 14:10:55 得分 0

顶顶顶~~  
   
  查看手册中~   初步有点眉目..Top

4 楼vc555(学习甲骨文)回复于 2006-07-01 19:59:19 得分 10

第二个问题用wrap行不行?Top

5 楼sozdream(Dream.Zhang)回复于 2006-07-02 13:07:34 得分 0

似乎第三个问题是无解的..  
  sqlserver倒可以Top

6 楼sozdream(Dream.Zhang)回复于 2006-07-02 13:07:57 得分 0

CSDN没办法先给一点分数,但不结帖?Top

7 楼xiaosheng2008(小生)回复于 2006-07-02 15:05:47 得分 5

2.不用设置你就可以看到代码  
      conn   your_user_name/password  
      select   text   from   user_resourec  
      where   name   like   your_procedure_name;  
  3.select   *   from   dba_sys_privs;--列出所有系统权限  
      select   *   from   dba_tab_privs;--列出所有对象权限  
      想给用户什么权限就用grant吧  
  Top

8 楼asusa3a(从此告别懒惰)(心不外弛气不外浮)回复于 2006-07-03 17:29:39 得分 0

第一个问题,应该是不可能的,你的存储是否涉及到别的东西,把表和存储都贴上来。Top

9 楼dobetterthatnthink(如果你没有那么多的选择)回复于 2006-07-04 09:50:03 得分 5

简单的问题..第一个,,不够就是不够..肯定是因为权限没有分配..  
    第二个问题可以的,,按照你的想法是不行的..不过可以变通一些..存储在程序目录中的脚本是可见的,,而服务器上的用wrap处理..什么时候你找到在服务器上,,如你所想的..告诉我..  
      第三个问题,,也简单的很,,还是grant的问题,在sql*plus适当的使用批处理语句..(权限).  
        所有这些都有参考的,,不存在技术上的难点,,..Top

10 楼sbaz(万神渡劫)回复于 2006-07-04 16:31:55 得分 5

第一个问题,DDL在存储过程中应该用动态SQL来执行,也就是  
  EXECUTE   IMMEDIATE   'create   table   D_SPC_DATA01(  
          time_key   timestamp(3)   primary   key,  
          eqp_idchar(6)   not   null,  
          lot_idchar(10)   not   null,  
          spc_valuenumber   default   0   not   null  
  )';  
  Top

11 楼fingerfox(狐狸【人不要脸,天下无敌】)回复于 2006-07-04 17:41:14 得分 0

grant   create   any   table   to   userTop

12 楼stone1126(刘妈妈的宝宝)回复于 2006-07-05 14:17:48 得分 5

恩,第一个问题可以用动态SQL来实现,第二个问题可以用WRAP来加密,第三个问题不知道Top

13 楼sozdream(Dream.Zhang)回复于 2006-07-05 17:49:19 得分 0

第一个问题:当然是用动态sql来做,否则编译都通不过!     sql*plus我用term这个user建表,成功;   然后把该表删了;   再用这个user直接call一个procedure,   作用也是建这个表,就显示权限不足.   奇怪??     (解决方法是有:   加autoid   current_user,   但是调用和定义者都是term,   为什么要加这句?     PLSQL   GUILD上写明了不用加)  
   
  第二个问题:   用wrap没错~  
   
  第三个问题:   Oracle好象就是一个user对应一个方案;   (不像sqlserver,一个方案可以有很多user)   ,   此问题无解~~Top

相关问题

关键词

得分解答快速导航

  • 帖主:sozdream
  • vc555
  • xiaosheng2008
  • dobetterthatnthink
  • sbaz
  • stone1126

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo