โดยทั่วไปการพูดสคีมาใน oracle จะเหมือนกับผู้ใช้ Oracle Database สร้างสคีมาโดยอัตโนมัติเมื่อคุณสร้างผู้ใช้ ไฟล์ที่มีนามสกุลไฟล์ DDL คือไฟล์ SQL Data Definition Language
การสร้างผู้ใช้ใหม่ (โดยใช้ SQL Plus)
คำสั่งพื้นฐานของ SQL Plus:
- connect: connects to a database
- disconnect: logs off but does not exit
- exit: exists
เปิด SQL Plus และบันทึก:
/ as sysdba
sysdba มีบทบาทและเป็นเหมือน "root" บน unix หรือ "Administrator" บน Windows มันเห็นทั้งหมดทำได้ทั้งหมด ภายในหากคุณเชื่อมต่อเป็น sysdba ชื่อสคีมาของคุณจะปรากฏเป็น SYS
สร้างผู้ใช้:
SQL> create user johny identified by 1234;
ดูผู้ใช้ทั้งหมดและตรวจสอบว่ามีผู้ใช้ johny อยู่ที่นั่นหรือไม่:
SQL> select username from dba_users;
หากคุณพยายามเข้าสู่ระบบด้วย johny ตอนนี้คุณจะได้รับข้อผิดพลาด:
ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied
อย่างน้อยผู้ใช้ที่จะเข้าสู่ระบบจำเป็นต้องสร้าง session priviledge ดังนั้นเราต้องให้สิทธิ์นี้แก่ผู้ใช้:
SQL> grant create session to johny;
ตอนนี้คุณสามารถเชื่อมต่อในฐานะผู้ใช้ johny:
username: johny
password: 1234
ในการกำจัดผู้ใช้คุณสามารถวางได้:
SQL> drop user johny;
นั่นเป็นตัวอย่างพื้นฐานเพื่อแสดงวิธีสร้างผู้ใช้ มันอาจจะซับซ้อนกว่านี้ ด้านบนเราสร้างผู้ใช้ที่มีวัตถุถูกเก็บไว้ในพื้นที่ตารางเริ่มต้นของฐานข้อมูล เพื่อให้ฐานข้อมูลเป็นระเบียบเรียบร้อยเราควรวางวัตถุของผู้ใช้ไว้ในพื้นที่ของตัวเอง (พื้นที่ตารางคือการจัดสรรพื้นที่ในฐานข้อมูลที่สามารถมีวัตถุสคีมา)
แสดงตารางที่สร้างไว้แล้ว:
SQL> select tablespace_name from dba_tablespaces;
สร้างช้อนโต๊ะ:
SQL> create tablespace johny_tabspace
2 datafile 'johny_tabspace.dat'
3 size 10M autoextend on;
สร้างพื้นที่ตารางชั่วคราว (Temporaty tableace คือการจัดสรรพื้นที่ในฐานข้อมูลที่สามารถมีข้อมูลชั่วคราวที่ยังคงอยู่ในช่วงเวลาของเซสชันเท่านั้นข้อมูลชั่วคราวนี้ไม่สามารถกู้คืนได้หลังจากกระบวนการหรืออินสแตนซ์ล้มเหลว):
SQL> create temporary tablespace johny_tabspace_temp
2 tempfile 'johny_tabspace_temp.dat'
3 size 5M autoextend on;
สร้างผู้ใช้:
SQL> create user johny
2 identified by 1234
3 default tablespace johny_tabspace
4 temporary tablespace johny_tabspace_temp;
ให้สิทธิพิเศษบางประการ:
SQL> grant create session to johny;
SQL> grant create table to johny;
SQL> grant unlimited tablespace to johny;
เข้าสู่ระบบด้วย johny และตรวจสอบว่าเขามีสิทธิพิเศษอะไรบ้าง:
SQL> select * from session_privs;
PRIVILEGE
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
ด้วยสิทธิ์สร้างตารางผู้ใช้สามารถสร้างตาราง:
SQL> create table johny_table
2 (
3 id int not null,
4 text varchar2(1000),
5 primary key (id)
6 );
แทรกข้อมูล:
SQL> insert into johny_table (id, text)
2 values (1, 'This is some text.');
เลือก:
SQL> select * from johny_table;
ID TEXT
1 This is some text.
ในการรับข้อมูล DDL คุณสามารถใช้แพ็คเกจ DBMS_METADATA ที่ "ให้วิธีการดึงข้อมูลเมตาจากพจนานุกรมฐานข้อมูลเป็น XML หรือการสร้าง DDL และส่ง XML เพื่อสร้างออบเจ็กต์ใหม่" (ด้วยความช่วยเหลือจากhttp://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )
สำหรับโต๊ะ:
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;
ผลลัพธ์:
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"
สำหรับดัชนี:
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;
ผลลัพธ์:
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"
ข้อมูลมากกว่านี้:
DDL
DBMS_METADATA
สคีมาวัตถุ
ความแตกต่างระหว่างสคีมาและผู้ใช้
สิทธิพิเศษ
การสร้างผู้ใช้ / สคีมา
การสร้างพื้นที่ตาราง
คำสั่ง SQL Plus
create user foo ...
. โปรดอ่านคู่มือ