oracle之存储体系

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle之存储体系

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

(1) 数据库由一个或多个表空间组成
(2) 表空间由一个或多个数据文件组成。这些文件可以是文件系统中的cooked 文件、原始分区、ASM管理的数据库文件,或集群文件系统上的文件。表空间包含段。
(3) 段(TABLE、INDEX 等)由一个或多个区段组成。段在表空间中,但是可以包含这个表空间中多个数据文件中的数据。
(4) 区段是磁盘上一组逻辑连续的块。区段只在一个表空间中,而且总是在该表空间内的一个文件中。
(5) 块是数据库中最小的分配单位,也是数据库使用的最小I/O 单位。
(6)oracle中的块是操作系统物理块的整数倍

oracle之trace file

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle之trace file

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、设置SQL_TRACE=TRUE,服务器就会生成一个包含性能相关信息的跟踪文件。
2、跟踪文件位置:
如果使用专用服务器连接,会在USER_DUMP_DEST 参数指定的目录中生成跟踪文件;
如果使用共享服务器连接,则在BACKGROUND_DUMP_DEST 参数指定的目录中生成跟踪文件。
可以通过SHOW PARAMETER DUMP_DEST或者select name, value from v$parameter where name like ‘%dump_dest%’来查询
3、获得跟踪文件名(标准格式:_ora_.trc):

select d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name
from (select p.spid
from v$mystat m, v$session s,v$process p
where m.statistic# = 1 and
s.sid = m.sid and
p.addr = s.paddr ) p,
( select t.instance
from v$thread t,v$parameter v
where v.name = 'thread' and
(v.value = 0 or t.thread# = to_number(v.value))) i,
( select value from v$parameter where name = 'user_dump_dest') d;

oracle之spfile

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle之spfile

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、在修改spfile命令如:
Alter system set parameter=value <comment=’text’> <deferred>
<scope=memory|spfile|both> <sid=’sid|*’>
说明:comment表示说明,deferred表示重启后生效
2、查询哪些参数在修改时,必须使用deferred参数
select name from v$parameter where issys_modifiable=’DEFERRED’;
在10g中的结果是:
backup_tape_io_slaves
audit_file_dest
object_cache_optimal_size
object_cache_max_size_percent
sort_area_size
sort_area_retained_size
olap_page_pool_size
3、取消spfile中值的设置
Alter system reset parameter sid=’sid|*’
说明:这里的sid不能省略
4、查看oracle使用spfile还是pfile
Select isspecified,count(*) from v$spparameter group by isspecified;
如果isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动

服务器遭攻击,oracle分析日志

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:服务器遭攻击,oracle分析日志

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

今天公司服务器出现问题,经过启动日志功能,分析日志,大概确定是dos攻击
部分日志如下:

2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml -  80 - 121.204.33.120  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  114.41.216.107 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1)  200 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 221.15.37.5  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  114.41.216.107 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1)  200 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 114.41.216.107  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  114.41.216.107 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1)  200 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 114.41.216.107  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  222.81.14.4 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0  64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 180.126.191.98  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  117.15.210.226 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1)  200 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 121.204.33.120  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02  10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 -  112.122.131.60 Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1)  200 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET  /index.shtml - 80 - 118.77.181.47  Mozilla/4.0(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64

日志文件实在太多了,最后几分钟都就有20m左右,我们肉眼看上去,没有什么规律可寻的,我决定采用oracle数据帮我们分析
建表如下:
get   varchar2(3000)–保存日志中的一条记录
ip varchar2(15)–保存日志中请求服务器的ip地址(分析的重点)
gettime varchar2(20)  –保存时间(本来有date类型的,不知道为什么,和后面的proc中的程序有的冲突,我也不想改存储过程了,就先改了这个,有时间再想想程序)
第一步:通过net把.log 的日志文件中的数据导入到db的dos_gj中的get列中,程序如下:

string txt = Show_page("log.log");
string[] aba = txt.Replace("\r\n", "@").Split('@');
for (int i = 0; i < aba.Length; i++)
{
OracleHelper.ExecuteNonQuery(OracleHelper.
ConnectionStringLocalTransaction,
System.Data.CommandType.Text,
"insert into dos_gj(get) values (:abc)", new OracleParameter("abc", aba[i]));
}

//读取文件的 Show_page()函数就不放出来了

大概半个多小时,20m文件的数据,全部分条导入到数据中,统计,一共近20w条
第二步:使用proc对这些数据进行分析:
proc如下 :

create or replace
procedure dos_fx
is
cursor c1 is
select get from dos_gj;
begin
for c2 in c1 loop
update dos_gj set
ip=REGEXP_SUBSTR( get, '(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3} '),
gettime=REGEXP_SUBSTR( get, '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}') where get=c2.get;
end loop;
commit;
end;
exec  dos_fx;

不知道什么原因,执行了快两个小时了,现在还是在执行中,我现在怀疑在oracle中cursor +正则表达式+update,执行效率正的很低啊,才20w条数据,执行了2个小时,还没有结果,郁闷,在等待中……
这些对oracle有点无语了,害的我现在还不能睡觉,等在电脑面前,早知道就用ms sql了,听说 2005也支持正则功能了。继续等待(2010年7月3日2:04:58),这个效率,这个速度有点无语哦,听说oracle速度很快,我还得好好学习 哦。等了两个多小时就是学艺不精的后果。
最后想想这个update table的思路不行,新建了一张,使用了新的存储过程(insert)

create or replace procedure dos_fx
is
cursor c1 is
select get from dos_gj;
begin
for c2 in c1 loop
insert into dos_gj_1(ip,gettime,get)values(REGEXP_SUBSTR( c2.get,  '(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}  '),
REGEXP_SUBSTR( c2.get, '^(\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2})'),c2.get);
end loop;
commit;
end;

同上表,然后执行insert操作,考虑到sql dev占用内存太大,这次使用了pl/sql dev操作,结果使用了1分钟37秒就完成了近20w的数据的操作,这才是oracle的本色啊,O(∩_∩)O哈哈~。
现在想想,应该是刚刚前面的update那种操作导致了数据库死锁导致无限的等待。

好了,数据从log文件,到数据库里面,已经数据提取成功,剩下的就是相关统计的oracle了
统计ip攻击情况

不到一个小时的攻击的结果大概如上图,任务大概完成,先睡觉去,明天继续分析