Eu preciso exportar dados para um arquivo csv em um trabalho do agendador. Aqui estão os comandos:
SPOOL "\\AServerName\Output\RMS_DataFileSizes.csv" REPLACE;
SELECT /*csv*/
TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "CurrentDTM",
df.tablespace_name AS "Tablespace Name",
SUBSTR(df.file_name,INSTR(df.file_name,'RMS_'),20) AS "File Name",
Round(df.bytes/1073741824,2) AS "Size (GB)",
decode(e.used_bytes,NULL,0,Round(e.used_bytes/1073741824,2)) AS "Used (GB)",
decode(f.free_bytes,NULL,0,Round(f.free_bytes/1073741824,2)) AS "Free (GB)",
decode(e.used_bytes,NULL,0,Round((e.used_bytes/df.bytes)*100,1)) AS "% Used"
FROM DBA_DATA_FILES DF,
(SELECT file_id,sum(bytes) used_bytes FROM dba_extents GROUP by file_id) E,
(SELECT sum(bytes) free_bytes,file_id FROM dba_free_space GROUP BY file_id) f
WHERE e.file_id (+) = df.file_id
AND df.file_id = f.file_id (+)
AND df.tablespace_name = 'RMS_DATA'
ORDER BY df.tablespace_name,df.file_name;
SPOOL OFF;
Quando faço do "tipo de trabalho" um "Bloco PL/SQL", ele falha e recebo o seguinte erro:
"ORA-06550: line 1, column 764:
PLS-00103: Encountered the symbol "\\AServerName\Output\RMS_DataFileSizes.csv" when expecting one of the following:
:= . ( @ % ;
ORA-06550: line 17, column 7:
PLS-00103: Encountered the symbol "OFF" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "OFF" to continue.
O que estou fazendo errado?
Que tal uma abordagem um pouco diferente?
Coloque esse código em um arquivo .SQL, vamos chamá-lo
p.sql
:Estou no MS Windows, então - crie um arquivo .BAT; vamos chamá-lo
p.bat
:Por fim, use o programa de agendamento do seu sistema operacional (Gerenciador de Tarefas no meu Windows) e agende
p.bat
para executar quantas vezes quiser, por exemplop.bat
)Deveria trabalhar; pelo menos, funciona para mim.
Não é assim que você faz isso. Um
PLSQL_BLOCK
tipo de trabalho não aceita esses comandos. Use umSQL_SCRIPT
tipo de trabalho. Exemplo:Tenha em mente,
SET MARKUP CSV ON
é um recurso 12.2. Não funcionará com 12.1./*csv*/
é um recurso do SQL Developer, que também não funcionará.