728x90

 

  • V$SQL: SQL 문과 관련된 통계 정보를 제공합니다.
  • V$SQLAREA: SQL 영역과 실행 통계를 확인합니다.
  • V$SESSION: 현재 실행 중인 세션 정보를 확인합니다.
  • V$SESSION_LONGOPS: 오래 실행되는 작업 정보를 제공합니다.

 


✔ 실행 시간이 긴 SQL 확인

SELECT
    TO_CHAR(FIRST_LOAD_TIME,'YYYY-MM-DD HH24:MI:SS') AS DT,
    SQL_ID,
    SQL_TEXT,
    EXECUTIONS,
    TRUNC(CPU_TIME / 60000000) AS CPU_TIME_SECONDS,      -- CPU_TIME를 분 단위로 변환 (소수점 제거)
    TRUNC(ELAPSED_TIME / 60000000) AS ELAPSED_TIME_MINUTES, -- ELAPSED_TIME를 분 단위로 변환 (소수점 제거)
    DISK_READS
FROM V$SQL
WHERE ELAPSED_TIME > 600000000-- 10분 이상
ORDER BY FIRST_LOAD_TIME DESC,ELAPSED_TIME DESC

 


✔ 실행 중인 SQL과 세션 정보 확인

SELECT
    S.* ,
    Q.SQL_TEXT
FROM V$SESSION S
LEFT JOIN V$SQL Q ON S.SQL_ID = Q.SQL_ID
WHERE S.STATUS = 'ACTIVE'

 

 

728x90
728x90

 

✔ 조회

select * from dba_jobs;
select * from user_jobs;

 

✔ 생성

DECLARE
    jobno number;
BEGIN
    DBMS_JOB.SUBMIT(jobno,
        'begin pl_sql; end;',
        sysdate,
        'trunc(sysdate)+1+2/24'
        );
END;

 

[예시]

'begin pl_seql; end;' 내용을 다음과 같이 사용. 
'DELETE FROM 테이블 WHERE 날짜 < ADD_MONTHS(SYSDATE, -6);',
6개월전 데이터를 삭제 하기위한 내용

 

✔ 상태(Broken)

BEGIN
    /* broken된 JOB을 정상 상태로 변경하고, 한 시간 뒤 실행하도록 수정한다. */
    DBMS_JOB.BROKEN(100, false, sysdate + 1/24); 
END; 

BEGIN
    /* JOB을 broken 상태로 변경시키고 ,다음 실행시간 Parameter는 무시된다.. */
    DBMS_JOB.BROKEN(100, true, sysdate + 1/24); 
END;

 

✔ 삭제

EXECUTE DBMS_JOB.REMOVE(잡넘버);

 

✔ 실행

EXECUTE DBMS_JOB.RUN(잡넘버);

 

✔ 수정

BEGIN
    /* job번호가 100인 job을 psm_proc 프러시저 호출로 대체한다. */
    DBMS_JOB.WHAT(100, 'psm_proc(''abc'', 10);'); 
END; 

BEGIN
    /* 10분 후에 실행하도록 변경한다. */
    DBMS_JOB.NEXT_DATE(100, sysdate + 10/24/60); 
END; 

BEGIN
    /* 하루에 한 번씩 실행한다. */
    DBMS_JOB.INTERVAL(100, 'sysdate + 1'); 
END; 


/*job 내용 전부 바꾸고 싶을 때*/
DBMS_JOB.CHANGE
(
    job           IN   BINARY_INTEGER,
    what          IN   VARCHAR2,
    next_date     IN   DATE,
    interval      IN   VARCHAR2,
    instance      IN   BINARY_INTEGER DEFAULT NULL,
    force         IN   BOOLEAN DEFAULT FALSE
);

 

 

✔ 날짜(Interval) 예시

sysdate + 1/24 1시간 간격
sysdate + 1 1일 간격
sysdate + 7 7주일에 한번
truncate(sysdate) +1+1/24 매일 1시
last_day(trunc(sysdate)+1)+23/24 말일 +1일은 다음달 1일
trunc(sysdate, ''D'') + 7 매주 일요일 00시에 작업

 

728x90
728x90

티베로에서 테이블 스페이스 사용량  조회하기 위한 Query

 
select DAY,
       tablespace TABLESPACE_NAME,
       status,
       total_mb "Total (MB)",
       used_mb "Used (MB)",
       free_mb "Free (MB)",
       usage "Usage (%)",
       '['||rpad(nvl(lpad('*', usage/5, '*'), '-'), 20, '-')||']' "Graph",
       stat "ENOUGH?",
       SEGMENT_SPACE_MANAGEMENT "ASSM?",
       AUTOEXTENS_CNT_FILE "AUTOEXTCNT",
       FILE_CNT
from   (select to_char(sysdate,'yyyy/mm/dd') DAY,
               total.ts tablespace,
               dbat.status status,
               round(total.mb) total_mb,
               round(total.mb - nvl(free.mb, 0)) used_mb,
               round(nvl(free.mb, 0)) free_mb,
               round((total.mb - nvl( free.mb, 0)) / total.mb * 100,2) usage,
                       case
                         when (total.mb - nvl( free.mb, 0)) / total.mb * 100 >= 85 and nvl( free.mb, 0) <= 1000 then 'Not Enough'
                         else 'Enough'
                       end stat,
               dbat.SEGMENT_SPACE_MANAGEMENT,
               total.AUTOEXTENS_CNT_FILE,
                total.FILE_CNT
        from   (select tablespace_name ts,sum(decode(AUTOEXTENSIBLE, 'YES', 1, 0)) AUTOEXTENS_CNT_FILE,
               count(1) FILE_CNT,
                       sum(bytes)/1024/1024 mb
                from   dba_data_files
                group by tablespace_name) total,
         (select tablespace_name ts,
                       sum(bytes)/1024/1024 mb
                from   dba_free_space
                group by tablespace_name) free,
         dba_tablespaces dbat
        where  total.ts=free.ts(+)
        and    total.ts=dbat.tablespace_name
        )
where 1=1
order by "Usage (%)" desc;
 

 


✔ 조회 결과 

 

728x90
728x90

DB가 정상적으로 살아있을때

IP가 맞을 때

SID가 맞을떄

PORT가 맞을때

방화벽에도 문제가없을때.....

DB TOOL로는 접속이 잘되는데 WAS(WEB)에서 접속을 못할때...

 

사용자 이름이 한글로 되어있을경우 오류가 날수있다.

 

[해결 방법]

* 일반 계정

1. WIN+R

2. 실행창에서 'netplwiz' 입력

3. 한글로 된 계정을 클릭 후 영어로 변경.

728x90
728x90

1. 생성

create tablespace 생성할이름_DAT1 datafile '/app/tibero/tbdata/생성활파일.dtf' size 100M autoextend on next 1M extent management local uniform size 256k;

 

2. 삭제

 1) drop tablespace

    - DROP TABLESPACE 테이블스페이스명;

 2) 데이터 파일까지 같이 제거

    -DROP TABLESPACE 테이블스페이스명 INCLUDING CONTENTS AND DATAFILES;

 

3. 변경

 1) 데이터 파일 추가

    - 테이블스페이스의 저장공간이 더 필요한 경우 데이터파일 추가로도 가능

    - ALTER TABLESPACE 테이블스페이스명 ADD DATAFILE 'test_file02.dtf' size 30M;

    - 위처럼 절대경로를 명시하지 않으면 디폴트로 설정된 디렉터리에 데이터파일 생성됨.

      (디폴트 생성 위치 : $TB_HOME/config/$TB_SID.tip에 설정된 DB_CREATE_FILE_DEST위치.

                              : 해당 파라미터 설정X이면 $TB_HOME/database/$TB_SID에 생성)

 2) 데이터파일 크기 변경

    - ALTER DATABASE 테이블스페이스명 'test_file.dtf' RESIZE 100M;

 3) Tablespace OFFLINE

    - 특정 테이블스페이스에 읽고 쓰는 모든 접근을 허용하지 않으려면 OFFLINE절 사용

    - ALTER TABLESPACE 테이블스페이스명 OFFLINE [NORMAL];  -- NORMAL모드로 오프라이상태로 변경

    - ALTER TABLESPACE 테이블스페이스명 ONLINE;                 -- 오프라인상태 후 다시 온라인상태로 변경

 

4. 조회

 1) DBA_TABLESPACES

    - Tibero내의 모든 테이블 스페이스 정보를 조회하는 뷰

 2) USER_TABLESPACES

    - 현재 사용자에 속한 테이블 스페이스의 정보를 조회하는 뷰

 3) V$TABLESPACE

    - Tibero내의 모든 테이블 스페이스에 대한 간략한 정보를 조회하는 뷰

 

 - user의 default tablespace 조회

    : SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS;

 

 - TABLESPACE 사용량 조회

    select ddf.tablespace_name "Tablespace Name",
       ddf.bytes/1024/1024 "Bytes(MB)",
       (ddf.bytes - dfs.bytes)/1024/1024 "Used(MB)",
       round(((ddf.bytes - dfs.bytes) / ddf.bytes) * 100, 2) "Percent(%)",
       dfs.bytes/1024/1024 "Free(MB)",
       round((1 - ((ddf.bytes - dfs.bytes) / ddf.bytes)) * 100, 2) "Free(%)"
    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
;

728x90
728x90

TBR-8033: Specified schema object was not found

 

✔ 계정을 만들고 접속할때 

  • TIBERO오류 TBR-8033: Specified schema object was not found. 등의 오류가 발생할수있다. 
  • 오류 확인을 위해서 다음에서 확인을 할수있다

# DB system log 확인
vi $TB_HOME/instance/$TB_SID/log/system_init.log

 

 

다음과 같은 오류는 system.sh 진행할때

SYSCAT 암호를 잘못입력했을수도 있다.

제대로 다시 진행후 오류없어지는것을 확인할수있다.

 

 

728x90
728x90

권한을 줄때 다음과 같이 오류가 날수있다.

SQL> grant connect to new_user;

TBR-7075 : Specified role 'CONNECT' was not found.

 

다음과 같은 문제를 해결할때는

bash $TB_HOME/scripts/system.sh 을실행한다.

# bash /app/tibero/tibero6/scripts/system.sh

 

이와같이 실행한뒤 다시 권한 부여 명령어를 실행하면 된다.

 

 

728x90
728x90

0. 사용중인 사용자 목록

select username from dba_users;

 

1. 사용할 datafile 생성

create tablespace 생성할이름_DAT1 datafile '/app/tibero/tbdata/생성활파일.dtf' size 100M autoextend on next 1M extent management local uniform size 256k;

 

create tablespace 생성할이름_IDX1 datafile '/app/tibero/tbdata/생성활파일_idx.dtf' size 50M autoextend on next 1M extent management local uniform size 256k;

 

2. 계정 생성

create user 생성할계정명 identified by '생성할계정비밀번호' default tablespace 생성할이름_DAT1 

 

3. 권한 주기

grant connect, resource, create view, create TRIGGER, dba to 생성할계정명;

 

3-1. 사용자에게 부여된 롤 조회

SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE = '사용자명';
SELECT * FROM ROLE_SYS_PRIVS;

 

 

 

4. 사용자 삭제

drop user 사용자ID;

* 사용자가 가지고 있는 객체(뷰,트리거 등등)도 전부 삭제하는방법. cascade 추가(신중하게 해야됨.)

drop user 사용자ID cascade;

 

* 권한 


-- 다른 스키마의 권한을 테이블별로 사용할수 있게 준다.
 GRANT ALL ON SMARTSTOCK_D.TD_FARM TO SMARTSTOCK;

--시스템 개인 및 개체 개인의 두 가지 종류의 권한이 있습니다.
GRANT ALL PRIVILEGES TO user;

--모든 시스템 권한을 사용자에게 부여하며 매우 신중하게 사용해야합니다!
GRANT ALL ON table TO user;

728x90
728x90

* TIBERO는 밀티 인스턴스 구성하기 위해서는 다음과 같은조건이 필요하다.

IP 가 다르던지, PORT가 달라야한다.

처음설치할때 SID 이름은 tibero 가 기본이다

멀티 인스턴스를 구성하기위해서는 다음과 같은 환경이 필요하다

 

* TB_SID를 변경한다.

# export TB_SID=tibero2

* 티베로 설치 디렉토리 아래 gen_tip_sh 을 실행한다.

# $TB_HOME/config/gen_tip.sh

* 실행을 하면 tibero2.tip 이라고 생긴다. 파일을 열어 환경을 바꾼다.

LISTENER_PORT=8629 기본포트를 원하는 포트로

IP변경시는 LISTENER_IP=0.0.0.0

 

준비되었으면 NOMOUNT 모드로 실행한다.

# tbboot nomount

 

* tbsql sys/tibero 로 접속하여 데이터 베이스를 생성한다.

 

create database "tibero2"
        user sys identified by tibero
        maxinstances 8
        maxdatafiles 100
        character set UTF8
        logfile group 1 'log001.log' 
                         size 100M,
                group 2 'log002.log' 
                         size 100M,
                group 3 'log003.log' 
                         size 100M
        maxloggroups 255
        maxlogmembers 8
        noarchivelog
               datafile 'system001.dtf' 
                         size 100M
                         autoextend on next 100M
                         maxsize unlimited
        default temporary tablespace TEMP
               tempfile 'temp001.dtf' 
                         size 100M
                         autoextend on next 100M
                         maxsize unlimited
                         extent management local autoallocate
        undo tablespace UNDO
               datafile 'undo001.dtf' 
                         size 100M
                         autoextend on next 100M
                         maxsize unlimited
                         extent management local autoallocate;

 

* 완료되면 NORMAL 모드로 실행한다.

# tbboot

 

/scripts 아래에 system.sh를 실행한다.

 

 

참고 1 ) 마지막으로 SID각각 BOOT, DOWN을 하려면 TB_SID 값을 바꿔줘야한다.

참고 2 ) 티베로는 SHM_KEY와 SEM_KEY를 사용. 메모리와 관련. 확보가 안되면 에러발생

Shared Memory Segments는 SHM_KEY
Semaphore Arrays는 SEM_KEY

Shared Memory Segments만 보고 싶으면 ipcs -m

Semaphore Arrays만 보고 싶으면 ipcs -s

티베로가 종료된 상태임에도 공유 메모리 해제를 못하는 경우 조회했을때 값이 나.
ipcrm -m shmid, ipcrm -s shmid 명령으로 해제하면 된다. 다 해제하려면 ipcrm -a

 

 

참고) 

# bash /app/tibero/tibero6/scripts/system.sh

728x90
728x90

1. Tibero 는 tbexport 를 이용하여 Export 할수있다.

* FULL, USER, TABLE 모드 중 한 가지 모드를 선택하여 export 해야 한다!!!
* 권한상의 문제를 예방하기 위해 sys 계정을 권장한다!!!
 
1-1. LOCAL DB EXPORT
* Full 모드
tbexport username=sys password=tibero port=8629 sid=tibero file=exported.dat full=y 
* User모드
tbexport username=sys password=tibero port=8629 sid=tibero file=exported.dat user=tibero 
* Table 모드
tbexport username=sys password=tibero port=8629 sid=tibero file=exported.dat table=tibero.test 

1-2. 원격 DB EXPORT

* Full 모드

tbexport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=exported.dat full=y 
* User모드
tbexport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=exported.dat user=tibero 
* Table 모드
tbexport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=exported.dat table=tibero.test 
 

2. tbimport 를 이용하여 IMPORT

* FULL, USER, TABLE 모드 중 한 가지 모드를 선택하여 import 해야 한다

* FROMUSER를 명시하면 반드시 TOUSER도 함계 명시해야 한다

* import전 tablespace, user는 미리 만들어 놓아야 한다

 

2-1. LOCAL DB를 IMPORT
* USER 모드 (FROM , TO)
tbimport username=sys password=tibero port=8629 sid=tibero file=test.dat fromuser=test touser=test 
* Full 모드
tbimport username=sys password=tibero port=8629 sid=tibero file=test.dat full=y 
* User모드
tbimport username=sys password=tibero port=8629 sid=tibero file=test.dat user=tibero 
* Table 모드
tbimport username=sys password=tibero port=8629 sid=tibero file=test.dat table=tibero.test 
 
2-2. 원격 DB IMPORT

* USER 모드 (FROM , TO)

tbimport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=test.dat fromuser=test touser=test 
* Full 모드
tbimport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=test.dat full=y 
* User모드
tbimport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=test.dat user=tibero 
* Table 모드
tbimport username=sys password=tibero ip=192.168.2.10 port=8629 sid=tibero file=test.dat table=tibero.test 

 

728x90

+ Recent posts