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 | 评论关闭

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分析日志

发表在 Oracle | 评论关闭

程序员打油诗

写字楼里写字间,写字间中程序员
程序人员写程序,又将程序换饭钱
酒醒只在屏前坐,酒醉还来屏下眠
酒醉酒醒日复日,屏前屏下年复年
但愿老死计算机间,不愿鞠躬老板前
奔驰宝马贵者趣,公交自行程序员
别人笑我太疯癫,我笑自己命太贱
但见满街漂亮妹,哪个归得程序员

世人谣传程序员,能得世上不少钱,
换在他国可应验,到及本土只枉然,
不论程序之好坏,只要回扣放于先,
呆呆痴痴扣代码,天天恢恢计算机前,
到了月下一结账,不如配吃一攻关,
每天外行瞎指点,还要穷词去分辩,
早知先丢脸皮尽,混到政府做庸官,
只能奉劝后来者,勿做中国程序员。
宁愿老死程序间,只要老板多发钱;
小车大房不去想,撰个2千元好过年。
若要见识新世面,公务员比程序员;
一个在天一在地,而且还比我们闲。
别人看我穿白领,我看别人穿名牌;
天生我才写程序,臀大近视肩周炎。
年复一年春光度,度得他人做老板;
老板扣我薄酒钱,没有酒钱怎过年.
春光逝去皱纹起,作起程序也委靡;
来到水源把水灌,打死不做程序员.
别人笑我忒疯癫,我笑他人命太贱;
状元三百六十行,偏偏来做程序员。
但愿老死计算机间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员。
若将程员比妓女,一在平地一在天;
若将程员比车马,他得驱驰我无闲。
别人笑我忒疯癫,我笑自己命太贱;
不见满街漂亮妹,哪个归得程序员。
不想只挣打工钱,那个老板愿发钱;
小车大房咱要想,任我享用多悠闲。
比尔能搞个微软,我咋不能捞点钱;
一个在天一在地,定有一日乾坤翻。
我在天来他在地,纵横天下山水间;
傲视武林豪杰墓,一樽还垒风月山。

计算机面前眼发直,眼镜下面泪茫茫;
做梦发财好几亿,从此不用手指忙。
哪知梦醒手空空,老板看到把我训;
待到老时眼发花,走路不知哪是家。
各位在此穷抱怨,可知小弟更可怜;
俺学程序两年半,至今没赚一分钱。
听说三十是末日,二十三岁在眼前;
发誓立志傍微软,渺渺前程对谁言?
小农村里小民房,小民房里小民工;
小民工人写程序,又拿代码讨赏钱。
钱空只在代码中,钱醉仍在代码间;
有钱无钱日复日,码上码下年复年。
但愿老死代码间,不愿鞠躬奥迪前,
奥迪奔驰贵者趣,程序代码是贫者缘。
若将贫贱比贫者,一在平地一在天;
若将贫贱比车马,他得驱驰我得闲。
别人笑我忒疯癫,我笑他人看不穿;
不见盖茨两手间,财权富贵世人鉴。

投身I T英勇无畏,
工作行业看似高贵,
其实生活极其琐碎,
为了生计吃苦受累,
鞍前马后终日疲惫,
客人投诉照死赔罪,
点头哈腰就差下跪,
日不能息夜不能寐,
老板一叫立即到位,
一年到头加班受罪,
劳动法规统统作废,
身心交瘁暗自流泪,
屁大点事反复开会,
逢年过节家人难会,
分分秒秒不敢离位,
迎接审核让人崩溃,
接待应酬经常喝醉,
不伤感情只好伤胃,
工资不高自己交税,
走亲访友还得破费,
抛家舍业愧对长辈,
身在其中方知其味,
不敢奢望社会地位,
全靠傻傻自我陶醉。

发表在 生活娱乐 | 一条评论