ct_deletepartition.pl 刪除電信分割槽
#!/usr/bin/perl
$ENV{'ORACLE_HOME'}='/oracle/product/10.2.0.1';
$ENV{'PATH'}="/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/bin:$ENV{'ORACLE_HOME'}/bin";
$ENV{'TERM'}='vt100';
our $warehouse='ct_warehouse/ct_warehouse@192.168.1.14/XXXdb.center.XXX.com.cn';
our %station= (
'SMSG_LOGS' => {
'192.168.64.jiangsu' => ['ct_jiangsu/xxx@192.168.64.13/XXXdb',3,'JIANGSU'],
'192.168.64.shandong' => ['ct_shandong/xxx@192.168.64.13/XXXdb',3,'SHANDONG'],
'192.168.64.hubei' => ['ct_hubei/xxx@192.168.64.13/XXXdb',3,'HUBEI'],
'192.168.64.shan3xi' => ['ct_shan3xi/xxx@192.168.64.13/XXXdb',3,'SHAN3XI'],
'192.168.64.shanghai' => ['ct_shanghai/xxx@192.168.64.13/XXXdb',3,'SHANGHAI'],
'192.168.52.beijing' => ['ct_beijing/xxx@192.168.52.13/XXXdb',3,'BEIJING'],
'192.168.52.TIANJIN' => ['ct_tianjin/xxx@192.168.52.13/XXXdb',3,'tianjin'],
'192.168.52.liaoning' => ['ct_liaoning/xxx@192.168.52.13/XXXdb',3,'LIAONING'],
'192.168.52.henan' => ['ct_henan/xxx@192.168.52.13/XXXdb',3,'HENAN'],
'192.168.52.hebei' => ['ct_hebei/xxx@192.168.52.13/XXXdb',3,'HEBEI'],
'192.168.52.sichuan' => ['ct_sichuan/xxx@192.168.52.13/XXXdb',3,'SICHUAN'],
'192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.13/XXXdb',3,'GUANGZHOU'],
'192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.13/XXXdb',3,'GUANGZHOU'],
'192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.13/XXXdb',3,'FUZHOU'],
'192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.13/XXXdb',3,'FUZHOU'],
'192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.13/XXXdb',3,'HAINAN'],
'192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.13/XXXdb',3,'HAINAN'],
'192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.13/XXXdb',3,'JIANGXI'],
'192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.13/XXXdb',3,'JIANGXI'],
'192.168.55.yunnan' => ['ct_yunnan/xxx@192.168.55.13/XXXdb',3,'YUNNAM'],
'192.168.55.yunnan' => ['ct_yunnan/xxx@192.168.55.13/XXXdb',3,'YUNNAM'],
# '192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.14/XXXdb',3,'GUANGZHOU'],
# '192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.14/XXXdb',3,'GUANGZHOU'],
# '192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.14/XXXdb',3,'FUZHOU'],
# '192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.14/XXXdb',3,'FUZHOU'],
# '192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.14/XXXdb',3,'HAINAN'],
# '192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.14/XXXdb',3,'HAINAN'],
# '192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'JIANGXI'],
# '192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'JIANGXI'],
# '192.168.55.yunnan' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'YUNNAM'],
# '192.168.55.yunnan' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'YUNNAM'],
}
);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
my $date_id=sprintf "%d%02d%02d",$year+1900,$mon+1,$mday;
$ENV{'ORACLE_HOME'}='/oracle/product/10.2.0.1';
$ENV{'PATH'}="/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/bin:$ENV{'ORACLE_HOME'}/bin";
$ENV{'TERM'}='vt100';
our $warehouse='ct_warehouse/ct_warehouse@192.168.1.14/XXXdb.center.XXX.com.cn';
our %station= (
'SMSG_LOGS' => {
'192.168.64.jiangsu' => ['ct_jiangsu/xxx@192.168.64.13/XXXdb',3,'JIANGSU'],
'192.168.64.shandong' => ['ct_shandong/xxx@192.168.64.13/XXXdb',3,'SHANDONG'],
'192.168.64.hubei' => ['ct_hubei/xxx@192.168.64.13/XXXdb',3,'HUBEI'],
'192.168.64.shan3xi' => ['ct_shan3xi/xxx@192.168.64.13/XXXdb',3,'SHAN3XI'],
'192.168.64.shanghai' => ['ct_shanghai/xxx@192.168.64.13/XXXdb',3,'SHANGHAI'],
'192.168.52.beijing' => ['ct_beijing/xxx@192.168.52.13/XXXdb',3,'BEIJING'],
'192.168.52.TIANJIN' => ['ct_tianjin/xxx@192.168.52.13/XXXdb',3,'tianjin'],
'192.168.52.liaoning' => ['ct_liaoning/xxx@192.168.52.13/XXXdb',3,'LIAONING'],
'192.168.52.henan' => ['ct_henan/xxx@192.168.52.13/XXXdb',3,'HENAN'],
'192.168.52.hebei' => ['ct_hebei/xxx@192.168.52.13/XXXdb',3,'HEBEI'],
'192.168.52.sichuan' => ['ct_sichuan/xxx@192.168.52.13/XXXdb',3,'SICHUAN'],
'192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.13/XXXdb',3,'GUANGZHOU'],
'192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.13/XXXdb',3,'GUANGZHOU'],
'192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.13/XXXdb',3,'FUZHOU'],
'192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.13/XXXdb',3,'FUZHOU'],
'192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.13/XXXdb',3,'HAINAN'],
'192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.13/XXXdb',3,'HAINAN'],
'192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.13/XXXdb',3,'JIANGXI'],
'192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.13/XXXdb',3,'JIANGXI'],
'192.168.55.yunnan' => ['ct_yunnan/xxx@192.168.55.13/XXXdb',3,'YUNNAM'],
'192.168.55.yunnan' => ['ct_yunnan/xxx@192.168.55.13/XXXdb',3,'YUNNAM'],
# '192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.14/XXXdb',3,'GUANGZHOU'],
# '192.168.55.guangzhou' => ['ct_guangzhou/xxx@192.168.55.14/XXXdb',3,'GUANGZHOU'],
# '192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.14/XXXdb',3,'FUZHOU'],
# '192.168.55.fuzhou' => ['ct_fuzhou/xxx@192.168.55.14/XXXdb',3,'FUZHOU'],
# '192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.14/XXXdb',3,'HAINAN'],
# '192.168.55.hainan' => ['ct_hainan/xxx@192.168.55.14/XXXdb',3,'HAINAN'],
# '192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'JIANGXI'],
# '192.168.55.jiangxi' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'JIANGXI'],
# '192.168.55.yunnan' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'YUNNAM'],
# '192.168.55.yunnan' => ['ct_jiangxi/xxx@192.168.55.14/XXXdb',3,'YUNNAM'],
}
);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
my $date_id=sprintf "%d%02d%02d",$year+1900,$mon+1,$mday;
open(LOGFILE, ">/home/oracle/admin/dailycheck/ct_delete_partition$date_id.log");
printf LOGFILE "this script. start at %04d-%02d-%02d %02d:%02d:%02d\n\n",$year+1900,$mon+1,$mday,$hour,$min,$sec;
printf LOGFILE "this script. start at %04d-%02d-%02d %02d:%02d:%02d\n\n",$year+1900,$mon+1,$mday,$hour,$min,$sec;
foreach $table (keys(%station))
{
printf LOGFILE "drop table $table partition:
\n";
foreach $ip (sort keys %{$station{$table}} )
{
$connstr=$station{$table}{$ip}[0];
$days=$station{$table}{$ip}[1];
$station_id=$station{$table}{$ip}[2];
delte_partition($ip,$connstr,$table,$days,$station_id);
}
}
close LOGFILE;
@ARGV=("/home/oracle/admin/dailycheck/ct_delete_partition$date_id.log");
$^I =".bak";
while (<>)
{
s/^([A-Z]*\n)/$1
\n/;
s/P\d+/$&/g;
s/\n/
\n/;
print ;
}
`cat /home/oracle/admin/dailycheck/ct_delete_partition$date_id.log| formail -I "From:oracle\@warehousep" -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Content-Language:zh-cn" -I 'Subject:'µçП÷¹¤×÷Õ¾SMSG_LOGS±í·ÖÇøɾ³ýÈÕÖÖ¾| /usr/sbin/sendmail -oi oracle_ops\@7500.com.cn`;
#---------------delete__partition.sh-----------------------------------#
#-- delte station($ip) partition before $days days -#
#-- the default partition peridor is week.if you want change the -#
#-- default period plz change the SQL -#
#-- author: zhaoxin -#
#-- -#
#----------------------------------------------------------------------#
sub delte_partition {
if(@_!=5){die "THE PARAMETER NOT EQULE 5 ";}
my ($ip,$connstr,$table,$days,$station_id)=@_;
my $sql;
{
printf LOGFILE "drop table $table partition:
\n";
foreach $ip (sort keys %{$station{$table}} )
{
$connstr=$station{$table}{$ip}[0];
$days=$station{$table}{$ip}[1];
$station_id=$station{$table}{$ip}[2];
delte_partition($ip,$connstr,$table,$days,$station_id);
}
}
close LOGFILE;
@ARGV=("/home/oracle/admin/dailycheck/ct_delete_partition$date_id.log");
$^I =".bak";
while (<>)
{
s/^([A-Z]*\n)/$1
\n/;
s/P\d+/$&/g;
s/\n/
\n/;
print ;
}
`cat /home/oracle/admin/dailycheck/ct_delete_partition$date_id.log| formail -I "From:oracle\@warehousep" -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Content-Language:zh-cn" -I 'Subject:'µçП÷¹¤×÷Õ¾SMSG_LOGS±í·ÖÇøɾ³ýÈÕÖÖ¾| /usr/sbin/sendmail -oi oracle_ops\@7500.com.cn`;
#---------------delete__partition.sh-----------------------------------#
#-- delte station($ip) partition before $days days -#
#-- the default partition peridor is week.if you want change the -#
#-- default period plz change the SQL -#
#-- author: zhaoxin -#
#-- -#
#----------------------------------------------------------------------#
sub delte_partition {
if(@_!=5){die "THE PARAMETER NOT EQULE 5 ";}
my ($ip,$connstr,$table,$days,$station_id)=@_;
my $sql;
#ɾ³ýÏÂÃæÒ»ÐÐ
#print $ip,$connstr,$table,$days,$station_id,"\n\n";
#print $ip,$connstr,$table,$days,$station_id,"\n\n";
print LOGFILE "$station_id\n";
my @partitionlist=`sqlplus -s /nolog <
set line 200
set feedback off
set pagesize 10000
set head off
SELECT partition_name
FROM user_tab_partitions
WHERE UPPER (table_name) LIKE UPPER ('$table')
AND SYSDATE - TO_DATE (SUBSTR (partition_name, 2, 9), 'yyyymmdd') > $days
and length(partition_name)=9;
exit
EOF
`;
chomp(@partitionlist);
if (@partitionlist<2)
{
print LOGFILE "$ip: There is no partition need to drop before $days days now \n";
return;
};
print LOGFILE "can drop partition is :@partitionlist\n";
for ($i=1;$i<=$#partitionlist;$i++)
{
#ɾ³ýÏÂÃæÒ»ÐÐ
#print $partitionlist[$i],"\n";
{
#ɾ³ýÏÂÃæÒ»ÐÐ
#print $partitionlist[$i],"\n";
my @l_record_cnt=`sqlplus -s /nolog <connect $connstr
set line 200
set feedback off
set head off
select count(*) from $table partition($partitionlist[$i]);
exit
EOF
`;
chomp @l_record_cnt;
$l_record_cnt[1]=~s/\s//g;
my $table_arch=$table.'_arch';
my @g_record_cnt=`sqlplus -s /nolog <connect $warehouse
set line 200
set feedback off
set head off
SELECT COUNT (*)
FROM $table_arch subpartition ($partitionlist[$i]_$station_id);
exit
EOF
`;
chomp @g_record_cnt;
$g_record_cnt[1]=~s/\s//g;
print LOGFILE "partition $partitionlist[$i] record on station is:$l_record_cnt[1]\t";
print LOGFILE " on warehouse is:$g_record_cnt[1]\n";
set line 200
set feedback off
set head off
select count(*) from $table partition($partitionlist[$i]);
exit
EOF
`;
chomp @l_record_cnt;
$l_record_cnt[1]=~s/\s//g;
my $table_arch=$table.'_arch';
my @g_record_cnt=`sqlplus -s /nolog <
set line 200
set feedback off
set head off
SELECT COUNT (*)
FROM $table_arch subpartition ($partitionlist[$i]_$station_id);
exit
EOF
`;
chomp @g_record_cnt;
$g_record_cnt[1]=~s/\s//g;
print LOGFILE "partition $partitionlist[$i] record on station is:$l_record_cnt[1]\t";
print LOGFILE " on warehouse is:$g_record_cnt[1]\n";
if ($g_record_cnt[1]==$l_record_cnt[1] && $g_record_cnt[1]=~/^\d/)
{
my $feedback=`sqlplus -s /nolog <connect $connstr
alter table $table drop partition $partitionlist[$i];
exit
EOF
`;
if($feedback=~m/Table altered/g)
{print LOGFILE "drop successful\n "; }
else
{print LOGFILE "$feedback
";}
{
my $feedback=`sqlplus -s /nolog <
alter table $table drop partition $partitionlist[$i];
exit
EOF
`;
if($feedback=~m/Table altered/g)
{print LOGFILE "drop successful\n "; }
else
{print LOGFILE "$feedback
";}
}
else
{print LOGFILE "The record is not equal PLZ check*****\n";}
else
{print LOGFILE "The record is not equal PLZ check*****\n";}
####################end
}
return;
}
return;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-754620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 電腦硬碟分割槽要注意什麼,刪除硬碟分割槽的注意事項硬碟
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- win10 oem分割槽怎麼刪除_win10 oem分割槽可以刪除嗎Win10
- ORACLE刪除-表分割槽和資料Oracle
- win10分割槽好了怎麼刪除_win10分割槽完後如何刪除Win10
- SQL Server表分割槽刪除詳情DSCCSQLServer
- windows10分割槽無法刪除怎麼辦_win10系統磁碟刪除分割槽的方法WindowsWin10
- win10刪除系統保留分割槽如何操作_win10刪除系統保留分割槽怎麼處理Win10
- 如何在 macOS Monterey(SSD 或 HDD)中刪除 Mac 分割槽Mac
- win10系統OEM分割槽怎麼合併或刪除Win10
- 電腦分割槽桌布超清 電腦桌面桌布工作分割槽高清圖
- SQL SERVER資料庫檔案刪除、分割槽格式化解決方案SQLServer資料庫
- 刪除EFI系統分割槽(ESP)後Windows無法啟動,重建引導分割槽並修復啟動的過程Windows
- 刪除雙系統誤修改Win11 EFI分割槽的解決方案
- 電腦分割槽桌布超清 電腦桌面桌布工作分割槽高畫質圖
- Linux分割槽方案、分割槽建議Linux
- Linux下swap(交換分割槽)的增刪改Linux
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- hpz420系統盤安裝win10無法刪除分割槽表解決方法Win10
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- oracle分割槽表和非分割槽表exchangeOracle
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- win10系統硬碟分割槽無法格式化也刪除不了如何解決Win10硬碟
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- openGauss 分割槽
- mysql 分割槽MySql
- 分割槽Partition
- lvs 分割槽
- Kafka 分割槽Kafka
- 電腦硬碟分割槽表損壞怎麼修復?電腦硬碟分割槽表損壞的修復方法硬碟
- Hive的靜態分割槽與動態分割槽Hive
- Linux 新增LVM分割槽及LVM分割槽擴容LinuxLVM
- MySql資料分割槽操作之新增分割槽操作MySql
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- Oracle12c:建立主分割槽、子分割槽,實現自動分割槽插入效果Oracle
- WIN10安裝我們無法刪除所選分割槽怎麼辦 win10安裝無法格式化所選分割槽解決方法Win10