1. 대량 데이터 변경 세션에 대하여 KILL 수행 상황 (Oracle)

 - 오라클 DB에서 Insert/Update/Delete 작업을 대량으로 수행하던 도중에 세션을 정리해야하는 상황에서 commit을 할수 없어 session kill을 수행했을 때 해당 오브젝트에 대하여 Rollback이 발생되면서 wait이 걸려 세션이 증가하는 상황이 발생할때가 존재 한다. 이때 해당 세션의 Rollback 상태를 모니터링 해야할때가 존재한다.

- 큰 트랜잭션을 kill 했을 경우 복구하는 과정에서 wait for a undo record 이벤트와 PX Deq: Txn Recovery Start 이벤트가 동시에 대량으로 발생 (FAST_START_PARALLEL_ROLLBACK 파라미터가 TRUE일 경우)

- PARALLEL_ROLLBACK이 과도할 경우에 UNDO SEGMENT 부족현상이 발생될 수 있음

- 조회: select state, count(*) from V$FAST_START_SERVERS group by state;

 

1) INSERT/UPDATE/DELETE 하던 세션이 너무 오래걸려서 SESSION KILL 수행

alter system kill session 'sid,seiral#' immediate;

2) SESSION KILL 수행후, 트렌젝션 모니터링시에 ROLLBACK이 오래걸려서 아래와 같이 SPID로 KILL -9 수행

select     'kill -9 ' || spid
from      v$process
where addr in (select paddr from v$session where status='KILLED' and type != 'BACKGROUND')


2. ROLLBACK 모니터링 방법

 

1) V$SESSION 으로 wait for a undo record 이벤트 모니터링 가능

2) V$FAST_START_TRANSACTIONS 뷰로 예측 (.GV$FAST_START_TRANSACTIONS)

SELECT
         usn
       , state
       , undoblockstotal "Total"
       , undoblocksdone "Done"
       , undoblockstotal-undoblocksdone "ToDo"
       , DECODE(cputime,0,'unknown',SYSDATE+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Finish at" 
FROM     v$fast_start_transactions;


[진행중]
       USN STATE                 Total       Done       ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERING          2269489      31317    2238172 2016/06/21 00:06:03


[완료]
       USN STATE                 Total       Done       ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERED             32874      32874          0 2016/06/21 00:24:21

3) x$ktuxe 뷰로 세션단위 진행사항 예측

SELECT
         ktuxeusn
       , to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') "Time"
       , ktuxesiz, ktuxesta
FROM     x$ktuxe
WHERE    ktuxecfl = 'DEAD';
  KTUXEUSN Time                  KTUXESIZ KTUXESTA
---------- ------------------- ---------- --------------
 
      1109 2016/06/20 23:07:22    1800231 ACTIVE
 

# How to monitor ROLLBACK after performing bulk data change session KILL

# Cómo monitorear ROLLBACK después de realizar KILL de sesión de cambio de datos masivos

# 大量のデータを変更セッションKILL実行後、ROLLBACK監視方法

# 执行批量数据更改会话KILL后如何监视ROLLBACK

# थोक डेटा परिवर्तन सत्र KILL करने के बाद ROLLBACK की निगरानी कैसे करें

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 디비버(DBeaver) Tool은 다양해지고 있는 DBMS(Oracle/MySQL/PostgreSQL), NOSQL/Big DATA DB 들에 하나의 SW로 접근하여 개발시에 편리하게 질의를 수행할 수 있도록 도와주는 SW이다.  

 DB의 종류가 달라질때마다 해당되는 SW를 다운로드하여 사용하는 불편함을 디비버는 해결해주고 있으며 가볍고 간단한 사용방법으로 많은 IT종사자들이 사용중인 것으로 알고 있다. 디비버는 커뮤니티 버전과 엔터프라이즈 버전이 존재하며 무료로 커뮤니티 버전을 제공함으로써 많은 사람들에게 열려있고 SW의 패치도 활발하여 빠르게 성장하는 SW이다.

 커뮤니티 버전에 경우에는 튐김현상이나 세션이 자동으로 끊어졌을때 재연결하는 부분등 불편한 부분이 남아있고 DB에 접근할수 있는 항목들이 제한적인 부분과 UI나 데이터 추출 및 확인시에 불편한점이 존재하는데 엔터프라이즈 버전에서는 이러한 부분을 추가적으로 제공하여 더욱 편리하게 사용할 수 있도록 하고 있다.

 엔터프라이즈 버전은 유료로 달러로 금액을 지불해야 다운로드가 가능한데 해외 사이트에서 해당 SW를 크렉하여 무료로 사용할수 있도록 제공하여 소개하려한다.

 

디비버 엔터프라이즈 무료사용방법 (DBeaver Enterprise Free Download)

 

1. 설치파일 다운로드

 - 디비버 Community Edition은 아래 공식사이트를 통하여 무료로 받아 사용할수 있다. 

dbeaver.io/download/

 - 디비버 Enterprise Edition은 Community Edition보다 더 다양한 NoSQL, BigDATA DB에 접근하여 사용이 가능하며 데이터 뷰나 수정, ERD등의 추가적인 기능을 제공한다.

 - 디비버 Enterprise Edition 유로로 다운로드하여 사용할 수 있는 SW인데 크렉을 통하여 무료로 사용가능하도록 제공하는 사이트가 존재한다. 아래 절차대로 다운로드하여 사용하면 된다.                                                           

getintopc.com/softwares/management/dbeaver-enterprise-free-download/

해당 프로그램에 대한 최소 스펙정보가 있으니 참고하여 설치가 필요
위 이미지 절차대로 수행하면 불필요한 광고 없이 다운로드 가능

 

2. 설치 파일 실행 및 설치 완료

 - 다운로드가 완료되면 아래와 같이 패스워드(123)을 입력하여 압축을 풀어준다. 그후에 32비트/64비트에 맞는 설치 파일을 수행하여 설치를 진행한다.

설치 파일확인, Readme에 세팅 방법참고
설치 진행시 설치경로를 기록해 두어야 crack 작업시 수월함

 

3. DBeaver Enterprise 사용인증(crack)

 - 설치 경로 확인 (C:\Users\Invest\AppData\Local\DBeaverEE)

 - 설치파일에 있던 Crack폴더의 dbeaver-agent.jar 파일을 설치 경로로 복사 붙여넣기 한다.

 - 해당 설치경로의 dbeaver.ini 파일을 열어 dbeaver-agent.jar이 위치하고 있는 경로와 파일명을 지정하여 넣고 저장한다.

 - dbeaver.exe 실행파일을 실행하여 SW를 사용한다.

dbeaver-agent.jar 파일을 복사 붙여넣기
dbeaver.ini 파일을 수정
dbeaver 파일 실행

 

해당 설치 파일은 DBeaver Enterprise 6.3 버전으로 최신 버전보다는 낮은 버전이지만 사용하는데 큰 문제는 없는 것 같다.

 

#DBeaver Enterprise

#How to use Debugger Enterprise for free

Oracle
MySQL
PostgreSQL
Ms-SQL
MongoDB
Cassandra
InfluxDB
Redis
Amazon DynamoDB
Google Bigtable
Couchbase
CouchDB

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

SELECT  A.AA CURRENT_PLAN
      , B.AA HIST_PLAN
      , CASE 
            WHEN A.AA <> B.AA OR A.AA IS NULL OR B.AA IS NULL 
                 THEN 'X' 
        END TP
FROM    (
            SELECT  /*+ NO_MERGE */
                    TO_CHAR(DBID) DBID, SQL_ID, PLAN_HASH_VALUE      
                  , ID
                  , LPAD(' ', DEPTH*2)
                    ||TRIM(OPERATION||' '||OPTIONS||' '||OBJECT_OWNER
                    ||CASE WHEN OBJECT_NAME IS NOT NULL THEN '.'||OBJECT_NAME END)
                    ||CASE WHEN PARTITION_START IS NOT NULL THEN ': '
                    ||PARTITION_START||' '||PARTITION_STOP END AS AA
            FROM    DBA_HIST_SQL_PLAN
            WHERE   SQL_ID  = :V_SQL_ID
            AND     DBID    = (
                        SELECT  DBID
                        FROM    V$DATABASE
                    )
        ) B
        FULL OUTER JOIN
        (
            SELECT
                    'CURRENT' DBID, SQL_ID, PLAN_HASH_VALUE      
                  , ID
                  , LPAD(' ', DEPTH*2)
                    ||TRIM(OPERATION||' '||OPTIONS||' '||OBJECT_OWNER
                    ||CASE WHEN OBJECT_NAME IS NOT NULL THEN '.'||OBJECT_NAME END)
                    ||CASE WHEN PARTITION_START IS NOT NULL THEN ': '
                    ||PARTITION_START||' '||PARTITION_STOP END AS AA
            FROM    V$SQL_PLAN
            WHERE   SQL_ID          = :V_SQL_ID
            AND     CHILD_NUMBER    = 0
        ) A
        ON (
           A.ID = B.ID
        )
ORDER BY
        A.ID;

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle Session별 Memory 사용량 확인


set lines 200 pages 200

set pagesize 66

set pause on

set verify off

set feed off

clear screen

 

column sid heading 'sid' format 999

column username heading 'username' format a8

column pgm heading 'program' format a25

column terminal heading 'terminal' format a8

column pga heading 'PGA session memory' format a11

column uga heading 'UGA session memory' format a11

column pga_sum heading 'SUM PGA mem' format a12

column uga_sum heading 'SUM UGA mem' format a12

column pga_max heading 'Max PGA session memory' format a15

column uga_max heading 'Max UGA session memory' format a15

column pga_m_sum heading 'Sum Max PGA session memory' format a11

column uga_m_sum heading 'Sum Max UGA session memory' format a11

 

spool sess.txt

 

ttitle '**********< Program Global Area >**********'

ttitle '1. Current pga, uga session memory'

 

select a.sid, a.username, substr(a.program, 1, 25) as pgm, a.terminal,

max(decode(c.name, 'session pga memory', trunc(value/1000)||'K', 0)) pga,

max(decode(c.name, 'session uga memory', trunc(value/1000)||'K', 0)) uga

from v$session a, v$sesstat b, v$statname c

where a.sid = b.sid

and b.statistic# = c.statistic#

and c.name like 'session%'

group by a.sid, a.username, substr(a.program, 1, 25), a.terminal;

 

 

ttitle '2. Sum of current pga, uga session memory'

 

select 'Current PGA, UGA session memory SUM:' as sum,

sum(decode(c.name, 'session pga memory', trunc(value/1000),0))||'K' pga_sum,

sum(decode(c.name, 'session uga memory', trunc(value/1000),0))||'K' uga_sum

from v$session a, v$sesstat b, v$statname c

where a.sid = b.sid

and b.statistic# = c.statistic#

and c.name like 'session%';

 

 

ttitle '3. Max(peak) pga, pga session memory'

 

select a.sid, a.username, substr(a.program, 1, 25) as pgm, a.terminal,

max(decode(c.name, 'session pga memory max', trunc(value/1000)||'K', 0)) pga_max,

max(decode(c.name, 'session uga memory max', trunc(value/1000)||'K', 0)) uga_max

from v$session a, v$sesstat b, v$statname c

where a.sid = b.sid

and b.statistic# = c.statistic#

and c.name like 'session%'

group by a.sid, a.username, substr(a.program, 1, 25), a.terminal;

 

 

ttitle '4. Sum of max(peak) pga, uga session memory'

 

select 'Max(peak) PGA, UGA session memory SUM:' as sum,

sum(decode(c.name, 'session pga memory max', trunc(value/1000), 0))||'K' pga_m_sum,

sum(decode(c.name, 'session uga memory max', trunc(value/1000), 0))||'K' uga_m_sum

from v$session a, v$sesstat b, v$statname c

where a.sid = b.sid

and b.statistic# = c.statistic#

and c.name like 'session%';

 

spool off

exit


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle Rawdevice구성 RMAN Backup스크립트


#/bin/bash

#RMAN backup script 2018/12/28


echo ##### BACKUP START!!!! #####

date

echo ###########################

# archive file delete(after 30 days)

echo ##### rac1,rac2 ARCHIVE LOG FILE DELETE -AFTER 30 DAYS- ##### 

find /archive/. -mtime +30 -print -exec rm {} \;

ssh rac2 'find /archive/. -mtime +30 -print -exec ssh rac2 rm {} \;' 


# ocr, vote backup

echo ##### OCR BACKUP START #####

dd if=/dev/raw/raw13 of=/dbbackup/rman/ocrvote_bak/ocr.bak bs=200M count=1

echo ##### OCR BACKUP END   #####

echo ##### VOTE BACKUP START #####

dd if=/dev/raw/raw15 of=/dbbackup/rman/ocrvote_bak/vote.bak  bs=100M count=1

echo ##### VOTE BACKUP END   #####


# spfile backup

echo ##### SPFILE BACKUP START #####

sqlplus "/ as sysdba" << EOF

create pfile='/backup/rman/pfile/initrac1.bak' from spfile;

exit

EOF

echo ##### SPFILE BACKUP END   #####


# rman full backup

rman target / << EOF


rman target /

sql 'alter system archive log current';

sql "alter session set nls_date_format=''dd.mm.yyyy hh24:mi:ss''";


RUN

{

configure controlfile autobackup on;

set command id to 'ORCLOnlineBackupFull';

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

ALLOCATE CHANNEL c4 DEVICE TYPE disk;

backup AS COMPRESSED BACKUPSET full database tag ORCL_FULL format '/backup/rman/data/%d_%T_%s_%p_FULL' ;

sql 'alter system archive log current';

backup tag ORCL_ARCHIVE format '/backup/rman/archive/%d_%T_%s_%p_ARCHIVE' archivelog all delete all input ;

backup tag ORCL_CONTROL current controlfile format '/backup/rman/control/%d_%T_%s_%p_CONTROL';

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}


crosscheck backup;

crosscheck backupset;

crosscheck copy;

crosscheck archivelog all;

delete noprompt expired backup;

delete noprompt obsolete;


list backup;

exit

EOF



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


오라클 SQL Trace 추출 스크립트



 

alter session set tracefile_identifier='test';  -- User Trace를 찾기 쉽게 네이밍

alter session set timed_statistics = true;

-- alter session set statistics_level = all;

alter session set max_dump_file_size = unlimited;

alter session set events '10046 trace name context forever, level 12';

-- alter session set "_rowsource_execution_statistics"=true;

set lines 600;


-- SQL TRACE TARGET SQL

Select count(*) from scott.test;


alter session set events '10046 trace name context off';


SELECT p.osuser, p.process cospid, p.spid sospid, p.username dbuser, p.sid, p.serial#,

  'tkprof '||d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'_great.trc'

    ||' ./'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.prf sys=no' tkprof_cmd,

  'cat ./'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.prf' view_cmd

FROM

  (SELECT s.osuser, s.process, p.spid, s.username, s.sid, s.serial#

  FROM v$session s, v$process p

  WHERE s.paddr = p.addr and s.sid = (select distinct sid from v$mystat)

  ) p,

  (SELECT instance

  FROM v$thread

  WHERE thread# = (SELECT to_number(value)+1 FROM v$parameter WHERE name = 'thread')

  ) i,

  (SELECT value FROM v$parameter WHERE name = 'user_dump_dest'

  ) d;





블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle 기본 점검 스크립트



column timecol new_value timestamp

column spool_extension new_value suffix

select to_char(sysdate,'yymmdd') timecol, '_mon.txt' spool_extension from sys.dual;

 

column output new_value instancename

select '_' || value output from v$parameter where name = 'instance_name';

 

spool &&timestamp&&instancename&&suffix

 

alter session set sort_area_size=50000000;

 

prompt *********************************************************************************

prompt *                                                                               *

prompt *                                   BASE  INFO                                  *

prompt *                                                                               *

prompt *********************************************************************************

 

set head off

 

select ' HOST_NAME     : '||HOST_NAME from v$instance;

select ' Database Name : '||name from v$database;

select ' Instance Name : '||INSTANCE_NAME from v$instance;

select ' Global Name   : '||value from v$parameter where name='global_names';

select ' Version       : '||VERSION from v$instance;

select ' Startup Time  : '||STARTUP_TIME from v$instance;

select ' Archive       : '||ARCHIVER from v$instance;

col comp_id for a10

col comp_Name for a30

col version for a15

set head on

 

SELECT substr(comp_id,1,15) comp_id, status,

substr(version,1,10) version,

substr(comp_name,1,30) comp_name

FROM dba_registry

ORDER BY 1;

 

set head off

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Buffer Cache Hit Ratio Statistics                           **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 70

COL "Get1" FORMAT 999,999,999,999,999 HEADING "Consistent Gets"

COL "Get2" FORMAT 999,999,999,999,999 HEADING "DB Block Gets"

COL "Get3" FORMAT 999,999,999,999,999 HEADING "Physical Reads"

COL "Hit"  FORMAT 999.99              HEADING "Hit|Ratio"

 

select sum(decode(name, 'consistent gets', value, 0)) "Get1",

       sum(decode(name, 'db block gets', value, 0)) "Get2",

       sum(decode(name, 'physical reads', value, 0)) "Get3",

       round((sum(decode(name, 'consistent gets', value, 0)) +

       sum(decode(name, 'db block gets', value, 0)) -

       sum(decode(name, 'physical reads', value, 0))) /

       (sum(decode(name, 'consistent gets', value, 0)) +

sum(decode(name, 'db block gets', value, 0))) * 100, 2) "Hit"

from sys.v_$sysstat;

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Library Cache Hit Ratio Statistics                          **

PROMPT **                                                                 **

PROMPT *********************************************************************

SET LINESIZE 70

COL "Executions" FORMAT 999,999,999,999,999 HEADING "Executions"

COL "EH"        FORMAT 999,999,999,999,999 HEADING "Executions Hits"

COL "Hit1"       FORMAT 999.99              HEADING "Hit|Ratio"

COL "Misses"     FORMAT 999,999,999         HEADING "Misses"

COL "Hit2"       FORMAT 999.99              HEADING "Hit|Ratio"

 

select sum(pins) "Executions", sum(pinhits) "EH",

       round((sum(pinhits) / sum(pins)) * 100, 3) "Hit1",

       sum(reloads) "Misses",

       round((sum(pins) / (sum(pins) + sum(reloads))) * 100, 3) "Hit2"

  from sys.v_$librarycache;

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Data Dictionary Cache Hit Ratio Statistics                  **

PROMPT *********************************************************************

 

SET LINESIZE 45

COL "Gets"  FORMAT 999,999,999,999,999 HEADING "Gets"

COL "Cache" FORMAT 999,999,999,999     HEADING "Cache Missess"

COL "Hit"   FORMAT 999.99               HEADING "Hit|Ratio"

 

select sum(gets) "Gets", sum(getmisses) "Cache",

       round((1 - (sum(getmisses) / sum(gets))) * 100, 2) "Hit"

  from sys.v_$rowcache;

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Sort Statistics                                               **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 80

COL name  FORMAT A30             HEADING "Sort Parameter"

COL value FORMAT A30                 HEADING "Value"

 

select name, value

  from v$parameter

 where name like '%sort%';

 

PROMPT *********************************************************************

PROMPT **   Sort Ratio 가 < 1% 이하                                       **

PROMPT *********************************************************************

 

SET LINESIZE 60

COL Disk  FORMAT 999,999,999,999,999

COL Mem   FORMAT 999,999,999,999,999

COL Ratio FORMAT 999.99 HEADING "Sort|Ratio"

 

select disk.value Disk, mem.value Mem,

       round((1 - (mem.value )/(mem.value+disk.value))*100,2) Ratio

  from v$sysstat mem, v$sysstat disk

 where mem.name = 'sorts (memory)'

   and disk.name = 'sorts (disk)';

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Tablespace Statistics                                       **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 120

COL tablespace_name FORMAT A20            HEADING "Tablespace Name"

COL "Bytes"         FORMAT 999,999,999.99 HEADING "TBS Size(MB)"

COL "Free"          FORMAT 999,999.99     HEADING "Free Size(MB)"

COL "Percent"       FORMAT 999.99         HEADING "Usage(%)"

COL "Used"          FORMAT 999,999,999.99 HEADING "Used(MB)"

COL "FreeP"         FORMAT 999.99         HEADING "Free(%)"

 

select * from (

 select ddf.tablespace_name,

       ddf.bytes/1024/1024 "Bytes",

       dfs.bytes/1024/1024 "Free",

       round(((ddf.bytes - dfs.bytes) / ddf.bytes) * 100, 2) "Percent"

from   ( select tablespace_name, sum(bytes) bytes

         from   dba_data_files

         group by tablespace_name) ddf,

       ( select tablespace_name, sum(bytes) bytes

         from   dba_free_space

         group by tablespace_name) dfs

where  ddf.tablespace_name = dfs.tablespace_name

order by ((ddf.bytes-dfs.bytes)/ddf.bytes) desc)

where rownum < 6

;

 

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Datafile I/O Statistics                                     **

PROMPT **                                                                 **

PROMPT *********************************************************************

PROMPT

PROMPT

 

 

set lines 120

 

col File_name       form a52        heading 'File name'

col tablespace_name form a20        heading 'Tablespace'        

col br              form 99,999,999 heading 'BLK Read'

col bw              form 99,999,999 heading 'BLK Write'

col Weight          form 999.99     heading 'Weight|(%)'

 

select * from (

select tablespace_name,file_name,

       round((phyblkrd+phyblkwrt*1.2)/z.sum*100, 2) "Weight"

  from dba_data_files df,

       v$filestat     fs,

       (select sum(phyblkrd+phyblkwrt*1.2) as sum from v$filestat) z

 where df.file_id = fs.file#   order by 3 desc)

where rownum<6

;

 

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Object Extents > 20                                         **

PROMPT *********************************************************************

 

col Owner       form a9

col Object_name form a30

col Type        form a1 trunc

col Tablespace  form a12

col Size(KB)    form 999,999,999

col Init(KB)    form 999,999

col Next(KB)    form 999,999

col Ext         form 999,999

 

col Owner       form a9

col Object_name form a30

col Type        form a1 trunc

col Tablespace  form a15

col Size(KB)    form 999,999,999

col Init(KB)    form 999,999

col Next(KB)    form 999,999

col Ext         form 999,999

select * from (

select  Owner,

        segment_name Object_name,

        segment_type Type,

        tablespace_name Tablespace ,

        Bytes/1024 "Size(KB)",

        initial_extent/1024 "Init(KB)",

        next_extent/1024 "Next(KB)",

        extents Ext

  from dba_segments

 where owner != 'SYS' and owner != 'SYSTEM'

   and extents > 20

 order by 8 desc, 1,2,3,4)

where rownum < 6;

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Tablespace SIZE                                     **

PROMPT **                                                                 **

PROMPT *********************************************************************

PROMPT

PROMPT

 

set head on

 

set trimspool on

column totalsize heading "total size(M)"

column usedsize heading "used size(M)"

column freesize heading "free size(M)"

column tablespace_name format a20

column totalsize format 999,999.9

column usedsize format 999,999.9

column freesize format 999,999.9

column used_percent format 999.9

 

 

select a.tablespace_name, a.totalsize,

       nvl(b.usedsize,0) usedsize,nvl(round(((b.usedsize/a.totalsize)*100),1),0) Used_Percent,c.freesize

  from ( select tablespace_name, sum(bytes)/1024/1024 totalsize

           from dba_data_files

          group by tablespace_name ) a,

       ( select tablespace_name, sum(bytes)/1024/1024 usedsize

           from dba_segments

          group by tablespace_name ) b,

       ( select tablespace_name, sum(bytes)/1024/1024 freesize

           from dba_free_space

          group by tablespace_name ) c

 where a.tablespace_name = b.tablespace_name(+)

   and a.tablespace_name = c.tablespace_name(+)

order by 1;

 

set head off

 

 

prompt *******************************************************

prompt *                                                     *

prompt *        Cache Fusion For  RAC

prompt *                                                     *

prompt *******************************************************

prompt

 

set linesize 100

col name format a16

col kind format a10

col partition_name format a10

 

column partition_name for a15

select inst_id,name, substr(kind,1,10) kind, partition_name,

       sum(xnc) xnc,sum(FORCED_READS) reads, sum(FORCED_writes) writes

       from gv$cache_transfer

       group by inst_id,name, kind, partition_name

       having sum(xnc) > 1

       order by 1,4

;

prompt

prompt *************************************************************

prompt * RESOURCE                                                  *

prompt *************************************************************

prompt                                

 

set head on

 

col RESOURCE_NAME for a10

col CURRENT_UTILIZATION for 9999

col MAX_UTILIZATION for 9999

col INITIAL_ALLOCATION for a10

col LIMIT_VALUE for a10

 

select * from v$resource_limit where resource_name in ('processes', 'sessions');

 

set head off

 

Prompt

prompt 2. Data file total size

 

select ' TOTAL DATA FILE SIZE  : '||sum(bytes)/1024/1024||' MB' FROM v$datafile

union

SELECT ' USED SIZE             : '||sum(bytes)/1024/1024||' MB' FROM dba_segments

union

SELECT ' FREE SIZE             : '||sum(bytes)/1024/1024||' MB' FROM dba_free_space;

prompt

set head on

 

 

prompt

prompt 3. Backup check

 

col time for a80

select 'Hot Backup : '||to_char(min(b.time),'yyyy-mm-dd hh24:mi:ss')||' ~ '||to_char(max(b.time),'yyyy-mm-dd hh24:mi:ss') Time

from v$backup b, v$datafile d

where b.file#=d.file#

and b.status = 'NOT ACTIVE';

 

select *

from v$backup b, v$datafile d

where b.file#=d.file#

and b.status != 'NOT ACTIVE';

 

set head off

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NEXT CHECK                                              *

prompt *************************************************************

prompt 

 

prompt alert log and trace file check

show parameter dump

prompt

prompt archive log list

archive log list;

Prompt

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NLS_CHARACTERSET                                              *

prompt *************************************************************

prompt 

 

prompt

select * from NLS_DATABASE_PARAMETERS where parameter = 'NLS_CHARACTERSET';

Prompt

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NLS_CHARACTERSET                                              *

prompt *************************************************************

prompt 

 

prompt

Select * from v$version;

Prompt

 

prompt *************************************************************

prompt *                                                  *

prompt *************************************************************

 

select name, state, type, total_mb, free_mb from v$asm_diskgroup;

spool off 



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle RMAN FULL BACKUP 스크립트




rman target /

sql 'alter system archive log current';

sql "alter session set nls_date_format=''dd.mm.yyyy hh24:mi:ss''";

RUN

{

configure controlfile autobackup on;

set command id to 'ORCLOnlineBackupFull';

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

ALLOCATE CHANNEL c4 DEVICE TYPE disk;

backup AS COMPRESSED BACKUPSET full database tag ORCL_FULL format '/backup/rman/data/%d_%T_%s_%p_FULL' ;

sql 'alter system archive log current';

backup tag ORCL_ARCHIVE format '/backup/rman/archive/%d_%T_%s_%p_ARCHIVE' archivelog all delete all input ;

backup tag ORCL_CONTROL current controlfile format '/backup/rman/control/%d_%T_%s_%p_CONTROL';

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,