Memakai ttIsql di Oracle TimesTen


ttIsql adalah sebuah tool bawaan Oracle TimesTen yang dapat dipakai untuk berinteraksi dengan database.   Tool ini bekerja mirip seperti SQL*Plus untuk Oracle Database.   Bagi pengguna MySQL Server, tool ini mirip seperti client CLI mysql.

Pada saat menjalankan ttIsql, saya dapat menyertakan DSN untuk database yang akan dipakai, seperti:

C:\>ttIsql LATIHAN

Pada perintah di atas, saya akan melakukan koneksi ke DSN bernama LATIHAN (tidak case-sensitive di Windows).   Bila ini adalah koneksi pertama kalinya, maka TimesTen akan me-load database dari file ke memori.

Bila ingin menyertakan atribut koneksi, maka pada saat menjalankan ttIsql, saya dapat memberikan parameter -connStr seperti berikut ini:

C:\>ttIsql -connStr "DSN=LATIHAN;UID=SolidSnake"

Pada contoh di atas, saya melakukan koneksi ke DSN LATIHAN dengan menyertakan atribut UID (nama user) berupa seorang external user bernama SolidSnake.   Bila connection attribute sudah didefinisikan saat membuat DSN, maka connection attribute yang saya atur saat membuat DSN yang akan dipakai.

Setelah itu akan muncul prompt Command> dimana saya dapat mengetikkan perintah khusus ttIsql dan juga perintah SQL.   Sebagai contoh, bila ingin membuat sebuah tabel baru, saya dapat memberitan perintah SQL berupa CREATE TABLE seperti berikut ini:

Command> CREATE TABLE sensus (
       >   age NUMBER,
       >   workclass VARCHAR(20),
       >   fnlwgt NUMBER,
       >   education VARCHAR(20),
       >   education_num NUMBER,
       >   marital_status VARCHAR(20),
       >   occupation VARCHAR(20),
       >   relationship VARCHAR(20),
       >   race VARCHAR(20),
       >   sex CHAR(6),
       >   capital_gain NUMBER,
       >   capital_loss NUMBER,
       >   hours_per_week NUMBER,
       >   native_country VARCHAR(20)
       > );

Selain mengetik perintah secara satu per satu, saya juga dapat menyuruh ttIsql untuk mengerjakan seluruh perintah dalam file yang telah saya siapkan sebelumnya.   Sebagai contoh, perintah SQL untuk mengisi tabel di atas terletak pada sebuah file bernama data.sql.   Untuk mengerjakan file tersebut, saya memberikan perintah seperti berikut ini:

Command> run E:\data.sql

Untuk melihat daftar tabel yang dimiliki oleh user, saya dapat memberikan perintah berikut ini:

Command> tables;
  SOLIDSNAKE.SENSUS
1 table found.

Untuk melihat seluruh tabel yang ada, saya menggunakan perintah berikut ini:

Command> alltables;
  SOLIDSNAKE.SENSUS
  SYS.ACCESS$
  SYS.ARGUMENT$
  SYS.CACHE_GROUP
  SYS.COLUMNS
  SYS.COLUMN_HISTORY
  SYS.COL_STATS
  SYS.DEPENDENCY$
  SYS.DIR$
  SYS.DUAL
  SYS.ERROR$
  SYS.IDL_CHAR$
  SYS.IDL_SB4$
  SYS.IDL_UB1$
  SYS.IDL_UB2$
  SYS.INDEXES
  SYS.MONITOR
  SYS.NCOMP_DLL$
  SYS.OBJ$
  SYS.OBJAUTH$
  SYS.OBJERROR$
  SYS.PLAN
  SYS.PLSCOPE_ACTION$
  SYS.PLSCOPE_IDENTIFIER$
  SYS.PROCEDURE$
  SYS.PROCEDUREINFO$
  SYS.PROCEDUREPLSQL$
  SYS.REPSTATS
  SYS.SEQUENCES
  SYS.SETTINGS$
  SYS.SNAPSHOT_DESCRIPTION
  SYS.SNAPSHOT_INFO
  SYS.SNAPSHOT_LATCH_INFO
  SYS.SNAPSHOT_REPL_PEER
  SYS.SNAPSHOT_VALUE_CGGROUP
  SYS.SNAPSHOT_VALUE_CKPTHIST
  SYS.SNAPSHOT_VALUE_CONFIG
  SYS.SNAPSHOT_VALUE_GENERIC
  SYS.SNAPSHOT_VALUE_GRIDMEMBER
  SYS.SNAPSHOT_VALUE_GRIDNODE
  SYS.SNAPSHOT_VALUE_LATCH
  SYS.SNAPSHOT_VALUE_LOGHOLD
  SYS.SNAPSHOT_VALUE_PARAWT
  SYS.SNAPSHOT_VALUE_PLSQL
  SYS.SNAPSHOT_VALUE_REPL
  SYS.SNAPSHOT_VALUE_SQL
  SYS.SNAPSHOT_VALUE_XLA
  SYS.SOURCE$
  SYS.STATNAMES
  SYS.SYN$
  SYS.SYSAUTH$
  SYS.SYSTEMSTATS
  SYS.SYSTEM_PRIVILEGE_MAP
  SYS.TABLES
  SYS.TABLE_HISTORY
  SYS.TABLE_PRIVILEGE_MAP
  SYS.TAB_SIZES$
  SYS.TBL_STATS
  SYS.TCOL_STATS
  SYS.TINDEXES
  SYS.TRANSACTION_LOG_API
  SYS.TTABLES
  SYS.TTBL_STATS
  SYS.TT_STATS_PARAM
  SYS.USER$
  SYS.USER_ASTATUS_MAP
  SYS.UTL_RECOMP_COMPILED
  SYS.UTL_RECOMP_ERRORS
  SYS.UTL_RECOMP_SORTED
  SYS.VIEWS
  SYS.WARNING_SETTINGS$
  SYS.XLASUBSCRIPTIONS
  TTREP.CLIENTFAILOVER
  TTREP.REPELEMENTS
  TTREP.REPLICATIONS
  TTREP.REPNETWORK
  TTREP.REPPEERS
  TTREP.REPSTORES
  TTREP.REPSUBSCRIPTIONS
  TTREP.REPTABLES
  TTREP.TTSTORES
81 tables found.

Tabel yang ada di schema SYS dan TTREP dipakai untuk keperluan internal TimesTen.   Satu-satunya tabel yang dibuat oleh user hanya tabel Sensus.

Untuk melihat struktur sebuah tabel, saya dapat menggunakan perintah describe atau sering kali disingkat menjadi desc seperti pada contoh berikut ini:

Command> desc SYS.USER$;

System table SYS.USER$:
  Columns:
    USER#                           TT_INTEGER NOT NULL
    NAME                            TT_CHAR (30) NOT NULL
    TYPE#                           TT_TINYINT NOT NULL
    DEFROLE                         TT_TINYINT NOT NULL
    PASSWORD                        TT_CHAR (60)
    CTIME                           TT_TIMESTAMP NOT NULL
    PTIME                           TT_TIMESTAMP
    LTIME                           TT_TIMESTAMP
    USER$ID                         TT_INTEGER NOT NULL
    IDENTIFICATION                  TT_TINYINT NOT NULL
    ASTATUS                         TT_TINYINT NOT NULL
    SYS1                            BINARY (2) NOT NULL
    SYS2                            BINARY (16) NOT NULL

1 table found.
(primary key columns are indicated with *)

Saya dapat menggunakan perintah history untuk melihat daftar perintah yang pernah diberikan.   Dengan menggunakan tanda seru (!) yang diikuti nomor history,  saya bisa mengerjakan kembali perintah tersebut.   Tanda seru dua kali (!!) akan mengerjakan perintah terakhir.

History di ttIsql

History di ttIsql

Gunakan perintah dssize untuk melihat status memori, seperti contoh berikut ini (satuan dalam MB):

Command> dssize;

  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         17767
  PERM_IN_USE_HIGH_WATER:   17767
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         7931
  TEMP_IN_USE_HIGH_WATER:   7994

Untuk melihat ukuran sebuah tabel,  saya dapat memanggil procedure ttComputeTabSizes() diikuti dengan perintah tablesize seperti yang diperlihatkan oleh contoh berikut ini (satuan dalam bytes):

Command> call ttComputeTabSizes('sensus');
Command> tablesize sensus;

Sizes of SOLID.SENSUS:

  INLINE_ALLOC_BYTES:   10565856
  NUM_USED_ROWS:        32129
  NUM_FREE_ROWS:        127
  AVG_ROW_LEN:          327
  OUT_OF_LINE_BYTES:    0
  METADATA_BYTES:       5328
  TOTAL_BYTES:          10571184
  LAST_UPDATED:         2013-09-14 10:17:37.000000

1 table found.

Untuk melihat nilai dari seluruh connection attribute yang ada, gunakan perintah show all. Untuk mengubah nilai sebuah connection attribute, gunakan perintah set, seperti yang diperlihatkan pada contoh berikut ini:

Command> show autocommit
autocommit = 1 (ON)
Command> set autocommit 0

Command> show autocommit
autocommit = 0 (OFF)

ttIsql mendukung definisi variabel dan dapat mengerjakan PL/SQL anonymous block, seperti yang ditunjukkan pada gambar berikut ini:

Variabel dan PL/SQL di ttIsql

Variabel dan PL/SQL di ttIsql

Untuk mengukur waktu eksekusi sebuah query (berdasarkan pemanggilan ODBC),  saya dapat menggunakan perintah timing.   Hal ini sebaiknya diikuti dengan perintah verbosity 0 sehingga waktu selama mencetak ke layar tidak akan ikut dihitung.   Berikut ini adalah contoh tampilan waktu eksekusi untuk data sensus yang terdiri atas 32.129 baris atau sekitar 4.6 MB bila berdasarkan ukuran file backup SQL INSERT-nya:

Command> timing 1;

Command> verbosity 0;

Command> SELECT * FROM sensus;
Execution time (SQLExecute + Fetch Loop) = 0.120389 seconds.

Command> SELECT COUNT(sex) FROM sensus WHERE sex = 'Female';
Execution time (SQLExecute + Fetch Loop) = 0.003853 seconds.

Command> SELECT COUNT(age) FROM sensus WHERE age < 20; 
Execution time (SQLExecute + Fetch Loop) = 0.003528 seconds. 

Command> SELECT SUM(fnlwgt) FROM sensus;
Execution time (SQLExecute + Fetch Loop) = 0.027481 seconds.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: