http://topic.csdn.net/u/20090625/17/1aab81b3-bb62-4609-bbd0-82ca46bef797.html?2052623995
简单的说就是一个用户如何能够单步调试另外一个用户下面的存储过程?
77 个解决方案
#1
再次关注!
#2
楼上兄弟别光关注啊,也替我实验一下,找找办法......
#3
mark,up
#4
做了个测试:
1.在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
1.在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
#5
在9i下面执行也没有问题,刚测试过了。
#6
SQL> connect sys/oracle as sysdba
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> connect test01/test01;
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL> drop user test01;
SP2-0640: 未连接
SQL> connect /as sysdba
已连接。
SQL> drop user test01;
用户已丢弃
SQL> create user test01 identified by test01;
用户已创建
SQL> grant create any table to test01;
授权成功。
SQL> grant connect,resource test01;
grant connect,resource test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,exec any procedure to test01;
grant connect ,resource,create any procedure,exec any procedure to test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,execute any procedure to test01;
授权成功。
SQL> connect test01/test01;
已连接。
SQL> create table tt_01(xh varchar2(20),bh int);
表已创建。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200901',1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
200901 1
SQL>
另开一个窗口:
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 6月 29 15:54:52 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> create user test02 identified by test02;
用户已创建
SQL> grant resource,connect to test02;
授权成功。
SQL> grant debug connect session to test02;
授权成功。
SQL>
SQL> grant select on v_$session to test02;
授权成功。
SQL>
SQL> grant select on v_$sesstat to test02;
授权成功。
SQL>
SQL> grant select on v_$statname to test02;
授权成功。
SQL> grant execute any procedure to test02;
授权成功。
SQL>
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> connect test01/test01;
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL> drop user test01;
SP2-0640: 未连接
SQL> connect /as sysdba
已连接。
SQL> drop user test01;
用户已丢弃
SQL> create user test01 identified by test01;
用户已创建
SQL> grant create any table to test01;
授权成功。
SQL> grant connect,resource test01;
grant connect,resource test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,exec any procedure to test01;
grant connect ,resource,create any procedure,exec any procedure to test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,execute any procedure to test01;
授权成功。
SQL> connect test01/test01;
已连接。
SQL> create table tt_01(xh varchar2(20),bh int);
表已创建。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200901',1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
200901 1
SQL>
另开一个窗口:
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 6月 29 15:54:52 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> create user test02 identified by test02;
用户已创建
SQL> grant resource,connect to test02;
授权成功。
SQL> grant debug connect session to test02;
授权成功。
SQL>
SQL> grant select on v_$session to test02;
授权成功。
SQL>
SQL> grant select on v_$sesstat to test02;
授权成功。
SQL>
SQL> grant select on v_$statname to test02;
授权成功。
SQL> grant execute any procedure to test02;
授权成功。
SQL>
#7
Mark。 学习。
#8
oracle应该不会做得那么笨吧!只能debug自己的存储过程。
#9
测试截图:
[img=http://album.hi.csdn.net/app_uploads/zxf_feng/20090629/160042703.p.jpg?d=20090629162413609][/img]
[img=http://album.hi.csdn.net/app_uploads/zxf_feng/20090629/160042703.p.jpg?d=20090629162413609][/img]
#10
to zxf_feng :
首先非常感谢你的热心测试,明天我到单位测试一下,主要就是那几个v$视图。
首先非常感谢你的热心测试,明天我到单位测试一下,主要就是那几个v$视图。
#11
我也试过了,没有问题的哟。
#12
to 楼上:
[img=http://album.hi.csdn.net/app_uploads/balloonman2002/20090629/144558296.p.gif?d=20090629144616234][/img]
[img=http://album.hi.csdn.net/app_uploads/balloonman2002/20090629/144558296.p.gif?d=20090629144616234][/img]
#13
是的,9i下测试通过
#14
学习了
#15
进来学习。。
还是技术版未改版舒服。。
还是技术版未改版舒服。。
#16
v_$session 还是 v$session ?
#17
。。。学习一下,看不太懂。。。
#18
能单步调试跟踪到存储过程内部吗?我试验了还是只能执行,但无法跟踪到存储过程内部。
#19
可以的
#20
v_$session 还是 v$session ? 我执行时提示v_$session不存在。
#21
我是用oracle sql developer试的
有以下权限就可以了
debug any procedure
debug connect session
担心有问题有对当事的被调用的procedure也给了个debug的权限
debug on procedurename
可以单步跟踪进去哟。
不过后来把
debug on procedurename去掉了,
SQL>alter system flush shared_pool;以后
还是可以单步跟踪哟。
你的情况奇怪哟。
有以下权限就可以了
debug any procedure
debug connect session
担心有问题有对当事的被调用的procedure也给了个debug的权限
debug on procedurename
可以单步跟踪进去哟。
不过后来把
debug on procedurename去掉了,
SQL>alter system flush shared_pool;以后
还是可以单步跟踪哟。
你的情况奇怪哟。
#22
要以connect /as sysdba权限登录赋权限
#23
to zxf_feng:
我用的SYSTEM登录,也提示v_$session不存在,改用v$session 后成功,但还是无法跟踪到存储过程内部。。。
我用的SYSTEM登录,也提示v_$session不存在,改用v$session 后成功,但还是无法跟踪到存储过程内部。。。
#24
授于那个用户 dba 权限试。
#25
测试过了,在plsql developer7.1.1上跑的,也没有问题。
当前的权限为
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST1 DEBUG ANY PROCEDURE NO
TEST1 UNLIMITED TABLESPACE NO
TEST1 DEBUG CONNECT SESSION NO
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
TEST1 CONNECT NO YES NO
TEST1 RESOURCE NO YES NO
当前的权限为
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST1 DEBUG ANY PROCEDURE NO
TEST1 UNLIMITED TABLESPACE NO
TEST1 DEBUG CONNECT SESSION NO
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
TEST1 CONNECT NO YES NO
TEST1 RESOURCE NO YES NO
#26
xuexi
#27
不错...学习了,DeBug ORACLE..
#28
彻底崩溃,用SYS用户登陆授权了v_$session 权限,还是不行......
#29
奇怪的问题..学习了~
#30
赋予相应的权限应该可一的啊! 楼主现在还不能调是吗??
#31
我也测试了一下,没有问题
#32
应该是没问题的
#33
今天安装了oracle sqldeveloper,里面可以在存储过程内部单步调试,但同样的用户同样的权限在PL/SQL Developer中就是无法跟踪到存储过程内部,真是郁闷啊
#34
尽管懂的不多 但是我也学习了学习了
#35
fc bdxf hfhfgj hnhbnfgb ndn
#36
fth sfg hfgb
#37
存储过程
#38
关注中...
#39
在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
#40
刚刚开始学oracle,关注...
#41
mark
#42
你在怎么建立的呢,我在oracle9i,10g下均测试没有问题.
用pl/sql developer调试时你是如何调试的呢,可以设断点
看9楼的图,上面有几个按钮run(ctrl+r),step into,step over,step out...
#43
楼上兄弟还有QQ、MSN啊,我用屏幕录像录一段给你看看
#44
mark
#45
刚学习了过程,学习下~~~
#46
我将调试过程录成FLASH了,哪位帮我看一下......
#47
PL/SQL DEVELOPER工具可以单步跟踪调试其他用户创建的存储过程与包的,需要以下权限:unlimited tablespace,execute any type,execute any procedure,execute any library等。
#48
为什么要用一个用户A去调试另一个用户B的存储过程???
A只要有权限执行就行了啊
有问题就用B用户去调试不就好了
搞这么麻烦干吗?
A只要有权限执行就行了啊
有问题就用B用户去调试不就好了
搞这么麻烦干吗?
#49
因为这是我们的生产系统,现在在一边开发一边使用阶段,多人同时维护,必须要控制好权限
#50
不管怎么说,既然这个存储过程不是A用户的
那A用户没必要去调试,要调试也该B用户去调试吧
不过这与问题无关,随便说说
那A用户没必要去调试,要调试也该B用户去调试吧
不过这与问题无关,随便说说
#1
再次关注!
#2
楼上兄弟别光关注啊,也替我实验一下,找找办法......
#3
mark,up
#4
做了个测试:
1.在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
1.在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
#5
在9i下面执行也没有问题,刚测试过了。
#6
SQL> connect sys/oracle as sysdba
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> connect test01/test01;
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL> drop user test01;
SP2-0640: 未连接
SQL> connect /as sysdba
已连接。
SQL> drop user test01;
用户已丢弃
SQL> create user test01 identified by test01;
用户已创建
SQL> grant create any table to test01;
授权成功。
SQL> grant connect,resource test01;
grant connect,resource test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,exec any procedure to test01;
grant connect ,resource,create any procedure,exec any procedure to test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,execute any procedure to test01;
授权成功。
SQL> connect test01/test01;
已连接。
SQL> create table tt_01(xh varchar2(20),bh int);
表已创建。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200901',1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
200901 1
SQL>
另开一个窗口:
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 6月 29 15:54:52 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> create user test02 identified by test02;
用户已创建
SQL> grant resource,connect to test02;
授权成功。
SQL> grant debug connect session to test02;
授权成功。
SQL>
SQL> grant select on v_$session to test02;
授权成功。
SQL>
SQL> grant select on v_$sesstat to test02;
授权成功。
SQL>
SQL> grant select on v_$statname to test02;
授权成功。
SQL> grant execute any procedure to test02;
授权成功。
SQL>
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> connect test01/test01;
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL> drop user test01;
SP2-0640: 未连接
SQL> connect /as sysdba
已连接。
SQL> drop user test01;
用户已丢弃
SQL> create user test01 identified by test01;
用户已创建
SQL> grant create any table to test01;
授权成功。
SQL> grant connect,resource test01;
grant connect,resource test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,exec any procedure to test01;
grant connect ,resource,create any procedure,exec any procedure to test01
*
ERROR 位于第 1 行:
ORA-00990: 缺少或无效权限
SQL> grant connect ,resource,create any procedure,execute any procedure to test01;
授权成功。
SQL> connect test01/test01;
已连接。
SQL> create table tt_01(xh varchar2(20),bh int);
表已创建。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200901',1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
200901 1
SQL>
另开一个窗口:
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 6月 29 15:54:52 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
SQL> create user test02 identified by test02;
用户已创建
SQL> grant resource,connect to test02;
授权成功。
SQL> grant debug connect session to test02;
授权成功。
SQL>
SQL> grant select on v_$session to test02;
授权成功。
SQL>
SQL> grant select on v_$sesstat to test02;
授权成功。
SQL>
SQL> grant select on v_$statname to test02;
授权成功。
SQL> grant execute any procedure to test02;
授权成功。
SQL>
#7
Mark。 学习。
#8
oracle应该不会做得那么笨吧!只能debug自己的存储过程。
#9
测试截图:
[img=http://album.hi.csdn.net/app_uploads/zxf_feng/20090629/160042703.p.jpg?d=20090629162413609][/img]
[img=http://album.hi.csdn.net/app_uploads/zxf_feng/20090629/160042703.p.jpg?d=20090629162413609][/img]
#10
to zxf_feng :
首先非常感谢你的热心测试,明天我到单位测试一下,主要就是那几个v$视图。
首先非常感谢你的热心测试,明天我到单位测试一下,主要就是那几个v$视图。
#11
我也试过了,没有问题的哟。
#12
to 楼上:
[img=http://album.hi.csdn.net/app_uploads/balloonman2002/20090629/144558296.p.gif?d=20090629144616234][/img]
[img=http://album.hi.csdn.net/app_uploads/balloonman2002/20090629/144558296.p.gif?d=20090629144616234][/img]
#13
是的,9i下测试通过
#14
学习了
#15
进来学习。。
还是技术版未改版舒服。。
还是技术版未改版舒服。。
#16
v_$session 还是 v$session ?
#17
。。。学习一下,看不太懂。。。
#18
能单步调试跟踪到存储过程内部吗?我试验了还是只能执行,但无法跟踪到存储过程内部。
#19
可以的
#20
v_$session 还是 v$session ? 我执行时提示v_$session不存在。
#21
我是用oracle sql developer试的
有以下权限就可以了
debug any procedure
debug connect session
担心有问题有对当事的被调用的procedure也给了个debug的权限
debug on procedurename
可以单步跟踪进去哟。
不过后来把
debug on procedurename去掉了,
SQL>alter system flush shared_pool;以后
还是可以单步跟踪哟。
你的情况奇怪哟。
有以下权限就可以了
debug any procedure
debug connect session
担心有问题有对当事的被调用的procedure也给了个debug的权限
debug on procedurename
可以单步跟踪进去哟。
不过后来把
debug on procedurename去掉了,
SQL>alter system flush shared_pool;以后
还是可以单步跟踪哟。
你的情况奇怪哟。
#22
要以connect /as sysdba权限登录赋权限
#23
to zxf_feng:
我用的SYSTEM登录,也提示v_$session不存在,改用v$session 后成功,但还是无法跟踪到存储过程内部。。。
我用的SYSTEM登录,也提示v_$session不存在,改用v$session 后成功,但还是无法跟踪到存储过程内部。。。
#24
授于那个用户 dba 权限试。
#25
测试过了,在plsql developer7.1.1上跑的,也没有问题。
当前的权限为
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST1 DEBUG ANY PROCEDURE NO
TEST1 UNLIMITED TABLESPACE NO
TEST1 DEBUG CONNECT SESSION NO
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
TEST1 CONNECT NO YES NO
TEST1 RESOURCE NO YES NO
当前的权限为
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST1 DEBUG ANY PROCEDURE NO
TEST1 UNLIMITED TABLESPACE NO
TEST1 DEBUG CONNECT SESSION NO
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
TEST1 CONNECT NO YES NO
TEST1 RESOURCE NO YES NO
#26
xuexi
#27
不错...学习了,DeBug ORACLE..
#28
彻底崩溃,用SYS用户登陆授权了v_$session 权限,还是不行......
#29
奇怪的问题..学习了~
#30
赋予相应的权限应该可一的啊! 楼主现在还不能调是吗??
#31
我也测试了一下,没有问题
#32
应该是没问题的
#33
今天安装了oracle sqldeveloper,里面可以在存储过程内部单步调试,但同样的用户同样的权限在PL/SQL Developer中就是无法跟踪到存储过程内部,真是郁闷啊
#34
尽管懂的不多 但是我也学习了学习了
#35
fc bdxf hfhfgj hnhbnfgb ndn
#36
fth sfg hfgb
#37
存储过程
#38
关注中...
#39
在用户test01下面建建一个存储过程
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
SQL> create or replace procedure p_tt_01(xh varchar2,bh int)
2 is
3 begin
4 insert into tt_01 values(xh,bh);
5 commit;
6 end;
7 /
过程已创建。
SQL> begin
2 p_tt_01('200909021',12);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
200909021 12
已选择7行。
SQL> select * from tt_01;
XH BH
-------------------- ----------
20090629
20090623 1
20090623 2
20090623 3
20090624 1
20090624 2
20091001 100
20090932 23
23333 23
200909021 12
已选择10行。
SQL> show user;
USER 为 "TEST01"
SQL>
2.新建一个用户test_p_tt然后执行p_tt_01存储过程
SQL> connect /as sysdba
已连接。
SQL> create user test_p_tt identified by test_p_tt;
用户已创建。
SQL> grant connect,resource,execute any procedure to test_p_tt;
授权成功。
SQL> connect test_p_tt/test_p_tt;
已连接。
SQL> select * from test01.tt_01;
select * from test01.tt_01
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> exec test01.test_p_tt('20091001',100);
BEGIN test01.test_p_tt('20091001',100); END;
*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'TEST01.TEST_P_TT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> exec test01.p_tt_01('20091001',100);
PL/SQL 过程已成功完成。
SQL>
3.在pl/sql developer下使用test单步跟踪时需要赋以下的权限:
SQL> grant debug any procedure to test_p_tt;
授权成功。
SQL> grant debug connect session to test_p_tt;
授权成功。
SQL> grant select on v_$session to test_p_tt;
授权成功。
SQL> grant select on v_$sesstat to test_p_tt;
授权成功。
SQL> grant select on v_$statname to test_p_tt;
授权成功。
#40
刚刚开始学oracle,关注...
#41
mark
#42
你在怎么建立的呢,我在oracle9i,10g下均测试没有问题.
用pl/sql developer调试时你是如何调试的呢,可以设断点
看9楼的图,上面有几个按钮run(ctrl+r),step into,step over,step out...
#43
楼上兄弟还有QQ、MSN啊,我用屏幕录像录一段给你看看
#44
mark
#45
刚学习了过程,学习下~~~
#46
我将调试过程录成FLASH了,哪位帮我看一下......
#47
PL/SQL DEVELOPER工具可以单步跟踪调试其他用户创建的存储过程与包的,需要以下权限:unlimited tablespace,execute any type,execute any procedure,execute any library等。
#48
为什么要用一个用户A去调试另一个用户B的存储过程???
A只要有权限执行就行了啊
有问题就用B用户去调试不就好了
搞这么麻烦干吗?
A只要有权限执行就行了啊
有问题就用B用户去调试不就好了
搞这么麻烦干吗?
#49
因为这是我们的生产系统,现在在一边开发一边使用阶段,多人同时维护,必须要控制好权限
#50
不管怎么说,既然这个存储过程不是A用户的
那A用户没必要去调试,要调试也该B用户去调试吧
不过这与问题无关,随便说说
那A用户没必要去调试,要调试也该B用户去调试吧
不过这与问题无关,随便说说