• ASM 파일을 Local filesystem으로 복사하기 (archive log file backup)
for j in `cat dlist`
do
for i in $(asmcmd ls +RECO/TESTDB/ARCHIVELOG/$j)
do
asmcmd cp +RECO/TESTDB/ARCHIVELOG/$j/$i /oradump/arch_bak/$j
done
done

dlist 에는 복사할 파일 목록이 들어 있음.

  • ASM 파일을 삭제하기 (archive log file backup)
for j in `cat dlist`
do
for i in $(asmcmd ls +RECO/TESTDB/ARCHIVELOG/$j)
do
asmcmd rm +RECO/TESTDB/ARCHIVELOG/$j/$i
done
done

 

'Oracle > Admin 이슈' 카테고리의 다른 글

sqlplus password version  (0) 2023.11.06
sqlplus 특수문자 패스워드 로그인  (0) 2023.06.02
Sequence reset procedure.  (0) 2023.04.24
DB 구성 체크사항  (16) 2023.04.19
오라클 Alert Log에 사용자 정의 로그 남기기  (0) 2023.03.31

# 시퀀스 네임을 받아 초기 값으로 설정하는 프로시저

CREATE OR REPLACE PROCEDURE RESET_SEQ(P_SEQ IN VARCHAR2)
IS 
L_VAL NUMBER;

BEGIN
    EXECUTE IMMEDIATE
    'SELECT '||P_SEQ||'.NEXTVAL FROM DUAL' INTO L_VAL;
    EXECUTE IMMEDIATE
    'ALTER SEQUENCE '||P_SEQ||' INCREMENT BY -'||L_VAL||' MINVALUE 0';
    
    EXECUTE IMMEDIATE
    'SELECT '||P_SEQ||'.NEXTVAL FROM DUAL' INTO L_VAL;
    EXECUTE IMMEDIATE
    'ALTER SEQUENCE '||P_SEQ||' INCREMENT BY 1 MINVALUE 0;
 END;
 /

※ 초기화 시 반드시 "MINVALUE 0" 로 설정해야 함.

리눅스에서 백스페이스가 안먹을 경우 .bash_profile 수정 이외에 해결방법 공유

 

프로젝트 수행 시 .bash_profile이나 설정 같은걸 임의로 함부로 바꿀 수 없기 때문에 이런식으로 해줘야 한다

 

-- erase 이후 이상하게 입력되는 특수기호 쓰기
stty erase ^?

물론 위에 stty는 접속할 때마다 다시 입력해줘야 한다ㅜㅜ

이게 귀찮다면 shift + backspace 같이 눌러주자!

 

 

'OS > 리눅스' 카테고리의 다른 글

find 명령어 사용  (0) 2023.11.15
포맷에 해당하는 라인만 표시하기  (1) 2023.11.15
서버 모니터링 vmstat 스크립트  (0) 2023.08.28

- Decode, Max를 사용하여 결과를 가로로 표시되게 함.

SELECT
  part,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'01',c_cd)) A1,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'02',c_cd)) A2,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'03',c_cd)) A3,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'04',c_cd)) A4,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'05',c_cd)) A5,
  MAX(decode(substr(d_seq,length(d_seq)-1,2),'06',c_cd)) A6
FROM (
	SELECT 
        'SUAA'||(level+20000000) D_SEQ,
        'SUCH'||level P_CD,
        'SBAA'||level C_CD,
         to_char(sysdate,'YYYY/MM/DD') DT,
        '2' INST,
        'SU' PART,
        '100001' SAL,
        '3' INST1,
        '' ETC,
        '100001' ETC1,
         sysdate T_DT,
        '100001' ETC_CD,
         sysdate U_DT
	FROM dual
	CONNECT BY  level <=6
)
GROUP BY part

'Oracle > SQL작성' 카테고리의 다른 글

REGEXP_LIKE 함수 사용(정규표현식)  (0) 2023.06.02

- 정상적이지 않은 DML 실행시 다음 쿼리 조회후 확인

SELECT B.NAME USEG,
       B.INST# INSTID, 
       B.STATUS$ STATUS, 
       A.KTUXEUSN XID_USN,
       A.KTUXESLT XID_SLOT,
       A.KTUXESQN XID_SEQ,
       A.KTUXESIZ UNDOBLOCKS,
       A.KTUXESTA TXSTATUS
  FROM X$KTUXE A,UNDO$ B
 WHERE A.KTUXECFL LIKE '%DEAD%'
   AND A.KTUXEUSN = B.US#;

alter system dump undo header '_SYSSMU289_1564695500$';

Transaction recovery: lock conflict caught and ignored

-- Alert Log 기록 남기기

SYS.DBMS_SYSTEM.KSDWRT(2,l_message);

1-write to trace file (Trace 파일에만 Message 기록)

2-write to alert log (Alert Log 파일에만 Message 기록)

3-write to both (Trace / Alert Log 파일 모두에 Message 기록)

 

-- 활용예(로그인 실패 로그)

create or replace trigger logon_fail_write_alertlog

AFTER SERVERERROR on database

declare

l_message varchar2(2000); -- 메시지 내용 저장

BEGIN

-- ORA-1017 : invalid username/password; logon denied

IF(IS_SERVERERROR(1017)) THEN

SELECT 'ORA-01017 Failed login attempt to the "'|| sys_context('USERENV','AUTHENTICATED_IDENTITY') ||'" schema'||' using ' ||

sys_context('USERENV','AUTHENTICATION_TYPE') ||' Authentication'||' at '||to_char(logon_time,'YYYY/MM/DD HH24:MI:SS') ||

' from ' ||osuser||'@'||machine||' ['||nvl(sys_context('USERENV','IP_ADDRESS'),'Unknown IP')||']' ||' via the "' ||program||'" program.'

INTO l_message

FROM SYS.V_$SESSION

WHERE SID = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,1,4),'XXXX') AND SERIAL# = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,5,4),'XXXX');

--write to alert log

SYS.DBMS_SYSTEM.KSDWRT(2,l_message);

-- ORA-28000 : the account is locked

elsif (IS_SERVERERROR(28000)) THEN

select 'ORA-28000 the account is locked "'|| sys_context('USERENV','AUTHENTICATED_IDENTITY') ||'" Schema '||' using ' ||

sys_context('USERENV','AUTHENTICATION_TYPE') ||' Authentication'||' at '||to_char(logon_time,'YYYY/MM/DD HH24:MI:SS') ||

' from ' ||osuser||'@'||machine||' ['||nvl(sys_context('USERENV','IP_ADDRESS'),'Unknown IP')||']' ||' via the "' ||program||'" program.'

INTO l_message

FROM SYS.V_$SESSION

WHERE SID = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,1,4),'XXXX') AND SERIAL# = TO_NUMBER(SUBSTR(DBMS_SESSION.UNIQUE_SESSION_ID,5,4),'XXXX');

--write to alert log

SYS.DBMS_SYSTEM.KSDWRT(2,l_message);

END IF;

END;

/

'Oracle > Admin 이슈' 카테고리의 다른 글

sqlplus password version  (0) 2023.11.06
sqlplus 특수문자 패스워드 로그인  (0) 2023.06.02
ASM 내 파일 복사 / 삭제 하기  (0) 2023.06.02
Sequence reset procedure.  (0) 2023.04.24
DB 구성 체크사항  (16) 2023.04.19

+ Recent posts