BLOG ARTICLE Databases/Oracle | 1 ARTICLE FOUND

  1. 2021.01.09 Oracle Study Start...

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

본인 혼자 공부하는 거니.... 태클은 말아주세요~~~ㅠ.ㅠ


*** 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;

AND