避免使用Oracle的char类型
尽量避免使用Oracle的char类型,即使只有一个字节,也应该使用varchar2类型。char的缺点主要有两个1.占用空间大 如果声明一个char(10)的字段,仅仅使用了一个字节,剩余的9个字节也会使用空格补齐。 create table a( id c...
使用组合索引处理包含空值的查询
字段不全为空的行可以被索引如果有这样一种需求,尚未处理的单据,该列为null。已经处理的单据,则将处理人的ID更新到该列。那么查询尚未处理的单据,就需要查询该列为null的行。处理这个需求,除了函数索引,还可以使用组合索引。假设处理人的那个字段就是测试表中的ID字段。create table test(...
URIEncoding和useBodyEncodingForURI详解
之前关于编码的问题已经总结过两次了,有些地方写的很粗略。http://blog.itpub.net/29254281/viewspace-775925/http://blog.itpub.net/29254281/viewspace-1063133/Tomcat解决请求乱码可以使用URIEncoding和useBodyEncodingForURI.下面是两个参数的具体说明,参见ApacheTomcat官方手册。URIEncoding...
使用Sign统计范围问题
有一个学生表,有id和分数两列。低于60分为不及格低于75分为及格低于85分为良高于85分为优数据初始化。create table student( student_id number, grade number);insert into student select rownum,ro...
删除redo所有日志,数据库无法启动
半夜在itpub上看到有人发贴,说不小心删除了redo所有日志,导致数据库无法启动,因此模拟了一下。 如下:OS: Oracle Linux Server release 5.7DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production[oracle@yoon yoon]$ lscontrol01.ctl redo01.log&...
Apache配置反向代理、负载均衡和集群(mod_proxy方式)
Apache配置负载均衡和集群使用mod_jk的方式比较多。但是mod_jk已经停止更新,并且配置相对复杂。Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多。1.Apache配置反向代理 正向代理一般是指PC连接到代理服务器,由代理服务器转发请求到网站。而反向代理指的是用户将请求发送...
Oracle修改数据字符集
今天一个同事遇到一个问题。他们的数据库是GBK编码的,但是因为测试的原因,需要使用UTF8编码。但是原来数据库中的数据需要保留。解决过程:1.导出源数据库数据2.修改编码3.将数据倒回导入和导出的过程并不需要指定编码,Oracle会根据数据库的编码自动转换。下面的实验验证数据库会自动转换编码1.创建实验表和数...
【MV】物化视图查询重写
所谓物化视图查询重写就是,如果初始化参数query_rewrite_enabled设置为TRUE,并且数据库运行在CBO优化模式下,当对基表进行查询时,Oracle会自动判断是否能利用这个基表的所有包含ENABLE QUERY REWRITE关键...
回滚表空间切换实验
缩小回滚表空间http://blog.itpub.net/29254281/viewspace-1067212/切换回滚表空间的时候,猜测两种方式第一种,复制旧的回滚表空间数据到新的回滚表空间第二种,新的事物使用新的回滚表空间,旧的事物使用旧的回滚表空间实验,使用终端A,开始一个很大的事物;使用另一个终端B,切换回滚表空间终端A,可以看到当...
收缩Oracle数据文件
在开发和测试的环境中,数据经常大规模插入、删除,最后导致数据文件很大,磁盘空间很紧张。因为实际的数据占用的空间并不多,所以可以考虑收缩数据文件。实验模拟创建了一张很大的表,然后删除绝大部分数据,然后收缩数据文件和回滚表空间。create table test ( &nbs...
使用索引消除排序
索引是有顺序的,如果一个查询使用索引,可以利用索引的顺序读取数据,这样可以消除OrderBy的排序。 前提:索引列的顺序和OrderBy的顺序完全一致 实验使用Hr模式的Employees表,查询某个工种(job_id)的所有员工,并且按照入职时间降序排列。查看索引对排序的影响。cre...
删除从未使用的索引
平时创建的索引,因为种种原因、场景考虑不全,根本没有使用过。等到生产环境实际部署,这些索引没有任何作用,还影响数据插入的效率。所以,在功能测试和性能测试阶段,可以打开索引监控,找到这些从未使用过的索引。分析这些索引没有使用的原因,并且删除。1.在全面测试之前,开启索引监控select 'alter i...
在JAR包中内嵌页面资源
有时候使用JAVA写一些功能,封装为一个JAR包,提供给项目使用,这些项目最终发布为WAR包。但是有的时候,我提供的功能需要少许的页面,如JSP,JS,HTML和图片等。但是又不能侵入到项目的代码。当然,使用Servlet3.0可以实现在JAR中内嵌视图资源的功能。但是如果不使用Servlet3.0,可以写一个过滤器实现这个功能。过滤器...
Oracle主键选择对插入的影响
主键一般使用序列或者UUID使用UUID主要优点是分布式环境下,主键不会重复;缺点是性能相对较低。序列则相反,他在分布式环境下会重复,但是性能较高。实验分别测试序列,UUID,使用RAW类型的UUID,测试100W数据插入的时间。import java.sql.Connection;import java.sql.DriverManager;...
反向Ajax之基于IFrame的Comet
Tomcat提供了一种高级IO,可以实现Comet的功能。Servlet需要实现 CometProcessor接口,并且设置Tomcat连接器为org.apache.coyote.http11.Http11NioProtocol下面代码实现的功能还是获取服务器JVM信息。import java.io.IOException;import java.io.PrintWriter;import java.util.Dat...
Linux批量编码转换
单位JAVA开发的标准编码都是GBK我们定义Web项目的数据库初始化脚本在META-INF目录下,分别为data.sql和tables.sql在windows环境,我们使用NSIS安装包自动执行这些SQL文件。但是到了Linux系统,一切都变了。比如,这些SQL文件都是GBK编码,而linux命令行默认都是utf-8,并且即使设置了console的编码,输入到数据库也是...
外键一定要加索引
Mysql创建外键约束会自动创建一个索引,但是Oracle不会这样做。所以Oracle在创建外键之后,一定要手动创建索引。如果没有在外键上创建索引,会经常遇到如下问题。1.死锁 --创建实验表create table emp as select * from hr.employees;create table dept as select *...
Oracle用户及角色的权限管理[Oracle基础]
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs;3.查看角色(只能查看登陆用户拥有的角色)所包含的权限sql...
生成某一用户下所有表数据的insert语句
转自王工的博客http://blog.csdn.net/wzy0623/article/details/8445228功能:生成某一用户下所有数据表数据的insert语句,放入d:\insert.sql文件。限制:只支持number、char、varchar2、date、long、clob数据类型。提示:数据量小还可以,大了就别用这种方式了,会很慢。CREATE OR REPLACE DIRECTORY mydi...
一张详解SQL连接的图
参考:http://www.dbabeta.com/2011/visual-sql-joins.html