2015年11月23日 星期一

Oracle - Tablespace 之建立與移除

==== 建立 Table Space ====
create tablespace test_tablespace
datafile
  '/aaa/bbb/ccc/test_tablespace_01.dbf' size 5M autoextend on next 1M maxsize 32767M,
  '/aaa/bbb/ccc/test_tablespace_02.dbf' size 5M autoextend on next 1M maxsize 32767M,
  '/aaa/bbb/ccc/test_tablespace_03.dbf' size 5M autoextend on next 1M maxsize 32767M,
  '/aaa/bbb/ccc/test_tablespace_04.dbf' size 5M autoextend on next 1M maxsize 32767M
;

建立一個名為 test_tablespace 之 Tablespace
並指定四個 data file 分別為
    /aaa/bbb/ccc/test_tablespace_01.dbf
    /aaa/bbb/ccc/test_tablespace_02.dbf
    /aaa/bbb/ccc/test_tablespace_03.dbf
    /aaa/bbb/ccc/test_tablespace_04.dbf
給 test_tablespace
這四個 data file 皆為初始大小 5 MB, 大小會自動增加,每次增加 1 MB, 最多增加到 32767 MB 為止




==== 移除 Table Space ====
drop tablespace test_tablespace including contents and datafiles cascade contsraints
移除 Tablespace test_tablespace

2015年11月5日 星期四

可設定 Timeout 之 Java Command Line Executor



import java.util.concurrent.TimeoutException;

public class TimeoutCommandLine {
    public static int executeCommandLine(String commandLine, long timeout)
            throws
Exception {
        Process process = Runtime.getRuntime().exec(commandLine);
        Worker worker = new Worker(process);
        worker.start();
        try {
            worker.join(timeout);
            if (worker.exit != null) {
                return worker.exit;
            } else {
                throw new TimeoutException();
            }
        } catch (InterruptedException ex) {
            worker.interrupt();
            Thread.currentThread().interrupt();
            throw ex;
        } finally {
            process.destroy();
        }
    }

    private static class Worker extends Thread {
        private final Process process;
        private Integer exit;

        private Worker(Process process) {
            this.process = process;
        }

        public void run() {
            try {
                exit = process.waitFor();
            } catch (InterruptedException ignore) {
                return;
            }
        }
    }
}
使用方式:
TimeoutCommandLine.executeCommandLine("rsh xxxHost hostname", 2000);
設定執行 command rsh xxxHost hostname , 超過 2秒 沒回應即回傳 TimeoutException。