while True: print(""" === dba 작업을 편하게 수행하기 위한 스크립트 총모음 ====
0. 프로그램을 종료하려면 0번을 누르세요. 1. alert log file 을 분석해서 로그 스위치 주기 확인 2. alert log file에서 가장 많이 나오는 에러번호와 그 건수 확인 3. fast recovery area영역의 사용율을 확인하려면 3번을 누르세요 4. tablespace의 사용량을 확인하려면 4번을 누르세요 """)
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 = "/home/oracle/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() import pandas as pd 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: 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;""" print(pysqldf(q)) break elif num == 3: import paramiko
# 리눅스 서버 정보 hostname = '192.168.56.104' username = 'oracle' password = 'oracle'
# bash 스크립트의 경로 script_path = "/home/oracle/fra.sh"
# SSH 클라이언트 객체 생성 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname, username=username, password=password)
# bash 스크립트를 실행 stdin, stdout, stderr = ssh.exec_command(f'sh {script_path}')
# 결과 읽기 output = stdout.read().decode('utf-8')
# 에러 메시지 읽기 error = stderr.read().decode('utf-8')
# 줄바꿈 문자를 기준으로 문자열을 분할하여 리스트로 변환 output_list = output.split('\n') if output_list[-1] == '': output_list.pop()
# 결과 리스트 출력 print(output_list[0])
## 원형 그래프 그리는 코드
import matplotlib.pyplot as plt # 그래프 그리는 전문 모듈
# 사용된 FRA 비율 used_percentage = float(output_list[0])
# 원형 그래프 데이터 sizes = [used_percentage, 100 - used_percentage] # 사용된 부분과 남은 부분 labels = ['Used', 'Free'] colors = ['#ff9999','#66b3ff'] # 색상 선택
# 원형 그래프 생성 (여기서 그래프 크기를 조정합니다) plt.figure(figsize=(4, 4)) # 그래프 크기를 작게 설정 (이전에는 7x7이었음) plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90) plt.axis('equal') # 원형 유지를 위해 같은 축 스케일 사용
# 원형 그래프 표시 plt.title('Oracle Fast recovery area usage') plt.show() break elif num == 4: import paramiko import matplotlib.pyplot as plt
# 리눅스 서버 정보 hostname = '192.168.56.104' username = 'oracle' password = 'oracle'
# bash 스크립트의 경로 script_path = "/home/oracle/ts2.sh"
# SSH 클라이언트 객체 생성 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname, username=username, password=password)
# bash 스크립트를 실행 stdin, stdout, stderr = ssh.exec_command(f'sh {script_path}')
# 결과 읽기 output = stdout.read().decode('utf-8') a = output.strip().split('\n') a3 = a[2:]
data = [] for i in a3: data.append( ( i.split()[0], i.split()[1]) )
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, len(data), figsize=(10,3) )
for i , (name, percent) in enumerate(data): axes[i].pie([percent,100- float(percent)], labels=['Used','Free'], autopct='%1.1f%%', colors=['#2EEFD9','#EF88BE']) axes[i].set_title(name) break |