As variáveis de substituição são opcionalmente encerradas por um ponto para separá-los de quaisquer caracteres que se seguem. Se você quiser usar um na string também, você deve adicionar essa terminação explicitamente:
spool E:\abc\Test\File1_&MYPeriod..csv
Para o problema de duas linhas extras, adicione
set verify off
; no momento está definido como on
(por padrão) para que ele mostre o valor antigo e o novo de qualquer variável de substituição que você usar. A única maneira que conheço de obter a data no nome do arquivo é colocá-la em uma variável de substituição primeiro:
set termout off
column x_run_dt new_value y_run_dt
select to_char(sysdate, 'YYYYMMDDHH24MISS') as x_run_dt from dual;
set termout on
spool E:\abc\Test\File1_&MYPeriod._&y_run_dt..csv
O
new_value
cláusula permite criar uma variável de substituição, &y_run_dt
neste caso, com um valor de uma coluna consultada, x_run_dt
. Envolvendo o select que gera esse valor entre set termout
cláusulas oculta-o da saída normal, quando executado como um script.