ablog

不器用で落着きのない技術者のメモ

Solaris10 で時刻を修正する

Solaris10 では「date -a [-]秒」で時刻を修正できる。
5分進めたいなら、

# date -a 300

5分遅らせたいなら、

# date -a -300

コマンドを実行すると、徐々に時刻が修正される。
Oralce が動いている Solaris で時刻を修正し、その間に別のマシンで常駐プログラム*1を実行してみた。

  • Solaris マシンの時刻を進める。
# uname -a
SunOS solaris101 5.10 Generic_137138-09 i86pc i386 i86pc
# date
Wed Apr  8 15:56:36 JST 2009
# date -a 360
  • 別のマシンで常駐プログラムを実行する。
$ java HogeSelect 
2009-04-08 15:57:21.0
2009-04-08 15:58:23.0
2009-04-08 15:59:27.0
2009-04-08 16:00:30.0
...
2009-04-08 17:39:21.0
2009-04-08 17:40:23.0
2009-04-08 17:41:23.0
2009-04-08 17:42:23.0
2009-04-08 17:43:23.0
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class HogeSelect {
	public static void main(String args[]) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet resultSet = null;
		try {
			Class.forName ("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection
				("jdbc:oracle:thin:@192.168.45.101:1521:orcl","scott","tiger");
			stmt = conn.createStatement();
			for (;;) {
				resultSet = stmt.executeQuery("select sysdate from dual");
				for(;resultSet.next();) {
					System.out.println(resultSet.getString(1));
					try {
						Thread.sleep(60000);
					} catch(InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		} catch (SQLException e) {
			System.out.println("Error code: " + e.getErrorCode());
			System.out.println("SQL state: " + e.getSQLState());
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			try {
				if (resultSet != null) {
		  			resultSet.close();
				}
			} catch (SQLException e){
				e.printStackTrace();
			}
			try {
				if (stmt != null) {
		  			stmt.close();
				}
			} catch (SQLException e){
				e.printStackTrace();
			}
			try {
				if (conn != null) {
		  			conn.close();
				}
			} catch (SQLException e){
				e.printStackTrace();
			}
			System.out.println("finally at Hoge#main()");
		}
	}
}

*1:1分に1回、Oracle から sysdate を取得する。