Secara umum skema di oracle sama dengan pengguna. Oracle Database secara otomatis membuat skema saat Anda membuat pengguna. File dengan ekstensi file DDL adalah file Bahasa Definisi Data SQL.
Membuat pengguna baru (menggunakan SQL Plus)
Perintah SQL Plus dasar:
- connect: connects to a database
- disconnect: logs off but does not exit
- exit: exists
Buka SQL Plus dan log:
/ as sysdba
Sysdba adalah sebuah peran dan seperti "root" di unix atau "Administrator" di Windows. Ia melihat semua, bisa melakukan semua. Secara internal, jika Anda terhubung sebagai sysdba, nama skema Anda akan tampak sebagai SYS.
Buat pengguna:
SQL> create user johny identified by 1234;
Lihat semua pengguna dan periksa apakah pengguna johny ada di sana:
SQL> select username from dba_users;
Jika Anda mencoba masuk sebagai johny sekarang Anda akan mendapatkan kesalahan:
ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied
Pengguna untuk login membutuhkan setidaknya membuat hak istimewa sesi jadi kita harus memberikan hak istimewa ini kepada pengguna:
SQL> grant create session to johny;
Sekarang Anda dapat terhubung sebagai pengguna johny:
username: johny
password: 1234
Untuk menyingkirkan pengguna, Anda dapat menjatuhkannya:
SQL> drop user johny;
Itu adalah contoh dasar untuk menunjukkan cara membuat pengguna. Mungkin lebih kompleks. Di atas kami membuat pengguna yang objeknya disimpan dalam tablespace default database. Untuk membuat database rapi kita harus menempatkan objek pengguna ke ruangnya sendiri (tablespace adalah alokasi ruang dalam database yang dapat berisi objek skema).
Tampilkan tablespaces yang sudah dibuat:
SQL> select tablespace_name from dba_tablespaces;
Buat tablespace:
SQL> create tablespace johny_tabspace
2 datafile 'johny_tabspace.dat'
3 size 10M autoextend on;
Buat tablespace sementara (Temporaty tablespace adalah alokasi ruang dalam database yang dapat berisi data sementara yang hanya ada selama sesi. Data sementara ini tidak dapat dipulihkan setelah proses atau instance gagal.):
SQL> create temporary tablespace johny_tabspace_temp
2 tempfile 'johny_tabspace_temp.dat'
3 size 5M autoextend on;
Buat pengguna:
SQL> create user johny
2 identified by 1234
3 default tablespace johny_tabspace
4 temporary tablespace johny_tabspace_temp;
Berikan beberapa hak istimewa:
SQL> grant create session to johny;
SQL> grant create table to johny;
SQL> grant unlimited tablespace to johny;
Masuk sebagai johny dan periksa hak istimewa apa yang dia miliki:
SQL> select * from session_privs;
PRIVILEGE
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
Dengan hak istimewa membuat tabel, pengguna dapat membuat tabel:
SQL> create table johny_table
2 (
3 id int not null,
4 text varchar2(1000),
5 primary key (id)
6 );
Masukkan data:
SQL> insert into johny_table (id, text)
2 values (1, 'This is some text.');
Pilih:
SQL> select * from johny_table;
ID TEXT
1 This is some text.
Untuk mendapatkan data DDL Anda dapat menggunakan paket DBMS_METADATA yang "menyediakan cara bagi Anda untuk mengambil metadata dari kamus database sebagai XML atau membuat DDL dan mengirimkan XML untuk membuat ulang objek.". (dengan bantuan dari http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )
Untuk tabel:
SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
Hasil:
CREATE TABLE "JOHNY"."JOHNY_TABLE"
( "ID" NUMBER(*,0) NOT NULL ENABLE,
"TEXT" VARCHAR2(1000),
PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "JOHNY_TABSPACE" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "JOHNY_TABSPACE"
Untuk indeks:
SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
Hasil:
CREATE UNIQUE INDEX "JOHNY"."SYS_C0013353" ON "JOHNY"."JOHNY_TABLE" ("ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "JOHNY_TABSPACE"
Informasi lebih lanjut:
DDL
DBMS_METADATA
Objek skema
Perbedaan antara skema dan pengguna
Hak Istimewa
Membuat pengguna / skema
Membuat tablespace
Perintah SQL Plus
create user foo ...
. Silakan baca