2

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

hnm
  • 789
  • 2
  • 9
  • 24
  • Do you want to migrate data from Oracle to DB2 ? Access DB2 Tables from Oracle (not even sure if this even possible)? – Shahzeb Sep 22 '11 at 06:55
  • 1
    You should make up your mind if you want to a) copy data from Oracle to DB2 or b) access Oracle tables from DB2 or c) access DB2 tables from Oracle. – Filburt Sep 22 '11 at 06:58
  • I want to access oracle tables in DB2, But I am not finding any documentation. – hnm Sep 22 '11 at 07:09

3 Answers3

4

You can use db2 federation. One link is here.

Cornel Creanga
  • 5,311
  • 1
  • 22
  • 28
1

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.

APC
  • 144,005
  • 19
  • 170
  • 281
  • Heterogeneous Services allow accessing DB2 tables in oracle,But what we need right now is accessing oracle tables in DB2. – hnm Sep 22 '11 at 08:52
0
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;

    }

}
navid sedigh
  • 279
  • 1
  • 5
  • 15