आम तौर पर ऑरैकल में एक स्कीमा बोलना उपयोगकर्ता के समान होता है। जब आप उपयोगकर्ता बनाते हैं तो 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;
अस्थायी टेबलस्पेस बनाएं (अस्थायी टेबलस्पेस डेटाबेस में स्थान का आवंटन है जिसमें क्षणिक डेटा हो सकता है जो केवल एक सत्र की अवधि के लिए बना रहता है। यह क्षणिक डेटा प्रक्रिया या आवृत्ति विफलता के बाद पुनर्प्राप्त नहीं किया जा सकता है।):
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"
अधिक जानकारी:
डीडीएल
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
स्कीमा ऑब्जेक्ट
स्कीमा और उपयोगकर्ता के बीच अंतर
- https://dba. stackexchange.com/questions/37012/difference-between-database-vs-user-vs-schema
- एक उपयोगकर्ता के बीच अंतर और Oracle में एक स्कीमा?
विशेषाधिकार
उपयोगकर्ता/स्कीमा बनाना
- http://docs.oracle.com/ cd/B19306_01/server.102/b14200/statements_8003.htm
- http://www.techonthenet.com/oracle/schemas/create_schema। php
टेबलस्पेस बनाना
एसक्यूएल प्लस कमांड्स