已oracle为例(sql语句见文末:根据自己的修改,比如PDB名字,保存的位置等):
查看的内容大概是这样的
不会的可已用以下shell脚本跑 (shell脚本见文末,github打不开现在.....)
效果如下(我的全是系统表空间,生产上使用的时候注意把单位换成G 好看些):
alter session set container=OGGSPDB;
set feedback off;
set pagesize 0;
set linesize 9999;
set termout off;
set heading off;
set echo off;
set trimspool on;
spool ./result/PDB_OGGSPDB_TABLESPACE_30DAYS_CHANGE.txt;
select a.name, b.*
from v$tablespace a,
(select tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss')) datetime,
max(tablespace_usedsize * 8 / 1024) used_size
from dba_hist_tbspc_space_usage
where trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss')) >
trunc(sysdate - 30)
group by tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'))
order by tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'))) b
where a.ts# = b.tablespace_id order by name,datetime;
spool off;
#!/bin/env bash
#write by ddcw at 20200421
for i in $@
do
csv=$(echo $i | awk -F .txt '{print $1}').csv
cat /dev/null > $csv
while read line
do
echo $line | awk '{for(i=1;i<=NF;i++){printf "\""$i"\","}}' >> $csv
echo '' >> $csv
done < $i
sed -i 's/\(.*\)\(.\)/\1/g' $i
done
import csv
import matplotlib.pyplot as plt
# old_tablespace_name='SYSTEM'
old_tablespace_name=''
date_one_month=list(range(30))
day_x=[]
days=0
min_size=99999999
max_size=0
total_change=0
used_size=[]
first_day_size=-1
last_day_size=0
#for your csv file about TABLESPACE CHANGE
with open('.//result//PDB_OGGSPDB_TABLESPACE_30DAYS_CHANGE.csv', 'r') as f:
reader = csv.reader(f)
t = reader
t=0
for inx,row in enumerate(reader):
if inx == 0 :
old_tablespace_name=str(row[0])
if first_day_size == -1:
first_day_size=float(row[3])
if row[0]==old_tablespace_name:
used_size.append(float(row[3]))
old_tablespace_name=str(row[0])
day_x.append(row[2].split('-')[0])
if max_size < float(row[3]):
max_size = float(row[3])
if min_size > float(row[3]):
min_size = float(row[3])
last_day_size=float(row[3])
days += 1
else:
total_change += last_day_size-first_day_size
plt.plot(day_x,used_size,label='SIZE/DAYS AVG '+str(round((last_day_size-first_day_size)/days ,2))+' MB')
plt.legend()
plt.title(old_tablespace_name+' +'+str(round(last_day_size-first_day_size ,2))+' MB',fontsize = 24)
plt.ylabel("SIZE_MB",fontsize = 14)
plt.xlabel("IN "+str(days)+" DAYS",fontsize = 14)
plt.show()
#init parameters
days=0
min_size=99999999999999
max_size=0
day_x=[]
day_x.append(row[2].split('-')[0])
first_day_size=float(row[3])
used_size=[]
used_size.append(float(row[3]))
first_day_size=-1
days += 1
old_tablespace_name=str(row[0])
# plt.legend()
print('TOTAL CHANGE:',round(total_change,2),'GB')
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。