Question

I want to access oracle tables in DB2(something like DBlink from DB2 to oracle).Any help is appreciated.

Was it helpful?

Solution

You can use db2 federation. One link is here.

OTHER TIPS

Oracle has a feature called Heterogeneous Services which allows us to build links between Oracle databases and non-Oracle databases, including DB2. Find out more.

import com.ibm.db2.jcc.am.gc;
import com.ibm.db2.jcc.t2zos.s;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import static org.omg.IOP.ENCODING_CDR_ENCAPS.value;

public class automateExport {

    static String value;

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // ResultSet rs = null;
        String table_name;
        Integer temp = 0;
        Integer temp1 = 0;
        Integer temp2 = 1;
        String column_name = null;
        String tableName = null;
        String columnType = null;
        int precision = 0;

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection codal = DriverManager.getConnection("jdbc:oracle:thin:@192.168.01.53:1521:orcl", "NAVID",
                "oracle");

        StringBuilder sb = new StringBuilder(1024);

        Connection DB2 = getConnection();
        String sql = "SELECT TABSCHEMA,TABNAME,COLNAME,TYPENAME,LENGTH FROM SYSCAT.COLUMNS WHERE TABSCHEMA NOT LIKE 'SYS%' ";
        PreparedStatement mainStmt = DB2.prepareStatement(sql);
        ResultSet rs = mainStmt.executeQuery();
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        String str1 = "ADMIN2";

        while (rs.next()) {

            table_name = rs.getString(2);

            if (table_name.equalsIgnoreCase(str1)) {
                if (temp1 == 0) {

                    sb.append("create table").append(" ");
                    sb.append(table_name).append("( ");
                    if (temp2 == 0) {
                        sb.append(" ").append(column_name).append(" ").append(columnType);
                        if (precision != 0) {
                            sb.append("( ").append(precision).append(" )");
                            sb.append(", ");

                        }
                    }

                    temp1 = 1;
                    temp = 1;
                }

                if (temp == 0) {
                    sb.append(table_name).append("(");
                    temp = 1;
                }
                column_name = rs.getString(3);
                columnType = rs.getString(4);
                sb.append(" ").append(column_name).append(" ").append(columnType);
                precision = rs.getInt(5);
                if (precision != 0) {
                    sb.append("( ").append(precision).append(" )");
                    sb.append(", ");
                }
            } else {
                temp2 = 0;
                sb.replace(sb.length() - 2, sb.length(), "");
                sb.append(" )");
                temp1 = 0;
                str1 = str1.replaceAll(str1, table_name);
                column_name = rs.getString(3);
                columnType = rs.getString(4);
                precision = rs.getInt(5);
                String sql2 = sb.toString();
                PreparedStatement m = codal.prepareStatement(sql2);
                m.executeUpdate();
                sb.delete(0, sb.length());
            }
        }
        codal.close();
        DB2.close();
/*


        }


    private static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName("COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver");
        Connection connection
                = DriverManager.getConnection("jdbc:db2://localhost:50000/navid", "navid", "oracle");
        return connection;

    }

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top