2016-10-25 5 views
0

Ich verwende den folgenden Befehl, um eine einzelne Zeilenausgabe zu erhalten, und meine Anforderung besteht darin, eine erste Spalte als DB NAME gefolgt von den ausgewählten Spalten darunter zu haben. Wie erreiche ich das?

select SESSION_KEY, INPUT_TYPE, STATUS, 
    to_char(START_TIME,'mm/dd/yy hh24:mi') start_time, 
    to_char(END_TIME,'mm/dd/yy hh24:mi') end_time, 
    TIME_TAKEN_DISPLAY 
from V$RMAN_BACKUP_JOB_DETAILS 
where INPUT_TYPE like '%DB%' 
and start_time = (select max(start_time) from V$RMAN_BACKUP_JOB_DETAILS); 

Antwort

1

Sie können den Namen der Datenbank erhalten, indem auf v$database Beitritt, zB:

select d.name, rbjd.session_key, rbjd.input_type, status, 
    to_char(rbjd.start_time,'mm/dd/yy hh24:mi') start_time, 
    to_char(rbjd.end_time,'mm/dd/yy hh24:mi') end_time, 
    rbjd.time_taken_display 
from v$database d 
cross join v$rman_backup_job_details rbjd 
where rbjd.input_type like '%DB%' 
and rbjd.start_time = (select max(start_time) from v$rman_backup_job_details); 

Oder mit einer Unterabfrage, wenn Sie die Cross-Join nicht mögen, aber ich bin kein großer Fan von Unterabfragen in der Auswahlliste. Und es gibt andere Möglichkeiten, um die letzte Zeile zu erhalten.

0

Dies kann auch verwendet werden, wie immer V $ RMAN_BACKUP_JOB_DETAILS Ausgabe wird einreihig sein (gemäß der Abfrage oben gegeben).

select name,SESSION_KEY, INPUT_TYPE, STATUS, 
    to_char(START_TIME,'mm/dd/yy hh24:mi') start_time, 
    to_char(END_TIME,'mm/dd/yy hh24:mi') end_time, 
    TIME_TAKEN_DISPLAY 
from V$RMAN_BACKUP_JOB_DETAILS,v$database 
where INPUT_TYPE like '%DB%' 
and start_time = (select max(start_time) from V$RMAN_BACKUP_JOB_DETAILS) 
Verwandte Themen