+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
본인 혼자 공부하는 거니.... 태클은 말아주세요~~~ㅠ.ㅠ
*** Oracle Study Local VM Info
- ver : Oracle 11.2.0.1
- IP : 10.1.1.100
- Port : 1521
- sys / test
- system / manager
oracle]$ sqlplus '/as sysdba'
SQL> startup
SQL> shutdown immediate
oracle]$ lsnrctl start
oracle]$ lsnrctl stop
*** sys / system 계정 접속 불가시 확인 방법
oracle]$ sqlplus /nolog
SQL> conn sys/vmadmin as sysdba;
*** SQL 터미널 세팅
set pages 0
set long 40000
set line 500
*** 현재의 커널 매개변수
# ipcs -l
*** Oracle TableSpace 정보확인
Orange > 해당서버 접속 > TableSpace 탭 부붙에서 상세 정보 확인 가능
*** Ora-01017 에러시 확인 및 조치
** Lisner 정보와 "tnsname.ora" 파일과 비교 확인
$ lsnrctl status 로 확인되는 lisner 파일 정보 <-> Client 상의 '$ORACLE_HOME/network/admin/tnsname.ora' 파일의 정보
** Lisner Logfile Size (4기가 이상인 경우 발생가능)
$ lsnrctl status 명령어로 로그파일 경로 확인
** 오라클 환경에서 대소문자 구분을 없애주어야 로그인이 쉬워짐(11g 부터 대소문자 구분이 되고 있음)
SQL> show parameter sec_case; ## 해당 명령어로 확인시 'TRUE' 값이면 대소문자 구분
SQL> alter system set sec_case_sensitive_logon=false; ## 해당 명령어로 변경
** Orange V4 이하에서 불가
-- 오라클 11g는 비밀번호 대소문자를 구분하게 설정되어 있으나 오렌지 프로그램에서는 비밀번호를 모두 대문자로 변환한 뒤 로그인 시도한다.
--======================================================================================
--#.
--======================================================================================
--======================================================================================
--#. 현재 접속한 DB 호스트 정보와 Client 정보 확인
--======================================================================================
SELECT
UTL_INADDR.GET_HOST_ADDRESS AS DB_HOST_IP,
UTL_INADDR.GET_HOST_NAME AS DB_NAME,
sys_context('USERENV', 'IP_ADDRESS') AS CLIENT_IP,
sys_context('USERENV', 'SESSION_USER') AS DB_USER,
sys_context('USERENV', 'TERMINAL') AS TERMINAL,
sys_context('USERENV', 'HOST') AS CLIENT_PCNAME,
sys_context('USERENV', 'OS_USER') AS CLIENT_USERNAME,
sys_context('USERENV', 'isDBA') ADMIN_MODE
FROM DUAL;
--======================================================================================
--#. 현재 열린 SESSION 정보확인
--======================================================================================
SELECT * FROM v$resource_limit WHERE resource_name in ('processes', 'sessions', 'transactions');
--======================================================================================
--#. 현재 접속한 사용자의 자신 권한 확인
--======================================================================================
select * from session_privs;
--======================================================================================
--#. Oracle Archive Mode Check
--======================================================================================
SELECT ARCHIVER FROM v$instance;
--======================================================================================
--#. Oracle 사용자 관련
--======================================================================================
--## ORACLE 전체 사용자 조회
SELECT USERNAME, PASSWORD FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM ALL_USERS
WHERE USERNAME = 'eaimgr'
;
SELECT * FROM DBA_USERS WHERE USERNAME = 'cello';
--## ORACLE 사용자 비밀번호 변경
ALTER USER <&USER> IDENTIFIED BY <&PASSWORD>;
ALTER USER SYSTEM IDENTIFIED BY MANAGER;
ALTER USER SYSTEM IDENTIFIED BY vmadmin;
--## ORACLE 사용자 비밀번호 변경 후 확인
CONN <&USER>/<&PASSWORD>
--## ORACLE 사용자 Blocked 확인
SELECT username,account_status,lock_date FROM dba_users;
--## ORACLE 사용자 Blocked 상태 해제
ALTER USER <&USER> ACCOUNT UNLOCK;
--## ORACLE 사용자 Blocked 상태로 전환
ALTER USER <&USER> ACCOUNT LOCK;
--## ORACLE User 생성 (스키마 생성)
CREATE USER <&USER>
IDENTIFIED by <&PASSWORD>
default TABLESAPCE <&TBS_Name>;
CREATE USER EAIMGR IDENTIFIED BY EAIMGR;
CREATE USER cello IDENTIFIED BY cello;
--## 사용자 생성 후 최소 아래의 권한이 필요.
GRANT CREATE SESSION TO <&USER>;
GRANT CREATE table TO <&USER>;
GRANT UNLIMITED TABLESPACE TO <&USER>;
--## 만약 추가 요청이 오는 경우 아래와 같이 필요한 권한을 추가한다.
GRANT CREATE SEQUENCE TO <&USER>;
GRANT CREATE PROCEDURE TO <&USER>;
GRANT CREATE VIEW TO <&USER>;
--======================================================================================
--#. Oracle Table 관련
--======================================================================================
--## USER 의 테이블 정보 확인 (파티션 타입)
SELECT
A.SEGMENT_NAME,
SUM(A.BYTES)/1024 AS SIZE_KB,
SUM(A.BYTES)/1024/1024 AS SIZE_MB,
SUM(A.BYTES)/1024/1024/1024 AS SIZE_GB
FROM DBA_SEGMENTS A, DBA_TABLES B
WHERE A.SEGMENT_NAME = B.TABLE_NAME
AND A.SEGMENT_TYPE IN ('TABLE','TABLE PARTITION')
AND A.OWNER = '&USER'
GROUP BY A.SEGMENT_NAME
;
*** Oracle Partition Table 관련
** 전체 파티션 테이블 조회
SELECT * FROM ALL_TAB_PARTITIONS;
SELECT * FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME = 'TBL_TFP_PLAN'
;
SELECT * FROM CELLOPL.TBL_TPP_PLAN
PARTITION (PFNL20190701P001A)
;
** 전체 파티션 테이블의 키 칼럼 조회
SELECT * FROM ALL_PART_KEY_COLUMNS
--## Oracle Table 용량확인
select owner,segment_name,segment_type,sum(bytes)/1024/1024 as MB
from dba_segments
where owner='사용자'
and segment_name='테이블명'
GROUP BY owner,segment_name,segment_type;
select
table_name,
num_rows,
num_rows * avg_row_len,
round((num_rows * avg_row_len/1024),2) "SIZE(Kb)",
round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)",
round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
last_analyzed
from user_tables
where table_name like 'TS%'
;
--======================================================================================
--#. Oracle TableSpace 관련
--======================================================================================
--## TableSpace 전체 조회
SELECT * FROM DBA_TABLESPACES;
--## TableSpace 전체에서 특정 테이블스페이스명 조회
SELECT * FROM DBA_TABLESPACES
WHERE TABLESPACE_NAME = '&TBS_Name';
--## Table_Name and TableSpace_Name 을 비교해서 볼때
SELECT * FROM DBA_TABLES
WHERE TABLESPACE_NAME='&TBS_Name';
--## TableSpace 별 용량조회
SELECT SUBSTR (a.tablespace_name, 1, 30) tablespace,
ROUND (SUM (a.total1) / 1024 / 1024, 1) "Total_MB",
ROUND (SUM (a.total1) / 1024 / 1024, 1) - ROUND (SUM (a.sum1) / 1024 / 1024, 1) "Used_MB",
ROUND (SUM (a.sum1) / 1024 / 1024, 1) "Free_MB",
ROUND (
(ROUND (SUM (a.total1) / 1024 / 1024, 1) - ROUND (SUM (a.sum1) / 1024 / 1024, 1))
/ ROUND (SUM (a.total1) / 1024 / 1024, 1) * 100, 2
) "Used%"
FROM (
SELECT tablespace_name,
0 total1,
SUM (bytes) sum1,
MAX (bytes) MAXB,
COUNT (bytes) cnt
FROM dba_free_space
GROUP BY tablespace_name
UNION
SELECT tablespace_name,
SUM (bytes) total1,
0,
0,
0
FROM dba_data_files
GROUP BY tablespace_name) a
GROUP BY a.tablespace_name
ORDER BY tablespace;
--## TABLESPACE_NAME 별로 용량조회
SELECT SUBSTR(A.TABLESPACE_NAME,1,30) TABLESPACE,
ROUND(SUM(A.TOTAL1)/1024/1024,1) "TOTALMB",
ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1) "USEDMB",
ROUND(SUM(A.SUM1)/1024/1024,1) "FREEMB",
ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))
/ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
FROM
(SELECT TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,
COUNT(BYTES) CNT
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
UNION
SELECT TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A
GROUP BY A.TABLESPACE_NAME
ORDER BY TABLESPACE;
--## 전체 합처리
SELECT ROUND(SUM(A.TOTAL1)/1024/1024/1024,1) "TOTALGB",
ROUND(SUM(A.TOTAL1)/1024/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024/1024,1) "USEDGB",
ROUND(SUM(A.SUM1)/1024/1024/1024,1) "FREEGB",
ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))
/ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
FROM
(SELECT TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,
COUNT(BYTES) CNT
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
UNION
SELECT TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A
--### 80% 이상 테이블 스페이스 정보 출력하기
COLUMN Tablespace format a25 heading 'Tablespace Name'
COLUMN autoextensible format a11 heading 'AutoExtend'
COLUMN files_in_tablespace format 999 heading 'Files'
COLUMN total_tablespace_space format 99999999 heading 'TotalSpace'
COLUMN total_used_space format 99999999 heading 'UsedSpace'
COLUMN total_tablespace_free_space format 99999999 heading 'FreeSpace'
COLUMN total_used_pct format 9999 heading '%Used'
COLUMN total_free_pct format 9999 heading '%Free'
COLUMN max_size_of_tablespace format 99999999 heading 'ExtendUpto'
COLUMN total_auto_used_pct format 999.99 heading 'Max%Used'
COLUMN total_auto_free_pct format 999.99 heading 'Max%Free'
WITH tbs_auto AS
(SELECT DISTINCT tablespace_name, autoextensible
FROM dba_data_files
WHERE autoextensible = 'YES'),
files AS
(SELECT tablespace_name, COUNT (*) tbs_files,
SUM (BYTES/1024/1024) total_tbs_bytes
FROM dba_data_files
GROUP BY tablespace_name),
fragments AS
(SELECT tablespace_name, COUNT (*) tbs_fragments,
SUM (BYTES)/1024/1024 total_tbs_free_bytes,
MAX (BYTES)/1024/1024 max_free_chunk_bytes
FROM dba_free_space
GROUP BY tablespace_name),
AUTOEXTEND AS
(SELECT tablespace_name, SUM (size_to_grow) total_growth_tbs
FROM (SELECT tablespace_name, SUM (maxbytes)/1024/1024 size_to_grow
FROM dba_data_files
WHERE autoextensible = 'YES'
GROUP BY tablespace_name
UNION
SELECT tablespace_name, SUM (BYTES)/1024/1024 size_to_grow
FROM dba_data_files
WHERE autoextensible = 'NO'
GROUP BY tablespace_name)
GROUP BY tablespace_name)
SELECT c.instance_name,a.tablespace_name Tablespace,
CASE tbs_auto.autoextensible
WHEN 'YES'
THEN 'YES'
ELSE 'NO'
END AS autoextensible,
files.tbs_files files_in_tablespace,
files.total_tbs_bytes total_tablespace_space,
(files.total_tbs_bytes - fragments.total_tbs_free_bytes
) total_used_space,
fragments.total_tbs_free_bytes total_tablespace_free_space,
round(( ( (files.total_tbs_bytes - fragments.total_tbs_free_bytes)
/ files.total_tbs_bytes
)
* 100
)) total_used_pct,
round(((fragments.total_tbs_free_bytes / files.total_tbs_bytes) * 100
)) total_free_pct
FROM dba_tablespaces a,v$instance c , files, fragments, AUTOEXTEND, tbs_auto
WHERE a.tablespace_name = files.tablespace_name
AND a.tablespace_name = fragments.tablespace_name
AND a.tablespace_name = AUTOEXTEND.tablespace_name
AND a.tablespace_name = tbs_auto.tablespace_name(+)
and (((files.total_tbs_bytes - fragments.total_tbs_free_bytes)/ files.total_tbs_bytes))* 100 > 80
order by total_free_pct;
--## Oracle TableSpace 생성 (신규 생성시)
CREATE TABLESPACE <&TABLESPACE_NAME>
DATAFILE '<&데이타파일명>' SIZE 10G AUTOEXTEND OFF
LOGGING
DEFAULT STORAGE (
MAXEXTENTS UNLIMITED
)
EXTENT MANAGEMENT DICTIONARY
BLOCKSIZE 8K
FLASHBACK ON
--## Oracle TableSpace 기존 테이블스페이스에 추가
SQL> ALTER TABLESPACE &TBS_Name ADD DATAFILE '&데이타파일명' SIZE XXXm;
--<< ex >>
-- ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/sysdata/undotbs02.dbf' SIZE 30G;
--## Oracle TableSpace 기존 테이블스페이스에서 데이터 파일 삭제
SQL> ALTER TABLESPACE &TBS_Name DROP DATAFILE '&데이타파일명';
--<< ex >>
-- ALTER TABLESPACE UNDOTBS1 DROP DATAFILE '/sysdata/undotbs02.dbf';
--## Oracle 테이블 스페이스 및 데이타 파일별 용량확인
SELECT A.TABLESPACE_NAME "테이블스페이스명",
A.FILE_NAME "파일경로",
A.BYTES/1024/1024 "총크기(MB)",
(A.BYTES - B.FREE)/1024/1024 "사용공간(MB)",
B.FREE/1024/1024 "여유 공간(MB)",
TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' "여유공간",
A.ONLINE_STATUS
FROM
(
SELECT FILE_ID,
TABLESPACE_NAME,
FILE_NAME,
SUBSTR(FILE_NAME,1,200) FILE_NM,
SUM(BYTES) BYTES,
ONLINE_STATUS
FROM DBA_DATA_FILES
GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200),ONLINE_STATUS
) A,
(
SELECT TABLESPACE_NAME,
FILE_ID,
SUM(NVL(BYTES,0)) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME,FILE_ID
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
AND A.FILE_ID = B.FILE_ID;
--## Oracle 테이블 스페이스별 용량확인
select substr(a.tablespace_name,1,30) tablespace,
round(sum(a.total1)/1024/1024,1) "TotalMB",
round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "UsedMB",
round(sum(a.sum1)/1024/1024,1) "FreeMB",
round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "Used%"
from
(select tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
from dba_free_space
group by tablespace_name
union
select tablespace_name,sum(bytes) total1,0,0,0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name
order by tablespace;
--======================================================================================
--#. Oracle DB Link
--======================================================================================
--## Oracle DB Link 정보확인
-- Orange > 해당서버 접속 > DB Link 탭 부붙에서 상세 정보 확인 가능
SELECT * FROM DBA_DB_LINKS;
SELECT * FROM DBA_DB_LINKS WHERE DB_LINK = 'DL_CELLOTOVMTRUST';
--## Oracle DB-Link 사용 가능 여부 확인
-- SQL> SELECT COUNT(*) FROM TABLE_NAME@DB_LINK;
SELECT COUNT(*) FROM tab @DL_VMTRUST_ERP;
--## Oracle DB Link 생성
--/* SQL>
[[ 공용방식 ]]
CREATE PUBLIC DATABASE LINK DL_VMAMTOVMPROD
CONNECT TO apps
IDENTIFIED BY apps
USING 'VMPROD';
[[ 일반방식 ]]
CREATE DATABASE LINK <LINK_NAME>
CONNECT TO <연결하고자 하는 user> IDENTIFIED BY <연결하고자 하는 user password>
USING '<TNS정의명>';
[[ 공용방식 + NETWORK Type ]]
CREATE PUBLIC DATABASE LINK <LINK_NAME>
CONNECT TO <연결하고자 하는 user>
IDENTIFIED BY <연결하고자 하는 user password>
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)'
;
*/--
--## Oracle DB Link 확인
-- SQL> SELECT * FROM <테이블이름>@<NEW_TEST_LINK>
SELECT * FROM All_USERS@DL_VMSCMTETOVMES
--## Oracle DB Link 확인 (DB id 값과 이름 출력)
-- SQL> select DBID, NAME from v$database@<NEW_TEST_LINK>
select DBID, NAME from v$database@DL_CELLOTOMES;
--## Oracle DB Link 삭제
-- SQL> DROP DATABASE LINK <DB LINK NAME>
DROP DATABASE LINK DL_VMAMTOVMPROD;
--======================================================================================
--#. SYSAUX 테이블 스페이스 관리
--======================================================================================
*** 어떤 OWNER 가 얼마만큼 크기를 사용하는지 체크
SELECT occupant_name, space_usage_kbytes/1024 "Size_MB"
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes;
*** SYSAUX tablespace에 어떤 segment가 가장 많은 공간을 차지하는지
SELECT owner, segment_name, segment_type, bytes/1024/1024 "Size_MB"
FROM dba_segments
WHERE tablespace_name = 'SYSAUX'
ORDER BY bytes DESC;
*** 통계정보를 보관하는 주기를 확인
SELECT dbms_stats.get_stats_history_retention from dual;
** 통계정보 보관주기 변경 ('( )'안에 원하는 날짜만큼 숫자를 입력)
SELECT dbms_stats.get_stats_history_retention(10); --10일로 보관주기 변경
--======================================================================================
--#. 트리거 조회하기
--======================================================================================
SELECT * FROM ALL_TRIGGERS;
-======================================================================================
--#. Oracle Lock
--======================================================================================
***
Oracle Lock 조회 (Kill 하기 위해 KILL_TASK 를 확인)
SELECT A.SID
, A.SERIAL#
, object_name
, A.SID || ', ' || A.SERIAL# AS KILL_TASK
FROM V$SESSION A
INNER JOIN V$LOCK B
ON A.SID = B.SID
INNER JOIN DBA_OBJECTS C
ON B.ID1 = C.OBJECT_ID
WHERE B.TYPE = 'TM'
;
*** Oracle Lock Session KILL
-- SQL> ALTER SYSTEM KILL SESSION '<KILL_TASK 번호>'
ALTER SYSTEM KILL SESSION '388, 223';
-======================================================================================
--#. Oracle DataPump
--====================================================================================== *** 덤프 작업시 참조할 것
** 덤프작업시 모니터링
SELECT
A.OPNAME, /* Job 이름과 같음 */
A.TARGET_DESC, /* 작업의 종류 */
A.SOFAR, /* 현재 수행한 용량 // 단위:Mb */
A.TOTALWORK, /* 총 수행하여야 할 용량 // 단위:Mb */
(SOFAR/TOTALWORK*100) PER
FROM
v$SESSION_LONGOPS A
;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle 'Grant' 권한 조회
SELECT * FROM USER_TAB_PRIVS_MADE; => 사용자가 부여한 권한
SELECT * FROM USER_TAB_PRIVS_RECD; => 사용자에게 부여된 권한
select * from dba_sys_privs where grantee='CELLOPL'
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle 통계정보 갱신
-- 해당 스키마에 해당하는 테이블과 테이블 스페이스 조회
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE OWNER = '스키마명';
-- 해당 스키마에 해당하는 테이블의 통계정보 조회
SELECT TABLE_NAME, NUM_ROWS, CHAIN_CNT, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, AVG_ROW_LEN FROM DBA_TABLES WHERE OWNER = '스키마명';
-- 해당 스키마에 해당하는 인덱스의 통계정보 조회
SELECT TABLE_NAME, INDEX_NAME, STATUS, NUM_ROWS, LEAF_BLOCKS, BLEVEL FROM DBA_INDEXES WHERE OWNER = '스키마명';
-- 테이블의 통계정보 갱신
EXEC DBMS_STATS.GATHER_TABLE_STATS('스키마명', '테이블명');
-- 스키마안의 모든 세그먼트에 대한 통계정보 갱신
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('스키마명');
-- DBMS_STATS 패키지로 갱신되지 않는 테이블 통계 정보 갱신(쿼리 생성)
SELECT 'ANALYZE TABLE 스키마명.' || TABLE_NAME || ' COMPUTE STATISTICS;' FROM DBA_TABLES WHERE OWNER = '스키마명';
*** Oracle Archive log 사용량 확인(GV$ARCHIVED_LOG)
+ DB Version : Oracle 11.2.0.2
+ OS Version : AIX 6.1
+ Oracle Archive log 사용량 및 갯수 확인
- DATE Format : YY/MM/DD (DY)
- 시간 단위 분석 : (TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24')
- 4Node RAC 기준으로 Script 작성
- Archive log Size 확인(GB) : ROUND(SUM(DISTINCT BLOCKS*BLOCK_SIZE)/1024/1024/1024,2)
- 최근 10일 전부터 분석 : NEXT_TIME >= TRUNC(SYSDATE) -10
SELECT
TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24') "NEXT_TIME"
, COUNT(DISTINCT NAME) "TOTAL_ARC_COUNT"
, ROUND(SUM(DISTINCT BLOCKS*BLOCK_SIZE)/1024/1024/1024,2) "TOTAL_SIZE_GB"
, SUM(CASE WHEN INST_ID = 1 AND THREAD# = 1 THEN 1 ELSE 0 END) "RAC1"
, SUM(CASE WHEN INST_ID = 2 AND THREAD# = 2 THEN 1 ELSE 0 END) "RAC2"
, SUM(CASE WHEN INST_ID = 3 AND THREAD# = 3 THEN 1 ELSE 0 END) "RAC3"
, SUM(CASE WHEN INST_ID = 4 AND THREAD# = 4 THEN 1 ELSE 0 END) "RAC4"
FROM GV$ARCHIVED_LOG
WHERE NEXT_TIME >= TRUNC(SYSDATE) -10
GROUP BY TO_CHAR(NEXT_TIME,'YY/MM/DD(DY) HH24')
ORDER BY 1;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Oracle Backup 상태 확인
select * from v$backup;
*** Oracle Backup 상태 수정(END backup)
alter database end backup;
*** Oracle Log 관련 초기화
alter database open resetlogs;
*** Oracle 동작상태 확인
SELECT status FROM v$instance;
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
RECOVER DATABASE USING BACKUP CONTROLFILE;