AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

Perguntas[jobs](dba)

Martin Hope
Huskie69
Asked: 2022-04-27 01:01:06 +0800 CST

Problema com o Agendamento de Tarefas do Oracle

  • 1

Eu tenho um trabalho que atualiza um grupo de atualização de exibição materializada no Oracle 19c. Eu queria atualizar o grupo diariamente à meia-noite - trunc(sysdate)? O trabalho foi feito usando o seguinte PL/SQL:

  BEGIN
  DBMS_REFRESH.MAKE (
        name => 'REFG_1',
        list => '', 
        next_date => trunc(sysdate), 
        interval => 'SYSDATE + 1',
        implicit_destroy => FALSE, 
        rollback_seg => '',
        push_deferred_rpc => TRUE, 
        refresh_after_errors => FALSE);
  END;
  /

Os MVs estão sendo atualizados diariamente. No entanto, eles são atualizados às 11h26 (isso coincide com o horário em que criei o trabalho originalmente).

Como crio este trabalho para garantir que ele seja atualizado à meia-noite todas as noites?

oracle jobs
  • 2 respostas
  • 41 Views
Martin Hope
Mikhail Aksenov
Asked: 2021-01-22 04:36:03 +0800 CST

Por que um trabalho de dbms_job está QUEBRADO

  • 1

Eu tenho um trabalho Oracle que usa o pacote dbms_job. Vejo que se torna QUEBRADO:

Select job,what,BROKEN from dba_jobs; 
-------- ------------ -----------
1   statspack.snap; Y

gostaria de saber o motivo de estar quebrado

ASAIK para trabalhos agendados temos a visualização dba_scheduler_job_log onde podemos ver o motivo da falha, mas e os trabalhos dbms_job?

oracle jobs
  • 1 respostas
  • 853 Views
Martin Hope
Andrew Hicks
Asked: 2020-09-26 14:09:42 +0800 CST

Por que um trabalho agendado falharia no SQL Developer?

  • -1

Estou tentando criar um trabalho agendado no Oracle SQL Developer que seria executado uma vez por mês e estou testando o recurso Agendador/Trabalhos em que criei uma consulta SQL simples para testar a capacidade de fazer isso. Tenho uma tabela simples chamada "TEST123" e posso ver que funciona quando faço "SELECT * FROM TEST123;".

No SQL Developer eu tenho um Job chamado "TEST1" que tem um bloco PL/SQL = "DROP TABLE TEST123;" para ser executado imediatamente (embora eu também tenha testado isso executando em um horário específico).

Depois vejo que ainda posso selecionar dessa tabela de teste e que o ESTADO do nome do trabalho é "FAILED". Deixei todas as outras configurações como padrão. O que estou perdendo aqui? Por que está falhando e há uma maneira de corrigi-lo?

SQL do assistente de trabalho:

BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
            job_name => '"TEST1"',
            job_type => 'PLSQL_BLOCK',
            job_action => 'DROP TABLE MKTRD.TEST123;',
            number_of_arguments => 0,
            start_date => NULL,
            repeat_interval => NULL,
            end_date => NULL,
            enabled => FALSE,
            auto_drop => FALSE,
            comments => '');

    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"TEST1"', 
             attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
  
    DBMS_SCHEDULER.enable(
             name => '"TEST1"');
END;

Erro do registro de tarefas:

 "ORA-06550: line 1, column 757:
PLS-00103: Encountered the symbol "DROP" when expecting one of the following:

   ( begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge
   json_exists json_value json_query json_object json_array
The symbol "lock was inserted before "DROP" to continue.
ORA-06550: line 1, column 781:
PLS-00103: Encountered the symbol ";" when expecting one of the following:

   . , @ in <an identifier>
   <a double-quoted delimited-identifier> partition subpartition
ORA-06550: line 1, column 856:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   end not pragma final instantiable order overriding static
   member constructor map
"

Atualização: Se eu usar a sintaxe do bloco PLSQL de

BEGIN
  DROP TABLE TEST123;
END

Ainda recebo um erro de:

"ORA-06550: line 2, column 3:
PLS-00103: Encountered the symbol "DROP" when expecting one of the following:

   ( begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge
   json_exists json_value json_query json_object json_array
The symbol "lock was inserted before "DROP" to continue.
ORA-06550: line 2, column 27:
PLS-00103: Encountered the symbol ";" when expecting one of the following:

   . , @ in <an identifier>
   <a double-quoted delimited-identifier> partition subpartition
"
oracle jobs
  • 2 respostas
  • 554 Views
Martin Hope
ellie-lumen
Asked: 2020-08-21 10:24:25 +0800 CST

Agendando um procedimento com DBMS_SCHEDULER. PLS-00103: Encontrou o símbolo “NULL” ao esperar um dos seguintes: ;

  • 1

Não consigo agendar uma tarefa para ser executada.

Fiz um procedimento que grava arquivos CSV e funciona quando o executo.

Então tentei fazer um job para agendar:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'AUTOMATE_CSV_EXPORT',
    job_type => 'STORED_PROCEDURE',
    job_action => 'EXPORT_ALL_LYS_FOR_TABLEAU',
    number_of_arguments => 0,
    start_date => '20-AUG-20 2.05.00PM',
    repeat_interval => 'FREQ=WEEKLY; BYDAY=FRI; BYHOUR=23;',
    end_date => NULL,
    enabled => FALSE,
    auto_drop => FALSE,
    comments => 'hello i am a comment');

  DBMS_SCHEDULER.SET_ATTRIBUTE( 
    name => 'AUTOMATE_CSV_EXPORT', 
    attribute => 'logging_level', 
    value => DBMS_SCHEDULER.LOGGING_RUNS);
  
  DBMS_SCHEDULER.enable(
    name => 'AUTOMATE_CSV_EXPORT');
END;
/

Ele não foi executado no horário agendado, mas funcionou quando eu o executei assim:

insira a descrição da imagem aqui

Tentei editar a hora de início no assistente e me dá este erro:

insira a descrição da imagem aqui

Programei-o para ser executado a cada 2 minutos a partir de um tempo atrás, e ainda não foi executado. Está definitivamente habilitado. insira a descrição da imagem aqui


Solução de problemas

TLDR: agendador funciona!!! A única coisa que não funciona é eu colocar meu e-mail para receber notificações.

  1. Estou executando-o no mesmo esquema em que o criei? insira a descrição da imagem aqui

Mudei o trabalho para ser executado a cada 2 minutos. insira a descrição da imagem aqui ^^^ então está funcionando? Mas não vejo nenhum CSV na pasta de destino. Alterei a data de início para NULL como o código abaixo e funcionou! Eu tenho CSV!

  1. Testando um trabalho agendado: test:
create or replace procedure test_print
is
begin
    dbms_output.put_line('Current date and time is : ' || 
    to_char(sysdate,'DD-MON-YYYY HH:MI:SS AM'));
end;

set serveroutput on;

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'JOB_TEST',
    job_type => 'STORED_PROCEDURE',
    job_action => 'TEST_PRINT',
    number_of_arguments => 0,
    start_date => NULL,
    repeat_interval => 'FREQ=MINUTELY;INTERVAL=2;',
    end_date => NULL,
    enabled => FALSE,
    auto_drop => FALSE,
    comments => 'Testing job runs');
 
DBMS_SCHEDULER.enable(name => 'JOB_TEST');
END;
/

select job_name,output,status,owner 
from user_scheduler_job_run_details where  job_name='JOB_TEST';

resultados: insira a descrição da imagem aqui

O que ainda não funciona são as notificações por e-mail. Quando essa é a única coisa que edito, recebo este erro:

insira a descrição da imagem aqui

oracle jobs
  • 1 respostas
  • 724 Views
Martin Hope
Smenov
Asked: 2020-06-23 10:11:19 +0800 CST

Oracle Enterprise Manager 13c - consulta usada na métrica

  • 0

Recebi a tarefa - "envie-me a consulta usada nesta métrica?"

Está relacionado ao Job com status "FAILED".

Encontro este trabalho com falha, mas não consigo encontrar com qual consulta essa métrica detecta esse erro.

oracle jobs
  • 1 respostas
  • 127 Views
Martin Hope
Matthew Moisen
Asked: 2020-05-10 08:51:34 +0800 CST

ORA-01658: não foi possível criar extensão INITIAL para segmento no tablespace SYSAUX; JOB_SCHEDULER é o maior ocupante

  • 0

DBMS_SCHEDULER está ocupando todo o meu tablespace SYSAUX. Eu executei dbms_scheduler.purge_logque excluí 100 milhões de linhas de dba_scheduler_job_run_details, no entanto, v$sysaux_occupantso tamanho do arquivo de dados permanece inalterado. Existe alguma ação adicional que preciso tomar para limpar o espaço de tabela SYSAUX dos dados gerados pelo DBMS_SCHEDULER?


A tentativa de inserir uma única linha em uma tabela recém-criada em meu tablespace regular falha com:

ORA-01658: unable to create INITIAL extent for segment in tablespace SYSAUX

Posso ver que JOB_SCHEDULERestá ocupando 92,4% do tablespace SYSAUX consultando v$sysaux_occupants:

SELECT
    occupant_name,                    
    round (sum(space_usage_kbytes) * 100 / sum (sum(space_usage_kbytes)) over (), 2) Pct
FROM v$sysaux_occupants                  
GROUP BY occupant_name
ORDER BY 2 desc NULLS LAST
;

Eu originalmente tinha mais de 100 milhões de linhas em dba_scheduler_job_run_details.

Ontem, executei o comando purge (que levou 3,5 horas):

BEGIN
    dbms_scheduler.purge_log;
END;
/

Hoje, dba_scheduler_job_run_detailstem menos de 1 mil linhas.

No entanto, a consulta v$sysaux_occupantspermanece inalterada; hoje ainda diz que JOB_SCHEDULERestá ocupando 92,4%. Da mesma forma, consultar os tamanhos dos meus arquivos de dados mostra que o SYSAUX ainda está no máximo:

select d.TABLESPACE_NAME, d.FILE_NAME, d.BYTES/1024/1024 SIZE_MB, d.AUTOEXTENSIBLE, d.MAXBYTES/1024/1024 MAXSIZE_MB, d.INCREMENT_BY*(v.BLOCK_SIZE/1024)/1024 INCREMENT_BY_MB
from dba_data_files d,
    v$datafile v
where d.FILE_ID = v.FILE#
order by d.TABLESPACE_NAME, d.FILE_NAME;

Parece que na verdade não excluí o espaço consumido por DBMS_SCHEDULER.

Existe alguma etapa que estou faltando para limpar todo o espaço consumido pelo DBMS_SCHEDULER?

oracle jobs
  • 2 respostas
  • 2283 Views
Martin Hope
Andres Arango
Asked: 2020-04-17 12:19:25 +0800 CST

Backup com data para URL de armazenamento de BLOBs do Azure

  • 1

Estou tentando fazer backups em um armazenamento de blobs do azure que tenha a data em que o backup é feito, dessa forma o trabalho não falha quando o backup é gerado com o mesmo nome, estou concatenando convert(varchar(500),GetDate() ,112) + '.bak'), mas estou recebendo o próximo erro na execução do trabalho

Sintaxe incorreta perto de '+'. [SQLSTATE 42000] (Erro 102). A etapa falhou.

O roteiro:

Modelo de banco de dados de backup para url = 'https:containerurl/azurecontainer/model' + convert(varchar(500),GetDate(),112) + '.bak') go

sql-server jobs
  • 1 respostas
  • 52 Views
Martin Hope
Nicholas McQuillen
Asked: 2020-03-19 17:22:14 +0800 CST

Como limpar o cache do agendador de tarefas do SQL Agent

  • 1

Eu tenho que enviar tickets para alterar o agendamento de tarefas, então, em vez de percorrer a GUI, tento atualizar msdb..sysschedules via script tsql. Eu sempre vejo as alterações imediatamente através da GUI. A primeira vez que usei esse método, porém, levou um dia para que as alterações se propagassem. Mais recentemente tem sido mais longo. Suspeito que algo esteja armazenado em cache no agente/agendador, mas não consigo encontrar documentação sobre o que fazer para liberar isso da maneira menos intrusiva em um sistema de produção. Eu esperava que algo rudimentar como desabilitar/habilitar o trabalho acionasse uma atualização, mas não fez nada e prefiro emitir algo no T-SQL com meus tickets para garantir que as alterações sejam usadas. Eu solicitei uma reinicialização do agente quando nada estiver no horizonte para ver se isso funciona, mas o ideal seria algo menos intrusivo. Esta é uma instância de 2014.

Um script de exemplo:

USE msdb;
update s set
    s.freq_subday_interval=3
from msdb..sysjobs j
    left join msdb..sysjobschedules js on j.job_id = js.job_id
    left join msdb..sysschedules s on js.schedule_id = s.schedule_id
    where j.name ='SomeDb.RunMeEvery3MinsBusta';

----editar-----

Eu acho que tirando as respostas desde que testei abaixo e parece uma cascata imediatamente. Só queria torná-lo um pouco mais dinâmico.

declare @jobid nvarchar(50), @scheduleid int
select @jobid=j.job_id,@scheduleid=s.schedule_id from msdb..sysjobs j
    left join msdb..sysjobschedules js on j.job_id = js.job_id
    left join msdb..sysschedules s on js.schedule_id = s.schedule_id
    where j.name ='test';

EXEC msdb.dbo.sp_attach_schedule @job_id=@jobid,@schedule_id=@scheduleid
EXEC msdb.dbo.sp_update_schedule @schedule_id=@scheduleid, 
        @freq_subday_interval=1
GO
sql-server jobs
  • 2 respostas
  • 454 Views
Martin Hope
Jeevesh Juneja
Asked: 2020-02-23 03:22:30 +0800 CST

Trabalho agendado não funciona no Oracle SQL*PLUS

  • 0

Eu sou apenas um iniciante no Oracle e não consigo executar este trabalho: -

Quero excluir linhas antigas do meu banco de dados. E criou um trabalho da seguinte forma: -

CREATE OR REPLACE PROCEDURE delete_trips
AS
    BEGIN
        DBMS_OUTPUT.PUT_LINE('Here');
        DELETE FROM trip y where sysdate > y.arrival_date;
    END;
/
BEGIN
    DBMS_SCHEDULER.CREATE_JOB(
        job_name        => 'delete_old_rows',
        job_type        => 'PLSQL_BLOCK',
        job_action      => 'EXECUTE delete_trips;',
        start_date      => sysdate,
        repeat_interval => 'FREQ=SECONDLY',
        end_date        => add_months(sysdate,12),
        auto_drop       => FALSE,
        enabled         => TRUE
    );
END;
/

Depois de executar o código acima, posso ver que o trabalho 'delete_old_rows' está agendado em DBA_SCHEDULER_JOBS, mas nem as linhas são excluídas nem a saída é produzida no terminal. Tentei sair e fazer login novamente, mas nenhuma linha foi excluída e nenhuma saída foi produzida. E as linhas que satisfazem a condição de exclusão existem. Por favor ajude. O que estou perdendo ?

oracle jobs
  • 1 respostas
  • 187 Views
Martin Hope
Learning_DBAdmin
Asked: 2020-02-03 23:13:33 +0800 CST

comece tran em vez de usar db_name dentro de um trabalho SQL para executar o procedimento armazenado

  • 2

Eu estava definindo um trabalho SQL ontem para executar o procedimento armazenado em um horário específico da manhã. Era um requisito ad-hoc e urgente e, portanto, desenvolvi esse procedimento rapidamente e o programei para ser executado todas as manhãs.

Eu deveria estar apenas chamando o procedimento na etapa do trabalho e definir o arquivo de saída na guia avançada. Eu tive que usar o comando abaixo dentro da etapa do trabalho:

use db_name
go
exec sp_name
go

Em vez de acima, escrevi como abaixo por engano:

begin tran
go
exec sp_name
go

Este trabalho sql não falhou, mas não fez o trabalho pretendido.

O arquivo de saída contém abaixo:

Job 'Job_Name': Etapa 1, 'Step_name': começou a executar 2020-02-03 06:10:00

O que parece estar correto, no entanto, eu queria saber que acima poderia manter uma transação aberta e poderia causar outros problemas.

Eu executei sp_whoisactive(graças ao Sr. Adam Machanic) e não vejo nenhuma sessão em execução a partir desse momento, assim como não há bloqueio em nenhuma tabela, pois o procedimento subjacente estava tendo uma dica de tabela tablock ao inserir dados na tabela.

Existe alguma maneira de descobrir o que realmente aconteceu com esse trabalho sql e por que ele não fez o trabalho pretendido, bem como se há alguma maneira de descobrir se ele ainda está sendo executado em segundo plano e pode ser confirmado ou revertido. Executei sp_who2 também para ver se existe algum SPID associado a este job, não encontrei nada.

Executou a consulta abaixo para verificar o status de todos os trabalhos e mostra que meu trabalho foi bem-sucedido:

USE MSDB
SELECT name AS [Job Name]
         ,CONVERT(VARCHAR,MAX(DATEADD(S,(run_time/10000)*60*60 /* hours */  
          +((run_time - (run_time/10000) * 10000)/100) * 60 /* mins */  
          + (run_time - (run_time/100) * 100)  /* secs */
           ,CONVERT(DATETIME,RTRIM(run_date),113))),100) AS [Time Run]
         ,CASE WHEN enabled=1 THEN 'Enabled'  
               ELSE 'Disabled'  
          END [Job Status]
         ,CASE WHEN SJH.run_status=0 THEN 'Failed'
                     WHEN SJH.run_status=1 THEN 'Succeeded'
                     WHEN SJH.run_status=2 THEN 'Retry'
                     WHEN SJH.run_status=3 THEN 'Cancelled'
               ELSE 'Unknown'  
          END [Job Outcome]
FROM   sysjobhistory SJH  
JOIN   sysjobs SJ  
ON     SJH.job_id=sj.job_id  
WHERE  step_id=0  
AND    DATEADD(S,  
  (run_time/10000)*60*60 /* hours */  
  +((run_time - (run_time/10000) * 10000)/100) * 60 /* mins */  
  + (run_time - (run_time/100) * 100)  /* secs */,  
  CONVERT(DATETIME,RTRIM(run_date),113)) >= DATEADD(d,-20,GetDate())  
  group by name, CASE WHEN enabled=1 THEN 'Enabled'  
               ELSE 'Disabled'  
          END 
         ,CASE WHEN SJH.run_status=0 THEN 'Failed'
                     WHEN SJH.run_status=1 THEN 'Succeeded'
                     WHEN SJH.run_status=2 THEN 'Retry'
                     WHEN SJH.run_status=3 THEN 'Cancelled'
               ELSE 'Unknown'  
          END 

Qualquer ajuda ou entrada é muito apreciada.

Versão: Microsoft SQL Server 2014 (SP3-GDR) (KB4505218) - 12.0.6108.1 (X64) 29 de maio de 2019 20:05:27 Copyright (c) Microsoft Corporation Enterprise Edition: Licenciamento baseado em núcleo (64 bits) no Windows NT 6.3 (Build 9600: ) (Hipervisor)

sql-server jobs
  • 1 respostas
  • 209 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve