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 dasar SQL Plus:
- connect: connects to a database
- disconnect: logs off but does not exit
- exit: exists
Buka SQL Plus dan log:
/ as sysdba
Sysdba adalah 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 seperti 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 masuk membutuhkan setidaknya membuat hak istimewa sesi sehingga kami 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 menghapusnya:
SQL> drop user johny;
Itu adalah contoh dasar untuk menunjukkan cara membuat pengguna. Mungkin lebih kompleks. Di atas kami membuat pengguna yang objeknya disimpan di tablespace default database. Agar database rapi, kita harus menempatkan objek pengguna ke ruangnya sendiri (tablespace adalah alokasi ruang dalam database yang dapat berisi objek skema).
Tampilkan tablespace 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 (Tablespace sementara adalah alokasi ruang dalam database yang dapat berisi data sementara yang hanya bertahan selama sesi. Data sementara ini tidak dapat dipulihkan setelah kegagalan proses atau instance.):
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 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 selengkapnya:
DDL
DBMS_METADATA
- http://www.dba-oracle.com/t_1_dbms_metadata.htm
- http://docs.Oracle. com/cd/E11882_01/appdev.112/e25788/d_metada.htm#ARPLS026
- http://docs.Oracle. com/cd/B28359_01/server.111/b28310/general010.htm#ADMIN11562
Objek skema
Perbedaan antara skema dan pengguna
- https://dba. stackexchange.com/questions/37012/difference-between-database-vs-user-vs-schema
- Perbedaan antara pengguna dan skema di Oracle?
Hak Istimewa
Membuat pengguna/skema
- http://docs.Oracle.com/ cd/B19306_01/server.102/b14200/statements_8003.htm
- http://www.techonthenet.com/oracle/schemas/create_schema. php
Membuat tablespace
Perintah SQL Plus