import pandas as pd import matplotlib.pyplot as plt import numpy as np
while True: print( """ === dba 작업을 편하게 수행하기 위한 스크립트 총모음 ====
0. 프로그램을 종료하려면 0번을 누르세요. 1. alert log file 을 분석해서 로그 스위치 주기 확인 2. alert log file에서 발생한 오라클 에러번호와 건수 확인
""")
num = int( input('원하는 번호를 입력하세요 ~' ) ) if num == 0: break elif num ==1: import paramiko # SSH 접속을 위한 라이브러리를 임폴트 합니다.
# 리눅스 서버 정보 hostname = '192.168.56.104' # 서버의 접속 가능한 IP 주소 username = 'oracle' # 접속할 유져명 password = 'oracle' # 접속할 유져의 패스워드 # bash 스크립트의 경로 script_path = "/u01/app/oracle/diag/rdbms/orcl/orcl/trace/a.sh" # 실행할 bash 스크립트의 경로입니다. # SSH 클라이언트 객체 생성 ssh = paramiko.SSHClient() # ssh 클라이언트 객체를 생성합니다. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # host key policy 를 자동으로 추가하도록 설정합니다. # 리눅스 서버에 접속 ssh.connect(hostname, username=username, password=password) # bash 스크립트를 실행하고 그 결과를 저장합니다. stdin, stdout, stderr = ssh.exec_command(f'sh {script_path}') # 결과를 바이트에서 문자열로 디코드 output = stdout.read().decode('utf-8') # 줄바꿈 문자를 기준으로 문자열을 분할하여 리스트로 변환 output_list = output.split('\n') # 마지막 요소가 빈 문자열일 경우 제거 if output_list[-1] == '': output_list.pop() df = pd.DataFrame( output_list, columns=['col1']) df['col1'] = pd.to_datetime(df['col1']) # 문자형을 날짜형으로 변환합니다. df['time_diff'] = df['col1'].diff() # time_diff 라는 컬럼을 추가하는데 print(df) break elif num ==2: with open('C:\\Users\\itwill\\Desktop\\alert_orcl.log', 'r') as file: alert = file.read() file.close() alert2 = alert.split() # alert 문자열에 어절별로 분리해서 리스트 요소로 구성함 k = []
for i in alert2: if 'ora-' in i.lower(): k.append(i)
df = pd.DataFrame( k, columns = ['col1']) # k 리스트를 가지고 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; """ print(pysqldf(q)) break |