आमतौर पर oracle में स्कीमा बोलना उपयोगकर्ता के समान है। जब आप एक उपयोगकर्ता बनाते हैं तो Oracle डेटाबेस स्वतः एक स्कीमा बनाता है। DDL फाइल एक्सटेंशन के साथ एक फाइल SQL डेटा डेफिनिशन लैंग्वेज फाइल है।
नया उपयोगकर्ता बनाना (SQL प्लस का उपयोग करके)
मूल एसक्यूएल प्लस कमांड:
- connect: connects to a database
- disconnect: logs off but does not exit
- exit: exists
SQL प्लस खोलें और लॉग करें:
/ as sysdba
Sysdba एक भूमिका है और विंडोज पर यूनिक्स या "एडमिनिस्ट्रेटर" पर "रूट" की तरह है। यह सब देखता है, सब कर सकता है। आंतरिक रूप से, यदि आप sysdba के रूप में जुड़ते हैं, तो आपका स्कीमा नाम SYS प्रतीत होगा।
एक उपयोगकर्ता बनाएँ:
SQL> create user johny identified by 1234;
सभी उपयोगकर्ता देखें और जांचें कि उपयोगकर्ता जॉनी वहां है:
SQL> select username from dba_users;
यदि आप जॉनी के रूप में लॉगिन करने की कोशिश करते हैं तो आपको एक त्रुटि मिलेगी:
ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied
लॉगिन करने के लिए उपयोगकर्ता को कम से कम सत्र निजीकरण करने की आवश्यकता होती है, इसलिए हमें उपयोगकर्ता को यह विशेषाधिकार देना होगा:
SQL> grant create session to 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 टेबलस्पेस डेटाबेस में स्थान का एक आवंटन है जिसमें क्षणिक डेटा हो सकता है जो केवल एक सत्र की अवधि के लिए बनी रहती है। यह क्षणिक डेटा प्रक्रिया या उदाहरण विफलता के बाद पुनर्प्राप्त नहीं किया जा सकता है।)
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;
जॉनी के रूप में लॉगिन करें और देखें कि उसके पास क्या विशेषाधिकार हैं:
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 प्लस कमांड
create user foo ...
। कृपया मैनुअल पढ़ें