Change tablespace pada Table

Jika anda ingin mengubah storage table yang semua berada di tablespace A ingin anda pindahkan ke tablespace B berikut langkah-langkah untuk melakukan hal diatas.
contoh disini saya akan menggunakan sqlplus saja tidak menggunakan Toad atau Sql Developer.

Langkah Pertama

Konek ke skema database dimana table akan di ubah tablespacenya.Sebagai contoh saya akan mengubah tablespace dari table TH dari tablespace DATA ke tablespace CORE_CRM_TRX.

$ sqlplus hr/hr@sid
SQL> SELECT tablespace_name FROM all_tables WHERE table_name = 'TH';
TABLESPACE_NAME
------------------
DATA

Langkah Kedua

 SQL> ALTER TABLE th move TABLESPACE CORE_CRM_TRX;
TABLE altered

Langkah Ketiga

Konek ke skema database dimana table akan di ubah tablespacenya.Sebagai contoh saya akan mengubah tablespace dari table TH dari tablespace DATA ke tablespace CORE_CRM_TRX.

SQL> SELECT tablespace_name FROM all_tables WHERE table_name = 'TH';
TABLESPACE_NAME
------------------
CORE_CRM_TRX

Sekarang table TH sudah menggunakan tablespace CORE_CRM_TRX.

Using oracle built in function

Berikut dijelaskan contoh-contoh penggunaan fungsi-fungsi oracle yang sudah di post berikutnya;

Penggunaan UPPER dan LOWER

SQL> SELECT UPPER(first_name) T1, LOWER(last_name) T2 FROM employees;
 
SQL>select UPPER('Nailuvar Education Center') AS TEST_UPPER FROM dual;

Contoh Penggunaan fungsi CONCAT

SQL> SELECT CONCAT('My Name is ', first_name) name FROM employees;
 
SQL>select CONCAT('Nailuvar ', ' Education Center') AS header FROM dual;

Oracle Function Reference

Oracle mempunya built in function yang cukup lengkap untuk beberapa kebutuhan. Berikut adalah daftar fungsi-fungsi yang tersedia di oracle yang sering digunakan.

Single Row Function

Character Function

Nama Fungsi Kegunaan Contoh
LOWER (column | expression) Fungsi yang digunakan untuk merubah column | expression menjadi lower case lihat contoh
UPPER(column | expression) Fungsi yang digunakan untuk merubah column | expression menjadi upper case / Huruf kapital lihat contoh
CONCAT(column1 | expression1,column2 | expression2) Fungsi yang digunakan untuk menggabungkan column1 | expression1 dengan column2 | expression2 menjadi menjadi satu kata lihat contoh

EXECUTE IMMEDIATE

Execute immediate merupakan pengganti dari DBMS_SQL, jika kita sebelumnya menggunakan DBMS_SQL cukup merepotkan sekarang anda tidak perlu kawatir lagi. Yang perlu diingat perintah execute immediate tidak otomatis commit untuk perintah-perintah DML, jadi kita harus melakukan commit atau rollback manual. Sql yang dieksekusi tidak perlu diakhiri dengan tanda titik koma (;).

Berikut beberapa contoh penggunaan execute immediate.

Menggunakan perintah DDL

BEGIN
EXECUTE IMMEDIATE 'create table belajar(t1 number(3))';
END;
 
SQL> SELECT * FROM belajar;
 
T1
---

Menggunakan Variable dalam dinamik SQL

Contoh berikut adalah insert data ketable belajar.

DECLARE 
v_t1 NUMBER(3); -- deklarasi variable v_t1
BEGIN
 
v_t1 := 123; -- assignment varibale v_t1 dengna nilai 123
 
EXECUTE IMMEDIATE 'insert into belajar(t1) values (:t1) ' USING v_t1;
COMMIT;
 
SELECT * FROM belajar;
 
END;
 
SQL> SELECT * FROM belajar;
 
T1
----
123

“:t1″ adalah variable yang akan digantikan oleh v_t1, binding yang digunakan adalah “:”

Mengembalikan Nilai

Untuk mendapatkan nilai dari execute immediate kita menggunakan keyword INTO

DECLARE 
v_t1 NUMBER(3); -- deklarasi variable
BEGIN
 
EXECUTE IMMEDIATE 'select t1 + 5 from belajar'  INTO v_t1;
 
 
dbms_output.put_line ('Hasil : '||v_t1);
 
Hasil : 128
 
END;

jika select membutuhkan kondisi, misal dengan tambahan filter t1=x query menjadi execute ‘select t1 + 5 from belajar where t1=:x’ into v_t1 using x ;

Menjalankan Package/Store Procedure / Function

Contoh procedure yang digunakan adalah

DECLARE 
  v_str VARCHAR2(20);
  v_serviceName VARCHAR2(40) : 'MyPackage.printHello';
BEGIN
  v_str := 'Selamat Datang di Nailuvar Education Center';
  EXECUTE IMMEDIATE 'BEGIN '|| v_serviceName || ' (:a,:b); END;' USING IN v_str , OUT v_status;
 
 dbms_output.put_line ('Status = '||v_status);
END;

Menyimpan hasil dalam bentuk Record PL/SQL
contoh ini akan menampilkan data employee pada schema HR, data yang akan ditampilkan adalah employee_id dan nama.

DECLARE 
-- deklarasi type record  dengan nama RData
TYPE RData IS RECORD (
 emp_id NUMBER(9),
 emp_name VARCHAR2(40)
);
 
--deklarasi variable v_data dengan type RData.
 
BEGIN
  EXECUTE IMMEDIATE 'select employee_id,first_name || last_name from employee where employee_id = 1234 ' INTO v_data;
END;

demikian beberapa contoh penggunaan execute immediate yang membuat pemrosesan query dinamis menjadi lebih simple jika dibandingkan menggunakan DBMS_SQL. Yang harus diperhatikan adalah penanganan error, setiap kemungkinan error harus ditangani.

Selamat Mencoba.