Oracle 和 PL/SQL一堆问题~~
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




