mycat系列-对Oracle的支持
配置支持Oracle
修改conf下的配置schema.xml文件中的以下内容:
配置dataHost
在节点下在新增一个oracle的连接
<dataHost name="oracle1" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="oracle" dbDriver="jdbc"><heartbeat>select 1 from dual</heartbeat><connectionInitSql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</connectionInitSql><writeHost host="hostM1" url="jdbc:oracle:thin:@192.168.0.95:1521:orcl" user="test" password="test" ></writeHost></dataHost>
1.dbDriver一定为jdbc,dbType代表数据库类型,可以为mysql,oracle,mongodb
2.url地址是jdbc连接的地址,和一般开发java web的jdbc.url地址一致,user,password是用户名和密码
3.是心跳包的查询语句
4.是连接oracle的初始化语句,初始化本次会话的日期显示格式
5.需要ojdbc14-x.jar包(其它版本也支持)
配置表:
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
之后加上表的配置:
<table name="people" primaryKey="_ID" dataNode="dn4" needAddLimit="false"/>
needAddLimit 不自动在sql语句中使用limit
新增dataNode配置:
<dataNode name="dn4" dataHost="oracle1" database="test" />
三层嵌套分页
支持oracle的三层嵌套和row_number2种分页语法以及rownum控制最大条数的语法。
支持limit语法自动翻译原生分页,详见5.9 limit分页自动转换。
以下分页等价limit 5,10
select * from ( select row_.*, rownum rownum_ from ( select sidfrom test where sts<>'N' order by sid desc ) row_ where rownum <= 15) where rownum_ > 5;
row_number分页
以下分页等价limit 5,10
SELECT *FROM (SELECT sid, ROW_NUMBER() OVER (ORDER BY sid ) AS ROWNUM1 FROM test t WHERE sts <> 'N' ) XXWHERE ROWNUM1 > 5 AND ROWNUM1 <= 15;
rownum控制最大条数
以下语法控制查询结果最多5条
SELECT * FROM (SELECT * FROM test t) XX WHERE ROWNUM <= 5;