Heim > Datenbank > MySQL-Tutorial > Hauptteil

创建oracle发邮件job导致的故障

WBOY
Freigeben: 2016-06-07 17:41:13
Original
1000 Leute haben es durchsucht

前几天创建了个发邮件的存储过程,想把数据库每天的运行情况自动发到邮箱,没想到第二天就出了问题,在dbms/trace目录下产生了大量的xxx_j000_xxx.trc文件,一分

    前几天创建了个发邮件的存储过程,想把数据库每天的运行情况自动发到邮箱,美国服务器,没想到第二天就出了问题,在dbms/trace目录下产生了大量的xxx_j000_xxx.trc文件,一分钟产生2个。alter日志报ora-12012、ora-06576错误,出现sys.PROCESS_ETL2、dbms_scheduler、emd_maintenance.remove_em_dbms_jobs的内容。
   
--1.查询job:
select * from dba_jobs t;
  what =PROCESS_ETL2 的job=88,直接删除88的job。
或 : SQL> EXEC dbms_job.remove(job#);  --移去job号
这个job已经删除了,但是trace文件还是照样产生。

--2. 删除em的job:
SQL> exec emd_maintenance.remove_em_dbms_jobs;
trace文件还是照样产生。

--3. 查询PROCESS_ETL2的对象:
select * from sys.dba_objects t   where t.owner = 'SYS'   and object_name = 'PROCESS_ETL2';
显示状态status=VALID, 类型object_type=job,timestamp 的值不断的变化,看来这个job还是在执行,香港虚拟主机,但是查dba_jobs 试图已经看不到了。

--4. 必须删除PROCESS_ETL2这个对象: 
begin
  dbms_scheduler.drop_job (
    job_name        => 'process_etl2',
    force           => true);
end; 
    
--5. 再次查询PROCESS_ETL2的对象:
select * from sys.dba_objects t   where t.owner = 'SYS'   and object_name = 'PROCESS_ETL2';  
--已经没有了,trace目录下已经不产生相应文件了 。

--6. 总结:这个 Scheduler Email是11gr2的增强功能,在没有充分了解这个之前还是不能随便拿来使用的,可能会产生意想不到的结果。
  
--7. dbms_scheduler的create_job如下:
--建job:
begin
  dbms_scheduler.create_job (
    job_name        => 'process_etl2',
    job_type        => 'STORED_PROCEDURE',
    job_action      => 'process_etl2',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'freq=minutely; bysecond=0',
    enabled         => TRUE);
end;

---原过程见下:
PROCEDURE create_job(
  job_name                IN VARCHAR2, 
  schedule_name           IN VARCHAR2,
  job_type                 IN VARCHAR2,  
  job_action              IN VARCHAR2,   
  number_of_arguments     IN PLS_INTEGER              DEFAULT 0,
  job_class               IN VARCHAR2              DEFAULT 'DEFAULT_JOB_CLASS',
  enabled                 IN BOOLEAN                  DEFAULT FALSE,
  auto_drop               IN BOOLEAN                  DEFAULT TRUE,
  comments                 IN VARCHAR2                 DEFAULT NULL,
  credential_name         IN VARCHAR2                 DEFAULT NULL,
  destination_name        IN VARCHAR2                 DEFAULT NULL);
 
PROCEDURE drop_job(
  job_name                IN VARCHAR2,
  force                   IN BOOLEAN      DEFAULT FALSE,
  defer                   IN BOOLEAN      DEFAULT FALSE,
  commit_semantics        IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');
 
 

本文出自 “srsunbing” 博客,香港服务器租用,请务必保留此出处

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage