startup time을 안다는 건
instance의 startup time
과database의 open time
의 차이를 이해하는 것이 중요합니다.
v$instance
뷰에서 검색하는 startup_time
은 startup
이 시작된 시간입니다.
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> startup nomount;
SQL> select status, startup_time from v$instance;
STATUS STARTUP_TIME
------------ --------------------
STARTED 2021-09-15 23:39:30
STARTED
는 nomount
를 의미합니다.
control file을 mount
해봅시다.
SQL> alter database mount;
Database altered.
SQL> select status, startup_time from v$instance;
STATUS STARTUP_TIME
------------ --------------------
MOUNTED 2021-09-15 23:39:30
status는 mount로 바뀌었지만 startup_time은 nomount와 같은 것
을 확인할 수 있습니다.
DB가 open
된 시간을 알고 싶을 때는 dba_hist_database_instance
뷰를 이용합니다.
dba_hist_database_instance
는 DB open time
의 히스토리를 보여줍니다.
SQL> select startup_time open_time from dba_hist_database_instance order by 1 desc;
OPEN_TIME
--------------------
2021-09-15 23:48:23
2021-08-05 21:30:22
2020-12-16 01:54:17
2020-12-16 01:26:29
2020-08-10 01:55:13
2020-08-10 01:15:39
2020-07-22 03:56:15
10분 기다렸다가 DB open
후 dba_hist_database_instance
뷰의 startup_time
컬럼 최대값(가장 최근 시간
)를 조회해봅시다.
SQL> alter database open;
Database altered.
SQL> column open_time format a20;
SQL> select max(startup_time) open_time from dba_hist_database_instance;
OPEN_TIME
--------------------
2021-09-15 23:48:23
참고 : https://logic.edchen.org/how-oracle-check-startup-time/