segunda-feira, 21 de janeiro de 2019

Conectar o Tibero no Apache TomCat


Neste exemplo mostraremos como conectar o Tibero no Apache TomCat v.7.x através da criação de um DataSource JNDI, usando o driver JDBC do Tibero.





Instruções:

1) Copy Tibero JDBC driver to TomCat "lib" directory:

c:\copy c:\TmaxData\tibero6_FS07_64_client\client\lib\jar\tibero6-jdbc.jar  c:\apache-tomcat-7.0.92\lib

2)   Add the following text to the "C:\apache-tomcat-7.0.92\conf\context.xml" file between the "Context" tag.
2.1) Change connection values according to your Tibero instance.

<Resource name="jdbc/Tibero" auth="Container" type="javax.sql.DataSource"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    driverClassName="com.tmax.tibero.jdbc.TbDriver"
    url="jdbc:tibero:thin:@100.100.100.200:8629:tibero"
    username="sys"
    password="tibero"
    initialSize="10"
    minIdle="5"
    maxIdle="10"
    maxActive="10"
    maxWait="5000"
    validationQuery="SELECT 1 from dual"
    validationInterval="30000"
    testWhileIdle="true" />

3) Create a folder named "tibero" in webapps directory:

"C:\apache-tomcat-7.0.92\webapps\tibero"

4) Create a "tibero.jsp" file into this directory:

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>Tibero Data Source Test</title>
</head>
<body>
<%
    String sql = "SELECT * FROM ALL_USERS";
    out.println("Tibero data source test using the script below:");
    out.write  ("<br>");
    out.println(sql);
    out.write  ("<br>");
    out.write  ("<br>");

    Context           ctx  = null;
    Context           env  = null;
    DataSource        ds   = null;
    Connection        con  = null;
    Statement         stmt = null;
    ResultSet         rs   = null;
    ResultSetMetaData md   = null;

    try
    {
        StringBuffer query = new StringBuffer();
        ctx  = new InitialContext();
        env = (Context) ctx.lookup("java:comp/env");
        ds   = (DataSource) env.lookup("jdbc/Tibero");
        con  = ds.getConnection();
        stmt = con.createStatement();

        query.append(sql);

        rs = stmt.executeQuery(query.toString());
        md = rs.getMetaData();

        out.write("<table border=\"1\"  style=\"width:100%\">");
        out.write("<tr>");

        for (int h = 1 ; h <= md.getColumnCount() ; h++)
        {
            out.write  ("<th>");
            out.println(md.getColumnName(h));
            out.write  ("</th>");
        }

        out.write  ("</tr>");

        while (rs.next())
        {
            out.write  ("<tr>");

            for (int r = 1 ; r <= md.getColumnCount() ; r++)
            {
                out.write  ("<td>");
                out.println(rs.getString(r));
                out.write  ("</td>");
            }

            out.write  ("</tr>");
        }

        out.write("</table>");
    }
    catch (Exception e)
    {
        out.println(e);
    }
    finally
    {
        if (stmt != null)
        {
            try
            {
                stmt.close();
            }
            catch (Exception e)
            {
                out.println(e);
            }
        }
        if (con != null)
        {
            try
            {
                con.close();
            }
            catch (Exception e)
            {
                out.println(e);
            }
        }
    }
%>
</body>
</html>

5)   Create WEB-INF directory: "C:\apache-tomcat-7.0.92\webapps\tibero\WEB-INF"
5.1) Create file "web.xml" in WEB-INF directory:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5">

    <resource-env-ref>
        <description>DB Connection</description>
        <resource-env-ref-name>jdbc/Tibero</resource-env-ref-name>
        <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
    </resource-env-ref>
</web-app>

6) Start TomCat:

C:\apache-tomcat-7.0.92\bin>startup.bat

Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Nov 9 2018 11:07:44 UTC
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.92.0
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 8.1
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            6.3
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jdk1.7.0_72\jre
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.7.0_72-b14
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         C:\apache-tomcat-7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         C:\apache-tomcat-7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-7.0.92\conf\logging.properties
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dignore.endorsed.dirs=
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\apache-tomcat-7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\apache-tomcat-7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-7.0.92\temp
Jan 21, 2019 4:56:43 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded APR based Apache Tomcat Native library 1.2.18 using APR version 1.6.5.
Jan 21, 2019 4:56:43 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Jan 21, 2019 4:56:43 PM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.1.1  11 Sep 2018)
Jan 21, 2019 4:56:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-8080"]
Jan 21, 2019 4:56:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-apr-8009"]
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 444 ms
Jan 21, 2019 4:56:43 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 21, 2019 4:56:43 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.92
Jan 21, 2019 4:56:43 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\apache-tomcat-7.0.92\conf\Catalina\localhost\tibero.xml
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deployment of configuration descriptor C:\apache-tomcat-7.0.92\conf\Catalina\localhost\tibero.xml has finished in 846 ms
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.92\webapps\docs
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory C:\apache-tomcat-7.0.92\webapps\docs has finished in 118 ms
Jan 21, 2019 4:56:44 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.92\webapps\examples
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory C:\apache-tomcat-7.0.92\webapps\examples has finished in 298 ms
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.92\webapps\host-manager
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory C:\apache-tomcat-7.0.92\webapps\host-manager has finished in 134 ms
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.92\webapps\manager
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory C:\apache-tomcat-7.0.92\webapps\manager has finished in 113 ms
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.92\webapps\ROOT
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory C:\apache-tomcat-7.0.92\webapps\ROOT has finished in 96 ms
Jan 21, 2019 4:56:45 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8080"]
Jan 21, 2019 4:56:45 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]
Jan 21, 2019 4:56:45 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1664 ms

7) Test it:

http://localhost:8080/tibero/tibero.jsp


* AS an alternative, you can use the custom context.xml for each application, to do that follow the instructions:

1) Copy context.xml with JDBC connection working to:
    
C:\apache-tomcat-7.0.92\conf\Catalina\localhost

2) Rename it to the same context name of your application. In this case:
    
tibero.xml

sábado, 18 de agosto de 2018

Terças de Dados #30 – Mitos e Fatos – Migração entre bancos de dados

Participamos novamente do evento "Terça de Dados" do grupo DBA Brasil, com o tema sobre migração entre bancos de dados, mitos e fatos.



Existem no mercado vários banco de dados Oracle , SQL-Server, Postgree , DB2, contudo tecnologicamente o processo de migração entre tecnologias pode ser inviável.

Nesta apresentação iremos abordar os processos necessários para que se possa realizar uma migração bem sucedida, assim evitando todos os riscos de uma migração.

Assista o Webcast aqui neste link:

Terças de Dados #30 – Mitos e Fatos – Migração entre bancos de dados

quarta-feira, 16 de maio de 2018

UNINOVE e TmaxSoft promovem formação de alunos

Parceria inédita com empresa Sul Coreana de software promove formação de alunos da UNINOVE no Tibero, banco de dados utilizado por gigantes do mercado mundial.

A UNINOVE compondo parceria com a TmaxSoft, desenvolvedora do banco de dados Tibero, irá formar e certificar universitários concluintes da graduação em Tecnologia em Banco de Dados e discentes da pós-graduação em Gerenciamento de Banco de Dados, visando inserção destes profissionais no mercado brasileiro que a empresa coreana está ampliando no país.

Fundada em 1997, a TMaxSoft está presente em 20 países e tem uma carteira mundial com mais de 2 mil clientes, tais como: LG, GE Capital, Citi, Samsung, Hyundai, Pizza Hut, entre outras.

Os alunos dos cursos de informática passarão a utilizar o Tibero, dentro da grade de banco de dados e após o curso realizarão uma prova de certificação no software. A parceria amplia as oportunidades profissionais dos alunos a partir desta certificação.

Leia mais Neste Link. Assistam o vídeo no final da página!

terça-feira, 17 de abril de 2018

Exemplo de conexão no DELPHI RADStudio 10 usando FireDAC com o Tibero ODBC driver

Neste exemplo usaremos uma aplicação de teste em DELPHI no RAD Studio 10 para conectar no
Tibero usando o ORM Framework FireDAC através do driver ODBC do Tibero.

Para acessar o documento técnico com as instruções detalhadas de como configurar o FireDAC com o driver ODBC do Tibero acesse:
How to Configure FireDAC with TIBERO ODBC.docx

Para obter o projeto de exemplo em DELHPI no RAD Studio 10 e ter acesso ao código fonte acesse:
RAD_DBAccess.zip, a senha para descompactar o arquivo é: "tibero".


Exemplo de conexão no DELPHI 7 usando BDE com o Tibero ODBC driver

Neste exemplo usaremos uma aplicação de teste em DELPHI 7 para conectar no Tibero usando o data provider BDE através do driver ODBC do Tibero.

Para acessar o documento técnico com as instruções detalhadas de como instalar/configurar o BDE com o driver ODBC do Tibero acesse:
How to Install and Configure BDE with TIBERO ODBC.docx

Para obter os arquivos de instalação do BDE acesse:
1-bdesetup.zip
2-bde511en.exe

Para obter o projeto de exemplo em DELHPI 7 e ter acesso ao código fonte acesse:
DBAccess.zip, a senha para descompactar o arquivo é: "tibero".

quarta-feira, 10 de janeiro de 2018

Migrando tabelas gigantes para tabelas particionadas no Tibero


Uma das preocupações comuns durante a migração de dados é em relação a tabelas com grande volume de dados, que não estão particionadas.
Esta é a principal causa de grandes janelas de migração, principalmente quando existem tipos LOB nas tabelas de origem.
Não importa qual o motivo destas tabelas de origem não estarem particionadas.
O fato é que se estivessem particionadas, o processo de migração das partições antigas, poderiam ser realizados antecipadamente.
Deixando para o dia “D”, somente a tarefa de migrar a partição atual, minimizando a janela de migração final drasticamente.
Evidente que isso não se aplica para todos os tipos de particionamento,

Neste exemplo, demonstraremos como realizar esta tarefa para o Tibero usando o particionamento por range de datas, que é muito comum.

Para este exemplo usaremos a ferramenta "table_migrator" do Tibero (Não é uma ferramenta oficial do produto! Mas pode utilizada, Download: table_migrator_6_170201)

Para maiores informações sobre esta ferramenta acesse: Tibero Migration Utility Guide

Esta ferramenta permite a utilização de "filtros", onde direcionaremos os dados para suas respectivas partições de destino durante a migração.

Faremos uma migração de uma tabela não particionada do Oracle para uma tabela particionada no Tibero.

 Criando a tabela de origem: (ORACLE)

CREATE TABLE LUIZ.TESTE(ID NUMBER(5,0) PRIMARY KEY, NAME VARCHAR2(100), AGE NUMBER(3,0), DOC CLOB, STARTDATE DATE);

➔ Inserindo dados:

DECLARE
D  NUMBER(2,0);
M  NUMBER(2,0);
Y  NUMBER(4,0);
DT DATE;
BEGIN
FOR N IN 1..1000 LOOP
D  := DBMS_RANDOM.VALUE(1, 28);
M  := DBMS_RANDOM.VALUE(1, 12);
Y  := DBMS_RANDOM.VALUE(2010, 2017);
DT := TO_DATE(D || '/' || M || '/' || Y, 'DD/MM/YYYY');
INSERT INTO LUIZ.TESTE VALUES (N, DBMS_RANDOM.STRING('U', 100), DBMS_RANDOM.VALUE(21,85), DBMS_RANDOM.STRING('U', 1000), DT);
END LOOP;
COMMIT;
END;

➔ Verificação:

SELECT COUNT(*) FROM LUIZ.TESTE;
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2010' AND STARTDATE < '01/01/2011';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2011' AND STARTDATE < '01/01/2012';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2012' AND STARTDATE < '01/01/2013';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2013' AND STARTDATE < '01/01/2014';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2014' AND STARTDATE < '01/01/2015';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2015' AND STARTDATE < '01/01/2016';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2016' AND STARTDATE < '01/01/2017';
SELECT COUNT(*) FROM LUIZ.TESTE WHERE STARTDATE >= '01/01/2017' AND STARTDATE < '01/01/2018';

  COUNT(*)
----------
      1000

  COUNT(*)
----------
        79

  COUNT(*)
----------
       134

  COUNT(*)
----------
       138

  COUNT(*)
----------
       135

  COUNT(*)
----------
       137

  COUNT(*)
----------
       145

  COUNT(*)
----------
       158

  COUNT(*)
----------
        74

 TESTE 001: (TIBERO)

Testando a migração full de todos os registros da base de origem.

Resultado esperado:

Todos os registros alocados nas devidas partições de acordo com o critério de data.

CREATE TABLE LUIZ.TESTE(ID NUMBER(5,0) PRIMARY KEY, NAME VARCHAR2(100), AGE NUMBER(3,0), DOC CLOB, STARTDATE DATE)
PARTITION BY RANGE (STARTDATE)
(
PARTITION YEAR_2010 VALUES LESS THAN (TO_DATE('01/01/2011', 'DD/MM/YYYY')),
PARTITION YEAR_2011 VALUES LESS THAN (TO_DATE('01/01/2012', 'DD/MM/YYYY')),
PARTITION YEAR_2012 VALUES LESS THAN (TO_DATE('01/01/2013', 'DD/MM/YYYY')),
PARTITION YEAR_2013 VALUES LESS THAN (TO_DATE('01/01/2014', 'DD/MM/YYYY')),
PARTITION YEAR_2014 VALUES LESS THAN (TO_DATE('01/01/2015', 'DD/MM/YYYY')),
PARTITION YEAR_2015 VALUES LESS THAN (TO_DATE('01/01/2016', 'DD/MM/YYYY')),
PARTITION YEAR_2016 VALUES LESS THAN (TO_DATE('01/01/2017', 'DD/MM/YYYY')),
PARTITION YEAR_2017 VALUES LESS THAN (TO_DATE('01/01/2018', 'DD/MM/YYYY'))
);

SELECT * FROM DBA_PART_TABLES;

OWNER TABLE_NAME PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT DEF_SUBPARTITION_COUNT PARTITIONING_KEY_COUNT SUBPARTITIONING_KEY_COUNT DEF_TABLESPACE_NAME DEF_PCT_FREE DEF_INI_TRANS DEF_NEXT_EXTENT DEF_MAX_EXTENTS DEF_BUFFER_POOL MAX_TRANS INITIAL_EXTENT MIN_EXTENT INTERVAL
LUIZ TESTE RANGE NONE 8 0 1 0 USR 10 2 16 4,294,967,295 DEFAULT 163 131,072 65,536 <NULL>

SELECT * FROM DBA_TAB_PARTITIONS;

OWNER TABLE_NAME COMPOSITE PARTITION_NAME SUBPARTITION_COUNT BOUND PARTITION_NO TABLESPACE_NAME PCT_FREE INI_TRANS NEXT_EXTENT MAX_EXTENTS COMPRESSION BUFFER_POOL NUM_ROWS BLOCKS LAST_ANALYZED LOGGING
LUIZ TESTE NO YEAR_2010 0 TO_DATE('01/01/2011', 'DD/MM/YYYY') 1 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2011 0 TO_DATE('01/01/2012', 'DD/MM/YYYY') 2 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2012 0 TO_DATE('01/01/2013', 'DD/MM/YYYY') 3 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2013 0 TO_DATE('01/01/2014', 'DD/MM/YYYY') 4 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2014 0 TO_DATE('01/01/2015', 'DD/MM/YYYY') 5 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2015 0 TO_DATE('01/01/2016', 'DD/MM/YYYY') 6 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2016 0 TO_DATE('01/01/2017', 'DD/MM/YYYY') 7 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES
LUIZ TESTE NO YEAR_2017 0 TO_DATE('01/01/2018', 'DD/MM/YYYY') 8 USR 10 2 131,072 4,294,967,295 NO DEFAULT 0 0 <NULL> YES

./migrator.sh \
SOURCE_TYPE=ORACLE \
SOURCE_DRIVER=oracle.jdbc.OracleDriver \
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
SOURCE_USER=SYSTEM \
SOURCE_PASSWORD=manager \
SOURCE_LOGIN_AS=NORMAL \
SOURCE_SCHEMA=LUIZ \
SOURCE_TABLE=TESTE \
TARGET_TYPE=DEFAULT \
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
TARGET_USER=SYS \
TARGET_PASSWORD=tibero \
TARGET_SCHEMA=LUIZ \
TARGET_TABLE=TESTE \
SELECT_FETCH_SIZE=16384 \
INSERT_PARALLEL=Y \
INSERT_THREAD_COUNT=4 \
INSERT_BATCH=Y \
INSERT_METHOD=CPL

> SOURCE_TYPE=ORACLE \
> SOURCE_DRIVER=oracle.jdbc.OracleDriver \
> SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
> SOURCE_USER=SYSTEM \
> SOURCE_PASSWORD=manager \
> SOURCE_LOGIN_AS=NORMAL \
> SOURCE_SCHEMA=LUIZ \
> SOURCE_TABLE=TESTE \
> TARGET_TYPE=DEFAULT \
> TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
> TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
> TARGET_USER=SYS \
> TARGET_PASSWORD=tibero \
> TARGET_SCHEMA=LUIZ \
> TARGET_TABLE=TESTE \
> SELECT_FETCH_SIZE=16384 \
> INSERT_PARALLEL=Y \
> INSERT_THREAD_COUNT=4 \
> INSERT_BATCH=Y \
> INSERT_METHOD=CPL
=== Parameters ===
PROPERTY_FILE=migrator.properties
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl
SOURCE_USER=SYSTEM
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=LUIZ
SOURCE_TABLE=TESTE
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero
TARGET_USER=SYS
TARGET_PASSWORD=************
TARGET_SCHEMA=LUIZ
TARGET_TABLE=TESTE
SELECT_FETCH_SIZE=16384
SELECT_AS_BYTE=N
INSERT_METHOD=CPL
INSERT_BATCH=Y
INSERT_PARALLEL=Y
INSERT_THREAD_COUNT=4
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y

==================
[E0]1511231254712 - STARTED
[L0]1511231255081 Loader started
[L1]1511231255109 Loader started
[L2]1511231255133 Loader started
[L3]1511231255145 Loader started
[L3] 32
[L2] 32
[L0] 32
[L1] 32
[L2] 64
[L3] 64
[L1] 64
[L0] 64
[L3] 96
[L1] 96
[L2] 96
[L0] 96
[L3] 128
[L2] 128
[L1] 128
[L0] 128
[L3] 160
[L1] 160
[L2] 160
[L3] 192
[E0]1511231255806 - TOTAL Extracted ROWS: 1000
[L2] 192
[L0] 160
[L1] 192
[L3] 224
[L2] 224
[L0] 192
[L1] 224
[L3] 256
[L2] 256
[L0] 224
[L1] 256
[L1]1511231255948 TOTAL Loaded ROWS: 256
Loader finished
[L3]1511231255979 TOTAL Loaded ROWS: 262
Loader finished
[L0]1511231255979 TOTAL Loaded ROWS: 225
Loader finished
[L2]1511231255979 TOTAL Loaded ROWS: 257
Loader finished
Loading is ended.
Elapsed Time (milliseconds) : 2460
ADD BATCH : 1435
EXECUTE BATCH : 1491

SELECT COUNT(*) FROM LUIZ.TESTE;
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2010);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2011);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2012);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2013);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2014);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2015);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2016);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2017);

  COUNT(*)
----------
      1000

1 row selected.

SQL>
  COUNT(*)
----------
        79

1 row selected.

SQL>
  COUNT(*)
----------
       134

1 row selected.

SQL>
  COUNT(*)
----------
       138

1 row selected.

SQL>
  COUNT(*)
----------
       135

1 row selected.

SQL>
  COUNT(*)
----------
       137

1 row selected.

SQL>
  COUNT(*)
----------
       145

1 row selected.

SQL>
  COUNT(*)
----------
       158

1 row selected.

SQL>
  COUNT(*)
----------
        74

 TESTE 002:

Testando a migração full de todos os registros da base de origem antes de 2017.
Migrar depois os registros de 2017.

Resultado esperado:

Todos os registros alocados nas devidas partições de acordo com o critério de data.

TRUNCATE TABLE LUIZ.TESTE;

Table 'LUIZ.TESTE' truncated.

SELECT * FROM  LUIZ.TESTE;

0 row selected.

Migração 001:

./migrator.sh \
SOURCE_TYPE=ORACLE \
SOURCE_DRIVER=oracle.jdbc.OracleDriver \
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
SOURCE_USER=SYSTEM \
SOURCE_PASSWORD=manager \
SOURCE_LOGIN_AS=NORMAL \
SOURCE_SCHEMA=LUIZ \
SOURCE_TABLE=TESTE \
TARGET_TYPE=DEFAULT \
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
TARGET_USER=SYS \
TARGET_PASSWORD=tibero \
TARGET_SCHEMA=LUIZ \
TARGET_TABLE=TESTE \
SELECT_CONDITION="STARTDATE < TO_DATE('01/01/2017', 'DD/MM/YYYY')" \
SELECT_FETCH_SIZE=16384 \
INSERT_PARALLEL=Y \
INSERT_THREAD_COUNT=4 \
INSERT_BATCH=Y \
INSERT_METHOD=CPL

[tiberotst@rick-ln table_migrator]$ ./migrator.sh \
> SOURCE_TYPE=ORACLE \
> SOURCE_DRIVER=oracle.jdbc.OracleDriver \
> SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
> SOURCE_USER=SYSTEM \
> SOURCE_PASSWORD=manager \
> SOURCE_LOGIN_AS=NORMAL \
> SOURCE_SCHEMA=LUIZ \
> SOURCE_TABLE=TESTE \
> TARGET_TYPE=DEFAULT \
> TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
> TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
> TARGET_USER=SYS \
> TARGET_PASSWORD=tibero \
> TARGET_SCHEMA=LUIZ \
> TARGET_TABLE=TESTE \
> SELECT_CONDITION="STARTDATE < TO_DATE('01/01/2017', 'DD/MM/YYYY')" \
> SELECT_FETCH_SIZE=16384 \
> INSERT_PARALLEL=Y \
> INSERT_THREAD_COUNT=4 \
> INSERT_BATCH=Y \
> INSERT_METHOD=CPL
=== Parameters ===
PROPERTY_FILE=migrator.properties
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl
SOURCE_USER=SYSTEM
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=LUIZ
SOURCE_TABLE=TESTE
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero
TARGET_USER=SYS
TARGET_PASSWORD=************
TARGET_SCHEMA=LUIZ
TARGET_TABLE=TESTE
SELECT_CONDITION=STARTDATE < TO_DATE('01/01/2017', 'DD/MM/YYYY')
SELECT_FETCH_SIZE=16384
SELECT_AS_BYTE=N
INSERT_METHOD=CPL
INSERT_BATCH=Y
INSERT_PARALLEL=Y
INSERT_THREAD_COUNT=4
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y

==================
[E0]1511233256441 - STARTED
[E0]1511233256843 - TOTAL Extracted ROWS: 926
[L0]1511233256850 Loader started
[L1]1511233256869 Loader started
[L2]1511233256899 Loader started
[L3]1511233256908 Loader started
[L0] 32
[L3] 32
[L1] 32
[L2] 32
[L0] 64
[L3] 64
[L2] 64
[L1] 64
[L3] 96
[L2] 96
[L0] 96
[L1] 96
[L3] 128
[L0] 128
[L2] 128
[L1] 128
[L3] 160
[L0] 160
[L2] 160
[L1] 160
[L0] 192
[L3] 192
[L2] 192
[L1] 192
[L0] 224
[L2] 224
[L3] 224
[L3]1511233257331 TOTAL Loaded ROWS: 224
Loader finished
[L1] 224
[L1]1511233257331 TOTAL Loaded ROWS: 224
Loader finished
[L2]1511233257335 TOTAL Loaded ROWS: 232
Loader finished
[L0]1511233257339 TOTAL Loaded ROWS: 246
Loader finished
Loading is ended.
Elapsed Time (milliseconds) : 1866
ADD BATCH : 526
EXECUTE BATCH : 984

SELECT COUNT(*) FROM LUIZ.TESTE;
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2010);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2011);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2012);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2013);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2014);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2015);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2016);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2017);

  COUNT(*)
----------
       926

1 row selected.

SQL>
  COUNT(*)
----------
        79

1 row selected.

SQL>
  COUNT(*)
----------
       134

1 row selected.

SQL>
  COUNT(*)
----------
       138

1 row selected.

SQL>
  COUNT(*)
----------
       135

1 row selected.

SQL>
  COUNT(*)
----------
       137

1 row selected.

SQL>
  COUNT(*)
----------
       145

1 row selected.

SQL>
  COUNT(*)
----------
       158

1 row selected.

SQL>
  COUNT(*)
----------
         0

1 row selected.

Migração 002:

./migrator.sh \
SOURCE_TYPE=ORACLE \
SOURCE_DRIVER=oracle.jdbc.OracleDriver \
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
SOURCE_USER=SYSTEM \
SOURCE_PASSWORD=manager \
SOURCE_LOGIN_AS=NORMAL \
SOURCE_SCHEMA=LUIZ \
SOURCE_TABLE=TESTE \
TARGET_TYPE=DEFAULT \
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
TARGET_USER=SYS \
TARGET_PASSWORD=tibero \
TARGET_SCHEMA=LUIZ \
TARGET_TABLE=TESTE \
SELECT_CONDITION="STARTDATE >= TO_DATE('01/01/2017', 'DD/MM/YYYY')" \
SELECT_FETCH_SIZE=16384 \
INSERT_PARALLEL=Y \
INSERT_THREAD_COUNT=4 \
INSERT_BATCH=Y \
INSERT_METHOD=CPL

[tiberotst@rick-ln table_migrator]$ ./migrator.sh \
> SOURCE_TYPE=ORACLE \
> SOURCE_DRIVER=oracle.jdbc.OracleDriver \
> SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl \
> SOURCE_USER=SYSTEM \
> SOURCE_PASSWORD=manager \
> SOURCE_LOGIN_AS=NORMAL \
> SOURCE_SCHEMA=LUIZ \
> SOURCE_TABLE=TESTE \
> TARGET_TYPE=DEFAULT \
> TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver \
> TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero \
> TARGET_USER=SYS \
> TARGET_PASSWORD=tibero \
> TARGET_SCHEMA=LUIZ \
> TARGET_TABLE=TESTE \
> SELECT_CONDITION="STARTDATE >= TO_DATE('01/01/2017', 'DD/MM/YYYY')" \
> SELECT_FETCH_SIZE=16384 \
> INSERT_PARALLEL=Y \
> INSERT_THREAD_COUNT=4 \
> INSERT_BATCH=Y \
> INSERT_METHOD=CPL
=== Parameters ===
PROPERTY_FILE=migrator.properties
SOURCE_TYPE=ORACLE
SOURCE_DRIVER=oracle.jdbc.OracleDriver
SOURCE_URL=jdbc:oracle:thin:@100.100.100.100:1521:orcl
SOURCE_USER=SYSTEM
SOURCE_PASSWORD=************
SOURCE_LOGIN_AS=NORMAL
SOURCE_SCHEMA=LUIZ
SOURCE_TABLE=TESTE
TARGET_TYPE=DEFAULT
TARGET_DRIVER=com.tmax.tibero.jdbc.TbDriver
TARGET_URL=jdbc:tibero:thin:@100.100.100.100:8629:tibero
TARGET_USER=SYS
TARGET_PASSWORD=************
TARGET_SCHEMA=LUIZ
TARGET_TABLE=TESTE
SELECT_CONDITION=STARTDATE >= TO_DATE('01/01/2017', 'DD/MM/YYYY')
SELECT_FETCH_SIZE=16384
SELECT_AS_BYTE=N
INSERT_METHOD=CPL
INSERT_BATCH=Y
INSERT_PARALLEL=Y
INSERT_THREAD_COUNT=4
INSERT_ZERO_LENGTH_STRING_AS_NULL=Y

==================
[E0]1511233413132 - STARTED
[E0]1511233413319 - TOTAL Extracted ROWS: 74
[L0]1511233413424 Loader started
[L1]1511233413432 Loader started
[L2]1511233413462 Loader started
[L1]1511233413492 TOTAL Loaded ROWS: 12
Loader finished
[L3]1511233413494 Loader started
[L3]1511233413494 TOTAL Loaded ROWS: 0
Loader finished
[L0] 32
[L0]1511233413508 TOTAL Loaded ROWS: 32
Loader finished
[L2]1511233413511 TOTAL Loaded ROWS: 30
Loader finished
Loading is ended.
Elapsed Time (milliseconds) : 1448
ADD BATCH : 80
EXECUTE BATCH : 28

SELECT COUNT(*) FROM LUIZ.TESTE;
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2010);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2011);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2012);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2013);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2014);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2015);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2016);
SELECT COUNT(*) FROM LUIZ.TESTE PARTITION(YEAR_2017);

  COUNT(*)
----------
      1000

1 row selected.

SQL>
  COUNT(*)
----------
        79

1 row selected.

SQL>
  COUNT(*)
----------
       134

1 row selected.

SQL>
  COUNT(*)
----------
       138

1 row selected.

SQL>
  COUNT(*)
----------
       135

1 row selected.

SQL>
  COUNT(*)
----------
       137

1 row selected.

SQL>
  COUNT(*)
----------
       145

1 row selected.

SQL>
  COUNT(*)
----------
       158

1 row selected.

SQL>
  COUNT(*)
----------
        74

1 row selected.