oracle 之instance recovery

1、设置mttr(两次故障时间间隔)
fast_start_mttr_target=300

2、通过设置checkpoint相关参数
log_checkpoint_interval(checkpoint发生的块数)
log_checkpoint_timeout(checkpoint发生的时间间隔)

3、instance recovery相关视图
v$instance_recovery(相关信息汇总)
v$fast_start_servers(相关slaves进程信息)
v$fast_start_transactions(相关回滚事务信息)

4、恢复时的进程并发数
recovery_parallelism(前滚)可选值为int
fast_start_parallel_rollback(回滚)可选值为string类型:high/low/false

oracle之shared模式配置

1、配置服务器端参数
1.1、必填
dispatchers='(protocol=tcp)(dispatchers=2)’
shared_servers=2
1.2、可选项(均为9i中的默认值)
max_dispatchers=5
max_shared_servers=20
circuits=170
shared_server_sessions=165

2、配置客户端参数
XIFENFEI =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER =SHARED)
(SERVICE_NAME = xifenfei)
)
)
note:
1)DEDICATED为非共享模式,若无指定,默认先用shared
2)shared不能startup、shutdown、backup数据库等操作

3、查看当前会话的服务器模式
select sid,server from v$session where sid in (select sid from v$mystat);
select circuit,dispatcher,status from v$circuit;–只有shared连接记录保存在这个视图中

oracle之网络配置

1、监听程序listener
进入listener:lsnrctl
查看状态:status,重新加载:reload
启动:start listenername(默认(listener)可以不写)
关闭:stop listenername(默认(listener)可以不写)
查看dispatcher状态:services

2、不配置tnsnames.ora直接访问oracle
sqlplus chf/xifenfei@11.1.1.2:1521/xifenfei
sqlplus username/password@ip:port/service_name
注:如果端口是1521(default port可以不指定)

3、使用tnsping检查tns是否正常
tnsping vpc 10
tnsping tnsname(tns名称) count(ping的数量)

oracle之数据库全球化(编码)

1、查看数据库字符集

select * from nls_database_parameters where parameter like '%CHARACTERSET';

2、计算字符长度标准(是按照byte还是按照character)

show parameter NLS_LENGTH_SEMANTICS;
select * from nls_database_parameters where parameter = 'NLS_LENGTH_SEMANTICS';
--note:这个只对char和varchar起作用,nchar、nvarchar、nclob长度是按照character计算

3、插入数据,查看其存入数据的16进制内容和编码

create table t(id int,name varchar2(20),name1 nvarchar2(20));
insert into t values(1,'程飞','程飞');
select dump(name,1016),dump(name1,1016) from t;
--结果
Typ=1 Len=6 CharacterSet=AL32UTF8: e7,a8,8b,e9,a3,9e
Typ=1 Len=4 CharacterSet=AL16UTF16: 7a,b,98,de

4、查询客户端nls相关参数信息

select * from nls_session_parameters;

5、配置nls相关参数
主要是配置NLS_LANGUAGE和NLS_TERRITORY或者配置NLS_LANG实现
5.1、设置NLS_LANG(环境变量级别)

或者使用:

set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

5.2、session级别设置:

alter session set nls_date_format='yyyy-mm-dd';
exec sys.dbms_session.set_nls('nls_date_format','dd.mm.yyyy');

5.3、sql语句级别:

select to_char(sysdate,'yyyy_mm_dd hh24:mi:ss',
'nls_date_language=''SIMPLIFIED CHINESE''') from dual;

note:优先级:sql语句级别>session级别>环境变量级别

六、排序
设置nls_sort决定

--拼音排序
alter session set nls_sort=schinese_pinyin_m;select * from orders order by name;
select * from orders order by nlssort(name,'nls_sort=schinese_pinyin_m');
--笔画排序
alter session set nls_sort=schinese_stroke_m;select * from orders order by name;
select * from orders order by nlssort(name,'nls_sort=schinese_stroke_m');
--汉字部首排序
alter session set nls_sort=SCHINESE_RADICAL_M;select * from orders order by name;
select * from orders order by nlssort(name,'nls_sort=SCHINESE_RADICAL_M');
--note:在sql语句级别的排序上可以使用nls_sort后面value可以使用双"'"表示整体

7、相关视图
nls_database_parameters–数据库初始化文件中的nls信息
nls_session_parameters–当前session中的nls信息
v$nls_valid_values–查看CHARACTERSET、SORT、TERRITORY、LANGUAGE中可以设置的相关参数
v$nls_parameters–对nls_database_parameters和nls_session_parameter中的nls信息的补充

oracle之数据导入

1、inset into select

ALTER TABLE EMP NOLOGGING;--为了使插入时少产生log记录,要修改表,不能直接加nologging

1.1、单线程插入

INSERT /*+ APPEND */ INTO TEST
SELECT * FROM B.TEST;
--加上/*+ APPEND */要比不加这个速度快的多,因为这个直接导入到高水位之后,而且是直接块对块的插入,不用经过复杂的sql转换

1.2、多线程插入

--创建分区表
 create table emp
 (empno number,
 ename varchar2(20))
 partition by hash(empno)
 (partition part1,
 partition part2);
--执行多线程插入
alter session enable parallel dml;
insert /*+ PARALLEL(emp,2) */ into emp
select  OBJECT_ID,TIMESTAMP from all_objects;

2、sql loader
上次服务器被攻击,我导入日志文件使用的是c#程序导入到oracle数据库中
这次使用sql loadr实现
control文件为

load data
infile data.log "str '\n'"
into table gj2
replace
fields terminated by ' '
TRAILING NULLCOLS
(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)

创建对应表

create table gj2(a1 varchar(10),a2 varchar2(10),
a3 varchar2(100),a4 varchar2(100),a5 varchar2(100),a6 varchar2(100),
a7 varchar2(200),a8 varchar2(100),a9 varchar2(100),a10 varchar2(100),
a11 varchar2(200),a12 varchar2(100),a13 varchar2(100), a14 varchar2(100));

执行sql loader

sqlldr b/b control=c:\abc.txt log=log.tx

这个非常方便,很快就把几十万条记录导入到数据库中了,而且直接提出a1和a2列进行分析就可以得到上次通过程序导入到数据库,然后再通过orcale的正则表达式功能选择出时间和ip地址,相比之下这个简单多了,很好用。
原始数据:

2010-07-02 10:55:02 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 221.232.180.193 - 403 1 0
2010-07-02 10:55:04 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 121.35.96.46 - 403 1 0
2010-07-02 10:55:07 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 119.178.8.242 - 403 1 0
2010-07-02 10:55:13 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 124.236.72.63 - 403 1 0
2010-07-02 10:55:13 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 58.60.253.104 - 403 1 0
2010-07-02 10:55:14 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 120.10.3.64 - 403 1 0
2010-07-02 10:55:18 W3SVC689347672 192.168.10.222 HEAD /index.shtml - 80 - 221.196.165.225 - 403 1 0
2010-07-02 10:55:21 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 - 116.16.159.224 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1;+SV1) 200 0 64
2010-07-02 10:55:21 W3SVC689347672 192.168.10.222 GET /anlewwwroot.zip - 80 - 120.84.23.2 Mozilla/4.0 404 0 64
2010-07-02 10:55:22 W3SVC689347672 192.168.10.222 GET /index.shtml - 80 - 122.226.148.190 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 - 122.226.148.190 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 - 202.30.113.101 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 - 58.101.51.214 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 - 58.101.51.214 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

使用sql loader处理后结果:

以前使用c#导入,oracle正则表达式处理日志为:
服务器遭攻击,oracle分析日志