Oracleの新しいVM、GraalVM

オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用 - Publickey

GraalVMはJavaScript、Python、Ruby、R、JavaやScala、KotlinなどJVMベースの言語、CやC++のようなLLVMベースの言語などを実行するためのユニバーサルな仮想マシンです。



パッと見すごいんだけど、どうなんだろ。分かれてる方がアップデートやパッチ適用しやすそうだけど。
Twitterがプロダクション環境でscalaを動かしてるようだけど、どのような機能で利用してるのか知りたい。


OracleのSQLPlusを見やすくする

SQL Plus のログインメッセージ等を非表示に。
sqlplus -s USERID/PASSWORD@HOST

表示領域の設定
set heading off
set wrap off
set linesize 133

出力カラムの設定
数値型の一括設定
set numformat 9999999999999999999

カラム毎のカラム長設定
col COL_STRING for a20
col COM_NUMBER for 9999999999

ORACLEの件数指定によるSELECT (MySQLのlimit)

MySQLのlimitによる何件目から何件を取得、をOracleで実装。

MySQLの場合
select * from tbl_test order by colA desc limit 0, 10;

Oracleの場合
SELECT * FROM (
    SELECT dmy.*, ROWNUM rn FROM (
        SELECT * FROM tbl_test WHERE ORDER BY colA DESC
    ) dmy
) WHERE rn >= 1 AND rn <= 10;

注意点は、何番目からの指定方法。
MySQLのstartは0からなのに対し、OracleのROWNUMを使う場合のstartは1から。
また、ROWNUMは各select毎にあるので、件数指定したいROWNUMのカラム名がユニークになるように別名(この例では、rn)を付け、その別名に対して件数指定を行う。

さらに、order byのソートを使う場合は例のようにROWNUM指定の副問い合わせとしてorder byのselectを発行する必要がある。

JAVA JDCB thin接続の自動再接続(connectionProperties、oracle.jdbc.ReadTimeout、oracle.net.CONNECT_TIMEOUT)

Oracleへのjdbc thin 接続の方法でコネクションを張ってOracleの再起動や何かしらの影響でコネクションが切れた場合、thin接続しているプロセスを再起動したりして再度コネクションを張る必要があります。

が、実際はパラメータの設定のみで自動再接続が可能。

設定するパラメータは、「connectionProperties」プロパティの
oracle.jdbc.ReadTimeout
oracle.net.CONNECT_TIMEOUT

例:
connectionProperties="oracle.jdbc.ReadTimeout=600000;oracle.net.CONNECT_TIMEOUT=60000"

ただし、再接続されるタイミングは、thinアプリからDBを参照した時。
この時、切れてるかチェックして切れてれば接続する。なので、一発目のリクエストは失敗する可能性が高い。

Oracleへのjdbc thin 接続

JAVAによる、OracleへのJDCB(thin)接続の方法

実行用スクリプト(JAVAコンパイル兼用)
#!/bin/sh

CLASS=test_jdbc_oracle_thin

javac -classpath $HOME/jdbc/lib/jars/ojdbc14.jar $CLASS.java
echo "*** finished build."

SQL="select table_name from all_tables"

java -classpath $HOME/jdbc/lib/jars/ojdbc14.jar:./ -client $CLASS "$SQL"
echo "*** finished process."


JAVAソース
import java.sql.*;

//気が向いたら下記のも試してみたい
//import oracle.jdbc.*;
//import oracle.jdbc.pool.OracleConnectionCacheManager;
//import oracle.jdbc.pool.OracleDataSource;


public class test_jdbc_oracle_thin {

    public static void main (String args[]) throws SQLException, ClassNotFoundException {

        String sql = args[0];
        System.out.println ("*** SQL=["+ sql +"]");

        // driver load
        Class.forName("oracle.jdbc.driver.OracleDriver");

        Connection conn = DriverManager.getConnection (
                              "jdbc:oracle:thin:@host-name.com1521:oracle-sid"
                            , "CHANGE_USER"
                            , "CNAHGE_PASS"
                          );

        Statement stmt = conn.createStatement(); 
        ResultSet rset = stmt.executeQuery(sql);

        int i = 0;
        while ( rset.next() ) {
            i++;
            //System.out.println (rset.getString(1));
            //System.out.println(rset.getInt(1) + "\t" + rset.getString(2));
            System.out.println(rset.getInt(1));
            if (i > 10) break;
        } 

        // close
        rset.close(); 

        // close
        stmt.close(); 
  
        // close
        conn.close();
    }
}

カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
249位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
38位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm