반응형

유닉스에서 아래와 같이 명령어 실행하여 해결하였습니다.

(1번만 실행하여 해결하였습니다.)

1. [oracle] DB명이 ORCLDB이고 인스턴스명이 ORCLDB1 기동

srvctl start instance -d ORCLDB -i ORCLDB1

2. [oracle] 리스너 start

srvctl start listener -l listener -n orcldb1

3. [root] RAC 상태 확인

crsctl stat res -t

crsctl status resource -t

4. [root] CRS stop, start

crsctl stop crs

crsctl start crs

5. CRS start = (CRS start) + (Instance start) + (Listener start)

6. crs관련 상태확인 명령어

crsctl check cluster -all : 모든 노드 체크 수행

crsctl check crs : 로컬서버의 Oracle High Availiability Services와 클러스터웨어 status 확인

crsctl config crs : Oracle High Availiability Services의 자동시작 설정확인

*crs서비스는 crsd데몬으로 구현되며, crsd는 root로 실행되고 문제발생 시 자동으로 재시작됨

반응형
반응형

대용량 테이블이고 DML(INSERT, UPDATE, DELETE 등)가 계속 일어나는 테이블에 신규 인덱스 생성을 하려면

Lock이 걸려서 서비스가 원활하지 않을 수 있습니다.

그럴 경우에 아래와 같이 ONLINE, NOLOGGING 옵션을 사용하면 좋습니다.

ONLINE은 서비스 중에 Lock이 걸리지 않고 인덱스 생성하는 옵션입니다.

NOLOGGING은 UNDO, REDO를 최소하면서 인덱스 생성할 수 있게 도와주는 옵션입니다.

1. 테이블 EMPLOYEE 에 기 생성된 인덱스 확인

SELECT IDX.OWNER, IDX.INDEX_NAME, IDX.TABLE_OWNER,
IDX.TABLE_NAME, IDX.TABLESPACE_NAME, IDX_COL.COLUMN_NAME
FROM DBA_INDEXES IDX, DBA_IND_COLUMNS IDX_COL
WHRE IDX.TABLE_NAME = 'EMPLOYEE'
AND IDX.INDEX_NAME=IDX_COL.INDEX_NAME
ORDER BY INDEX_NAME;

2. 아래의 구문을 사용한 인덱스 생성

CREATE INDEX EMP.IX_EMPLOYEE01 ON EMP.IX_EMPLOYEE(IDX01, IDX02, IDX03, IDX04)
NOLOGGING TABLESPACE TS_IDX_EMP LOCAL ONLINE;

3. 생성된 인덱스 10% 샘플링 통계수집

BEGIN
  SYS.DBMS_STATS.GATHER_INDEX_STATS (
     OwnName           => 'EMP'
    ,IndName           => 'IX_EMPLOYEE01'
    ,Estimate_Percent  => 10
    ,Degree            => 4
    ,No_Invalidate  => FALSE);
END;
/

감사합니다.

반응형
반응형

Single Oracle DB일 때 리스너 설정을 2가지 방법으로 합니다.

1번째는 NETCA(NET Configuration Assistant)로 리스너 설정하는 방법

 - RAC환경에서는 반드시 NETCA를 통한 리스너 설정을 추천드립니다.

2번째는 listener.ora 파일을 수정하여 기동하는 방법이 있습니다.

2번째 방법을 공부해보겠습니다

oracle@testdb:~/app/oracle/product/12.2.0/db/network/admin$ cat listener.ora
LISTENER=
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = testdb)(PORT = 1521))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = TESTDB)
      (SID_NAME = TESTDB)
      (ORACLE_HOME = /oracle/app/oracle/product/12.2.0/db)
    )
  )

LISTENER1=
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = testdb)(PORT = 1522))
      )
    )
  )

SID_LIST_LISTENER1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = TESTDB)
      (SID_NAME = TESTDB)
      (ORACLE_HOME = /oracle/app/oracle/product/12.2.0/db)
    )
  )

LISTENER2=
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = testdb)(PORT = 1523))
      )
    )
  )

SID_LIST_LISTENER2 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = TESTDB)
      (SID_NAME = TESTDB)
      (ORACLE_HOME = /oracle/app/oracle/product/12.2.0/db)
    )
  )

SID_LIST_EXTPROC =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/oracle/product/12.2.0/db)
      (PROGRAM = extproc)
      (ENVS="EXTPROC_DLLS=ANY")
    )
  )
EXTPROC = 
  (DESCRIPTION_LIST =
    (DESCRIPTION = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

#security weakness
ADMIN_RESTRICTIONS_LISTENER = ON
oracle@testdb:~/app/oracle/product/12.2.0/db/network/admin$ 

위의 빨간색으로 표시된 부분에 주의해서 아래와 같이 기동을 해봅니다.

1. 리스너 기동

lsnrctl start LISTENER

lsnrctl start LISTENER1

lsnrctl start LISTENER2

2. 리스너 상태 확인

lsnrctl status LISTENER

lsnrctl status LISTENER1

lsnrctl status LISTENER2

3. 리스너 상태 중지

lsnrctl stop LISTENER

lsnrctl stop LISTENER1

lsnrctl stop LISTENER2

 

반응형
반응형

 

1. 실행중인 SQL 지연시간 체크 및 세션 체크

SELECT A.MESSAGE
, A.START_TIME
, A.LAST_UPDATE_TIME
, A.TIME_REMAINING
, ROUND((SOFAR/TOTALWORK)*100,0)||'%' AS PROGESS
, B.SQL_TEXT
FROM V$SESSION_LONGOPS A
, V$SQL B
WHERE A.SQL_ADDRESS=B.ADDRESS
AND ROWNUM<=10
AND A.TIME_REMAINING>0;

SELECT ROWNUM NO
, PARSING_SCHEMA_NAME
, to_char(ELAPSED_TIME/(1000000 * decode(executions,null,1,0,1,executions)),999999.99 ) 평균실행시간
, executions 실행횟수
, SQL_TEXT 쿼리
, SQL_FULLTEXT
FROM V$SQL
WHERE  LAST_ACTIVE_TIME > SYSDATE-(1/24*2)
AND ELAPSED_TIME >= 1 * 1000000 * decode(executions,null,1,0,1,executions)
ORDER BY 평균실행시간 DESC, 실행횟수 DESC;

2. Oracle sessions & process  limit와 현재 사용수치 찾는 쿼리

 select resource_name, current_utilization, max_utilization, limit_value
    from v$resource_limit
    where resource_name in ('sessions', 'processes');
    select
       substr(a.spid,1,9) pid,
       substr(b.sid,1,5) sid,
       substr(b.serial#,1,5) ser#,
       substr(b.machine,1,6) box,
       substr(b.username,1,10) username,
       substr(b.osuser,1,8) os_user,  -- 접속자의 OS 사용자 정보
       substr(b.program,1,30) program,  -- 접속 프로그램
from v$session b, v$process a
where
b.paddr = a.addr
and type='USER'order by spid;

3. 현재 활성화된 SQL및 Process ID찾기

SELECT
  a.sid,       -- SID
  a.serial#,   -- 시리얼번호
  a.status,    -- 상태정보
  a.process,   -- 프로세스정보
  a.username,  -- 유저
  a.osuser,    -- 접속자의 OS 사용자 정보
  b.sql_text,  -- sql
  c.program    -- 접속 프로그램
FROM
  v$session a,
  v$sqlarea b,
  v$process c
WHERE
  a.sql_hash_value=b.hash_value  AND a.sql_address=b.address  AND a.paddr=c.addr  AND a.status='ACTIVE';

4. 현재 시간 기점으로 총 세션과 Active 세션 찾기

   select to_char(sysdate, 'YYYY/MM/DD hh24:mi:ss') "Time",
           count(*) "Total Sessions",
           count(decode(status, 'ACTIVE', 1) ) "Active Sessions"
    from   v$session;;

반응형
반응형

weblogic admin console 에서 아래와 같이 timeout 설정이 가능합니다.

SID가 ORCL인 DB에 EMP 계정으로 접속하는 상태에서 TIMEOUT을 설정합니다.

속성 창에 아래와 같이 입력을 해줍니다.

user=EMP
oracle.jdbc.ReadTimeout=1800000
oracle.net.CONNECT_TIMEOUT=10000

https://blueyikim.tistory.com/1614

https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/OracleConnection.html

반응형

AUTOTRACE 사용법

개발 및 관리/Oracle 9i, 10g, 11g, 12c, 19c 2022. 1. 13. 12:01 posted by HighLighter
반응형

sqlplus 접속 후 실행계획 보는 방법입니다.

골든, 토트, 오랜지 등과 같은 툴보다 약간 정확하게 확인이 가능합니다.


1. AUTOTRACE를 사용하여 명령문 Trace 시작
SQL> set autotrace on

2. 실행계획을 실행하지 않고 표시만
SQL> set autotrace traceonly explain

3. 행과 통계 표시
SQL> set autotrace on statistics

4. 계획과 통계만 가져오기(행 표시 안함)
SQL> set autotrace traceonly

5. AUTOTRACE를 사용하여 명령문 Trace 종료
SQL> set autotrace off





반응형
반응형

안녕하세요...

오늘은 ASM으로 설치된 ORACLE DBMS 테이블스페이스 관리하는 방법에 대해 알아보겠습니다.

데이터파일 RESIZE는 기존 파일시스템 관리 방식과 동일합니다.

1. DATAFILE RESIZE

SELECT FILE_NAME, BYTES/1024/1024/1024||'GB' FROM DBA_DATA_FILES X 

WHERE TABLESPACE_NAME = 'SYSTEM' ORDER BY FILE_NAME;

ALTER DATABASE DATAFILE '+DATA/EPSDB/system01.dbf' RESIZE 3G;

테이블스페이스의 데이터파일 추가 방식이 약간 변경되었습니다.

DATAFILE 명령어 이후에 '+DATA'만 명시해주시면 DATAFILE이 자동 추가됩니다. 이름도 자동추가됩니다.

2. DATAFILE ADD


SELECT FILE_NAME, BYTES/1024/1024/1024||'GB' FROM DBA_DATA_FILES X 

WHERE TABLESPACE_NAME = 'TS_STAT' ORDER BY FILE_NAME;

ALTER TABLESPACE TS_STAT ADD DATAFILE '+DATA' SIZE 30G;

3. ASM 용량확인

반응형
반응형

sqlnet.ora 파일에 아래와 같이 설정을 하여 처리하였습니다.

SQLNET.EXPIRE_TIME=10

---------------------------------------------------------------------------------------

Profile Parameters (sqlnet.ora)

https://docs.oracle.com/cd/B19306_01/network.102/b14213/sqlnet.htm

반응형
반응형

DBMS의 parameter 를 아래와 같이 변경하여 적용을 하였습니다.

1. optimizer_adaptive_plans : TRUE -> FALSE

2. optimizer_adaptive_reporting_only : FALSE -> TRUE

3. db_cache_size : default(0) -> '5G~15G'

https://smarttechways.com/2020/08/08/optimizer-adaptive-feature-parameter-in-oracle/

 https://haisins.synology.me/wordpress/?p=4597 

https://aozjffl.tistory.com/1762

 

Optimizer Adaptive feature parameter in Oracle

Optimizer Adaptive feature parameter in Oracle   Oracle optimizer is used to find the most effective execution plan for each SQL statement. Oracle released adaptive feature in Oracle 12c. Adaptive …

smarttechways.com

감사합니다. 

반응형
반응형

오라클 DBMS를 10gR2에서 12cR2로 Migration을 했습니다. 그런데 사설 메일 발송 서비스에서 신규 DBMS에서 접속을 하지 못 하는 'ORA-28040 일치하는 인증 프로토콜 없음.' 이러한 메시지가 나면서 서비스가 이뤄지지 않았습니다.

아래와 같이 Oracle DBMS 12cR2의 sqlnet.ora 파일에 아래와 같이 내용을 수정 및 추가해주고 해결되었습니다.

1. (수정 전)

SQLNET.ALLOWED_LOGON_VERSION_SERVER=9

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9

2. (수정 후)

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

처음에는 어플리케션의 ojdbc6.jar 파일을 다른 파일로 변경을 고려했지만, 위와 같이 설정을 하여 1차적으로 해결하였습니다.

감사합니다.

참고: https://cofs.tistory.com/352

반응형