[20211206]toad下job建立查看问题.txt --//上班检查发现同事建立的job不是很好,使用sys模式执行,我在测试环境演示遇到一些问题,做一个记录: 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production --//首先我跟踪一下查询,在sys用户下执行如下: Select job, what, log_user, priv_user, schema_user, last_date, this_date, this_sec, next_date, next_sec, total_time, broken, interval, failures, nls_env , instance from DBA_JOBS where 1=1 and schema_user = 'SYS' --//在scott用户下执行如下: Select job, what, log_user, priv_user, schema_user, last_date, this_date, this_sec, next_date, next_sec, total_time, broken, interval, failures, nls_env , instance from sys.user_jobs where 1=1 and schema_user = 'SCOTT'; 2.测试: --//我使用sys用户登录建立job如下,注我建立2次,一次使用current_schema=SCOTT,一次使用current_schema=SYS. DECLARE X NUMBER; user_name varchar2(30); BEGIN select user into user_name from dual; execute immediate 'alter session set current_schema = SCOTT'; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'SCOTT.TEST_JOB_DEPTX;' ,next_date => to_date('05/12/2021 09:35:55','dd/mm/yyyy hh24:mi:ss') ,interval => 'SYSDATE+5/1440 ' ,no_parse => FALSE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); execute immediate 'alter session set current_schema = ' || user_name ; EXCEPTION WHEN OTHERS THEN execute immediate 'alter session set current_schema = ' || user_name ; RAISE; END; COMMIT; END; / --//这样在toad下使用schema browser浏览,两个界面都无法发现我建立的job。 SCOTT@book> select * from DBA_JOBS where job in (392,393) 2 @ pr ============================== JOB : 392 LOG_USER : SYS PRIV_USER : SYS SCHEMA_USER : SCOTT LAST_DATE : 2021-12-06 09:49:18 LAST_SEC : 09:49:18 THIS_DATE : THIS_SEC : NEXT_DATE : 2021-12-06 09:54:18 NEXT_SEC : 09:54:18 TOTAL_TIME : 0 BROKEN : N INTERVAL : SYSDATE+5/1440 FAILURES : 0 WHAT : SCOTT.TEST_JOB_DEPTX; NLS_ENV : NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENCY='AMERICA' NLS_NUMERIC_CHARACTERS='.,' NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' NLS_DATE_LANGUAGE='AMERICAN' NLS_SORT='BINARY' MISC_ENV : 010200020A000000 INSTANCE : 0 ============================== JOB : 393 LOG_USER : SYS PRIV_USER : SYS SCHEMA_USER : SCOTT LAST_DATE : 2021-12-06 09:47:18 LAST_SEC : 09:47:18 THIS_DATE : THIS_SEC : NEXT_DATE : 2021-12-06 09:52:18 NEXT_SEC : 09:52:18 TOTAL_TIME : 0 BROKEN : N INTERVAL : SYSDATE+5/1440 FAILURES : 0 WHAT : SCOTT.TEST_JOB_DEPTX; NLS_ENV : NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENCY='AMERICA' NLS_NUMERIC_CHARACTERS='.,' NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' NLS_DATE_LANGUAGE='AMERICAN' NLS_SORT='BINARY' MISC_ENV : 010200020A000000 INSTANCE : 0 PL/SQL procedure successfully completed. --//上下比较,两者方式建立并没有什么不同。 --//scott用户在toad下使用sys.user_jobs视图。 CREATE OR REPLACE FORCE VIEW SYS.USER_JOBS ( JOB ,LOG_USER ,PRIV_USER ,SCHEMA_USER ,LAST_DATE ,LAST_SEC ,THIS_DATE ,THIS_SEC ,NEXT_DATE ,NEXT_SEC ,TOTAL_TIME ,BROKEN ,INTERVAL ,FAILURES ,WHAT ,NLS_ENV ,MISC_ENV ,INSTANCE ) AS SELECT j."JOB" ,j."LOG_USER" ,j."PRIV_USER" ,j."SCHEMA_USER" ,j."LAST_DATE" ,j."LAST_SEC" ,j."THIS_DATE" ,j."THIS_SEC" ,j."NEXT_DATE" ,j."NEXT_SEC" ,j."TOTAL_TIME" ,j."BROKEN" ,j."INTERVAL" ,j."FAILURES" ,j."WHAT" ,j."NLS_ENV" ,j."MISC_ENV" ,j."INSTANCE" FROM dba_jobs j, sys.user$ u WHERE j.priv_user = u.name AND u.user# = USERENV ('SCHEMAID'); --//查询条件除了u.user# = USERENV ('SCHEMAID'),还加了j.priv_user = u.name,导致scoot用户无法看到job在schema browser浏览 --//界面上。 --//而sys用户查询DBA_JOBS,但是限定条件是schema_user = 'SYS'。 3.收尾: --//如何删除: SYS@book> @ desc_proc sys dbms_job remove; INPUT OWNER PACKAGE_NAME OBJECT_NAME sample : @desc_proc sys dbms_stats gather_%_stats OWNER PACKAGE_NAME OBJECT_NAME SEQUENCE ARGUMENT_NAME DATA_TYPE IN_OUT DEFAULTED ---------- -------------------- ------------------------------ ---------- -------------------- -------------------- --------- ---------- SYS DBMS_JOB REMOVE 1 JOB BINARY_INTEGER IN N SYS@book> exec sys.dbms_job.remove(392); PL/SQL procedure successfully completed. SYS@book> exec sys.dbms_job.remove(393); PL/SQL procedure successfully completed. SYS@book> select * from DBA_JOBS where job in (392,393); no rows selected --//实际上这些都是细节问题。实际上如果在sys用户建立执行如下,就没有这个问题。 --//注:我的测试环境scott具有dba权限,执行一样没有问题,不过仅仅sys用户能看到。 DECLARE X NUMBER; user_name varchar2(30); BEGIN select user into user_name from dual; execute immediate 'alter session set current_schema = SYS'; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'SCOTT.TEST_JOB_DEPTX;' ,next_date => to_date('05/12/2021 09:35:55','dd/mm/yyyy hh24:mi:ss') ,interval => 'SYSDATE+5/1440 ' ,no_parse => FALSE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); execute immediate 'alter session set current_schema = ' || user_name ; EXCEPTION WHEN OTHERS THEN execute immediate 'alter session set current_schema = ' || user_name ; RAISE; END; COMMIT; END; / 4.总结: --//这些仅仅是一些细节问题,我们团队更多依赖toad查看,这样可能出现一些问题。 --//另外我们有一些规定就是这些job建立要经过dba的核审来建立,这样dba并没有用户的权限,这样只能以sys用户建立,这样建立下只能在 --//sys用户能看见,我个人认为这样不是很好。 --//在测试结束前我发现sys用户还是可以看到就是要设置scott在schema browser。这样查询条件是 Select job, what, log_user, priv_user, schema_user, last_date, this_date, this_sec, next_date, next_sec, total_time, broken, interval, failures, nls_env , instance from DBA_JOBS where 1=1 and schema_user = 'SCOTT'; --//主要区别普通用户使用user_XXX 视图,dba用户是DBA_XXX视图。顺便说一下我们团队job管理太乱了。 SYS@127.0.0.1:9105/dbcn> select job,log_user,priv_user,schema_user from dba_jobs where priv_user<>'APEX_030200'; JOB LOG_USER PRIV_USER SCHEMA_USER ---------- ------------------------------ ------------------------------ ------------------------------ 61 SYSTEM SYSTEM TOAD 3 SYSTEM SYSTEM PPPPPP 41 SYSTEM SYSTEM PPPPPP_HHH 101 SYSTEM SYSTEM PPPPPP_HHH 121 SYSTEM SYSTEM PPPPPP_HHH 12 SYS SYS SYS 5614 SYS SYS SYS 342 PPPPPP_HHH PPPPPP_HHH PPPPPP_HHH 8 rows selected. --//有好几个实际上使用system用户建立。给维护添加不必要的麻烦。
[20211206]toad下job建立查看问题.txt
来源:这里教程网
时间:2026-03-03 17:16:43
作者:
编辑推荐:
- [20211203]演示job启动时间改变的情况.txt03-03
- [20211206]toad下job建立查看问题.txt03-03
- Oracle一次“选错索引”问题的分析03-03
- [20211206]修改job属性问题.txt03-03
- 「Oracle」Oracle 数据库备份还原03-03
- Networker恢复oracle rac到单机03-03
- 通过进程找sql03-03
- 【CONNECT】Oracle连接方式详细介绍(专用/共享服务器)03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle一次“选错索引”问题的分析
Oracle一次“选错索引”问题的分析
26-03-03 - Networker恢复oracle rac到单机
Networker恢复oracle rac到单机
26-03-03 - 【CONNECT】Oracle连接方式详细介绍(专用/共享服务器)
【CONNECT】Oracle连接方式详细介绍(专用/共享服务器)
26-03-03 - U盘里的文件删除了还能恢复吗?不看别后悔
U盘里的文件删除了还能恢复吗?不看别后悔
26-03-03 - 「Oracle」Oracle 数据库安装
「Oracle」Oracle 数据库安装
26-03-03 - u盘格式化后能恢复数据吗?格式化U盘恢复
u盘格式化后能恢复数据吗?格式化U盘恢复
26-03-03 - 剪切后的文件可以恢复吗?恢复剪切文件怎么办?
剪切后的文件可以恢复吗?恢复剪切文件怎么办?
26-03-03 - 文件被隐藏了怎么恢复?读完你就知道了
文件被隐藏了怎么恢复?读完你就知道了
26-03-03 - OGG的抽取进程合并
OGG的抽取进程合并
26-03-03 - 还原分区失败怎么办?为什么会出现还原分区失败
还原分区失败怎么办?为什么会出现还原分区失败
26-03-03
