分类: 数据库

mysql表名区分大小写

发表于1年前(May 22, 2017 9:45:00 PM)  阅读 602  评论 0

分类: 数据库 开发运维环境

标签: lower_case_table_names mysql 区分大小写

直奔主题,mysql中的lower_case_table_names变量的作用就是设置表名是否区分大小写,可以在登录mysql后通过show variables like 'lower_case_file_system';命令来查看当前的配置值。如果为ON表示不区分大小,OFF表示区分大小写。

默认情况下,在windows下为ON,Linux下为OFF,MacOS有人说是为OFF,但笔者实际上是ON。

可以通过修改/etc/my.cnf文件来改变默认的设置。

在mysqld节点下面增加lower_case_table_names=1,1表示ON,0表示OFF。

Spring配置多数据源进行数据同步

发表于3年前(Jan 20, 2015 4:59:00 PM)  阅读 4630  评论 4

分类: Java 数据库 案例

标签: 数据同步 annotation 多数据源 多事务 动态切换 AOP 反射 模型转换 AbstractRoutingDataSource PlatformTransactionManager

本文主要可以解决以下几个问题:

Spring如何配置多数据源、多事务,以及如何动态切换。

Spring AOP机制的运用,以及对同一个切面(Joint Point)多个处理方法(Advice)执行顺序的设置,即AOP的Order的设定。

自定义注解Annotation的实现以及使用。

使用Java反射机制配合Annotation实现异构模型之间的自动转换。

HQL分页sql遇到distinct时count总数不对

发表于3年前(Dec 24, 2014 10:45:17 AM)  阅读 732  评论 0

分类: Java 数据库

标签: countingsort count hql

项目中经常会有一个BaseDao,所有Dao都会继承这个BaseDao然后实现各自的Dao接口,BaseDao主要是封装了所有Dao通用的方法,其中就有分页查询。

分页查询每次会执行两个sql,首先一个sql用来统计总记录数,第二个sql才是分页查询指定数据。这是常用的一个方法,至少笔者所接触的项目基本都这么做的,至今还是没碰到过什么问题。

但如果hql语句包含distinct时,发现查询出来的记录总数不对,会大于实际记录数。

数据同步引发的一些思考

发表于3年前(Dec 24, 2014 10:39:16 AM)  阅读 532  评论 0

分类: Java 数据库 案例

标签: etl truncate 批量删除 数据同步

问题场景描述:
有Oracle数据库服务器A,有Oracle数据库服务器B,有第三方数据存储系统C,服务器A和C之间只能通过中间库B访问,现A定时产生大量数据,需要同步给C,C不只是简单的获取数据,还需做分析处理。这里没有采用第三方ETL工具,原因不赘叙,现在看如何自己编写代码完成同步过程。

分页的SQL一定要加上主键排序

发表于3年前(Dec 24, 2014 10:37:00 AM)  阅读 424  评论 0

分类: Java 数据库

标签: 分页sql 数据重复

换了一家新公司,做电商的,前两天经理交代一个任务,处理客户反馈的一个问题,问题很简单,是产品分页的时候,发现有两页竟然出现了同一个商品,我开始查代码。

系统数据持久层采用的是mybatis,之前没用过,听说过,一直用的hibernate。这里说句题外话,个人感觉hibernate还是好用点,hibernate配置要稍微简单点,配置映射关系就行,不需要写复杂sql,mybatis就要把sql写出来,写出来当然就麻烦点,我就看了我们系统里面的sql,一堆if,非常复杂,当然复杂的sql也有自身优势,实现的功能就更加灵活一点,有时使用hibernate碰到很复杂的裸机就发现无法配置,不过通常这时候我们会直接换成用jdbc直接查询,也不影响。耐着性子看了下sql,里面排序条件很多,都是根据商品价格,销量啊什么的,我把查询sql在后台打印出来,因为我不能直接连接正式库,我把sql稍微改了一下,一次查了10页的数据,发给现场人员让他帮忙把结果导出来。为什么一次查10页,当时是怕麻烦人家。导出的表格发现依然没有重复数据(之前已经查过产品表,没有录入重复数据)。我盯着那句sq

......

ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程

发表于3年前(Dec 24, 2014 10:35:37 AM)  阅读 749  评论 0

分类: 数据库

标签: ora ORA-12516

今天用plsql连接数据库时发现这么一个错误,造成无法连接,百度发现,应该是processes和sessions值超出了限制导致的。

启动cmd:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 – Production on 星期三 11月 21 18:47:40 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> show parameter processes
NAME TYPE VALUE
———————————— &mda

......

ORA-01034 ORA-27101错误

发表于3年前(Dec 24, 2014 10:34:49 AM)  阅读 337  评论 0

分类: 数据库

标签: ora-01034 ora-27101

今天同事oracle服务器出问题,登录不上,但是服务都已正常启动,叫我帮忙看下。用sqlplus登录发现出现下列错误信息:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available

百度了一下,乱七八糟的什么都有,有位兄弟的解决方法我试了一下,没问题,现在贴出来一起分享:

总的来说是数据库在启动的时候出现了问题,启动时先启动实例,再mount数据库,再open数据库,原因复杂。但是我说的下面这个方法可以解决:

登录到安装数据库的这台电脑上,在运行中输入cmd,也就是你上面贴出来的这个界面,

输入sqlplus /nolog,回车,

这时出现了SQL>,然后再输入connect / as sysdba;回车,

再输入startup,回车,等待一会,等这个命令运行完之后,再连接数据库,就能进行查询、插入等正常操作了。

Oracle如何使用localhost访问

发表于3年前(Dec 24, 2014 10:33:56 AM)  阅读 331  评论 0

分类: 数据库

标签: localhost

Oracle安装时一般是要拔网线的,默认配置的是localhost,但使用localhost时,经常会发现数据库登录不了,具体原因我也不清楚,所以一直以来我都是配置的固定ip。今天因为要演示系统,演示的地方没有网络,所以必须配localhost,网上查了下资料,发现如果配计算机名的话,Oracle也是可以用localhost登录的。

打开Oracle net manager,将sid跟listener的主机名跟主机配置成自己计算机的计算机名,启动服务后,就可以使用localhost登录Oracle了。

oracle闪回

发表于3年前(Dec 24, 2014 10:32:50 AM)  阅读 421  评论 0

分类: 数据库

标签: oracle 闪回

oracle也有回收站,如果不小心drop掉了哪张表,或误删了记录,可以通过回收站闪回。

select * from recyclebin t;

上面这条语句可以查看当前回收站里有哪些对象,主要的字段有object_name,original_name,createtime,droptime,original_name就是你删除对象之前在oracle里面的名称,根据droptime我们可以找到当时你删除的版本的object_name,然后根据object_name就可以进行闪回。

flashback table “BIN$SxyIpbUaSlGWt9j/dEZEhw==$0″ to before drop rename to gis_link;

注意object_name一定要用双引号括起来,而不是单引号