查看原文
其他

mycat系列-对Oracle的支持

IT哈哈 2017-07-06


配置支持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;


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存