Database초보우낙

19. 파이썬의 문자열 함수를 이용하여 alert logfile 분석하기 본문

파이썬

19. 파이썬의 문자열 함수를 이용하여 alert logfile 분석하기

오운학 2024. 4. 17. 11:51
복습
1. 파이썬 기초 문법(변수, if문, loop문)
2. 오라클과 파이썬 연동
3. DBA에게 유용한 파이썬 스크립트1 (테이블 스페이스 사용량 시각화)
4. DBA에게 유용한 파이썬 스크립트 2(alert log file을 분석)

alert logfile 을 파이썬에서 불러오는 코드 설명

file = open('C:\\test\\alert_orcl.log', 'r')
text = file.read() file.close()
print(text)

 

파이썬 큰 목차

1. 변수

2. if 문장

3. loof 문장

4. 문자열 함수   <------------현재 진행

5. 리스트 함수

6. 함수생성

7. 모듈 사용법

8. 클래스 생성

 


파이썬의 문자열 함수들 총정리:

1. 문자열.find(’단어’)   : 문자열의 특정 단어의 자리번호를 출력

2. 문자열.index(’단어’)  :  문자열의 특정 단어의 자리번호 출력

3. 문자열.count(’단어’)  : 문자열의 특정 단어가 몇번 나오는지 출력

4. 문자열.split()  : 문자열을 어절별로 분리하여 리스트로 구성하는 함수

5. 문자열.replace(’단어1’, ‘단어2’)  : 문자열에서 '단어1' 을 '단어2' 로 변경

6. 문자열.strip() : 문자열 양쪽에 공백을 제거하는 함수

7. 문자열.upper() : 문자열을 대문자로 변경하는 함수

8. 문자열.lower() : 문자열을 소문자로 변경하는 함수

9. 문자열.title() : 문자열의 첫번째 첫자는 대문자, 나머지는 소문자로 변경하는 함

 

 

 

alert log file 에서 ORA- 로 시작하는 오라클 주요 에러 메세지가 몇개가 있는지 조회하는게 목표입니다.


count

문제1. 문자열 함수 count 를 이용해서 다음의 문자열에서 ‘한달’ 이라는 단어가 몇건인지 출력하시오

a=’보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다’

답: a.count('한달')

a=’보험 실효 개시일은, 보험 계약 이후 한달, 이후 한달한달입니다 한달’

 

 


split

문제2. 다음의 문자열을 리스트로 생성하세요

a='보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다 한달'

a2 = a.split()

print(a2)

 

 


 

문제3. 위에서 만든 리스트 a2 의 요소들을 하나씩 for loop문으로 불러와서 출력하시오 !

a='보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달'
a2 = a.split()  # a 문자열에 어절별로 분리해서 리스트 요소로 구성함
for  i  in  a2:
    print(i)

 


문제4. 위의 결과를 출력할때 문자 뒤에 붙은 콤마(,) 를 제거하시오 !

a='보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달'
a2 = a.split()  # a 문자열에 어절별로 분리해서 리스트 요소로 구성함
for  i  in  a2:
	print(i.strip(',.'))


 

문제5. 위의 코드 if문을 이용해서 a문자열에서 '한달'이라는 단어가 몇번 출현하는지 출력하세요

a='보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달'
a2 = a.split()  # a 문자열에 어절별로 분리해서 리스트 요소로 구성함
cnt = 0         # cnt 변수에 숫자 0 을 할당합니다.
for  i  in  a2:  # a2 리스트의 요소를 하나씩 불러와서 i 에 담습니다.
    if i.strip(',.')=='한달':  # i에 담긴 단어에서 콤마와 점(.)을 제거한 단어가
        cnt = cnt + 1          # 한달이라면 cnt 값을 1 증가 시킵니다.
        
print(cnt)   # cnt 에 누적된 숫자값을 출력합니다.

문제6. 위의 코드를 이용해서 오라클 alert log file에서 오라클 에러가 몇번 출현하는지 출력하시오 !

file = open('C:\\test\\alert_orcl.log', 'r')
text = file.read()
text2 = text.split()  # 문자열을 어절별로 분리해서 text2 리스트를 구성
cnt = 0                #cnt변수에 0을 할당
for i in text2:  #리스트의 요소를 하나씩 불러오는데
    if 'ora-' in i.lower(): #요소를 소문자로 변환하고 그 요소가 ora- 를 포함하면
        cnt = cnt + 1 		#cnt의 값을 1증가
print(cnt)

 

 

 

file = open('C:\\test\\alert_orcl.log', 'r')
text = file.read()

text2 = text.split() # 문자열을 어절별로 분리해서 text2 리스트를 구성
k = [ ]
for  i  in   text2:  # 리스트의 요소를 하나씩 불러오는데
    if 'ora-'  in  i.lower():  # 요소를 소문자로 변환하고 그 요소가 ora- 를 포함하면
        k.append(i)

print(k)

 


 

문제8. k리스트를 df라는 판다스 데이터 프레임으로 만드세요

file = open('C:\\test\\alert_orcl.log', 'r')
text = file.read()

text2 = text.split() # 문자열을 어절별로 분리해서 text2 리스트를 구성
k = [ ]
for  i  in   text2:  # 리스트의 요소를 하나씩 불러오는데
    if 'ora-'  in  i.lower():  # 요소를 소문자로 변환하고 그 요소가 ora- 를 포함하면
        k.append(i)   # k 리스트의 요소로 i 에 들어있는 값을 추가합니다.

import  pandas  as  pd

df= pd.DataFrame( k, columns=['col1'] )  # k 리스트를 가지고 df 라는 판다스 데이터
df                                      # 프레임을 생성하는데 컬럼을 col1 으로 지정

 

 

 

 

하기전에!!! 아나콘다 프롬포트 창을 관리자 권한으로 열고 pandasql모듈을 pip install로 설치하세요
pip install pandasql

 

문제9. pandasql이란느 모듈을 이용해서 sql로 오라클 에러의 주요에러가 몇건 발생했는지 다음과 같이 출력하세요.

 

file = open('C:\\test\\alert_orcl.log', 'r')
text = file.read()

text2 = text.split() # 문자열을 어절별로 분리해서 text2 리스트를 구성
k = [ ]
for  i  in   text2:  # 리스트의 요소를 하나씩 불러오는데
    if 'ora-'  in  i.lower():  # 요소를 소문자로 변환하고 그 요소가 ora- 를 포함하면
        k.append(i)   # k 리스트의 요소로 i 에 들어있는 값을 추가합니다.

import  pandas  as  pd

df= pd.DataFrame( k, columns=['col1'] )  # k 리스트를 가지고 df 라는 판다스 데이터
df                                      # 프레임을 생성하는데 컬럼을 col1 으로 지정

from pandasql import sqldf
pysqldf = lambda q : sqldf(q,globals() )
q = """select col1, count(*)
        from df
        group by col1
        order by 2 desc;"""

pysqldf(q)

ORA-15064 에러는 "인자 'string'의 ASM 디스크가 잘못되었습니다"라는 오라클 ASM (Automatic Storage Management) 오류 메시지입니다. 이 에러는 ASM 디스크가 예상치 못한 방식으로 동작하거나, 데이터가 손상되었거나, 디스크가 더 이상 사용할 수 없을 때 발생할 수 있습니다.

이러한 문제를 예방하려면 다음과 같은 방법들이 있습니다:

  1. 정기적인 디스크 검사를 수행하여 문제가 있는 디스크를 식별하고 교체합니다.
  2. 데이터를 여러 디스크에 중복 저장하는 RAID (Redundant Array of Independent Disks) 구성을 사용하여 하드웨어 장애에 대비합니다.
  3. 데이터 복구를 위한 백업 전략을 구현하고, 정기적으로 백업을 수행합니다.
  4. ASM 디스크 구성 및 운영에 대한 베스트 프랙티스를 따릅니다.

보유기술1. 오라클 alert 로그 파일 분석을 파이썬으로 자동화하여 미래에 생길 장애를 예방하는 파이썬 함수 생성 ←- 서류통과를 위해서 이력서 보유기술에 추가