Oracle डेटाबेस 11g में एक नया स्कीमा / नया उपयोगकर्ता कैसे बनाएं?


86

मैंने एक कंपनी में इंटर्नशिप के लिए आवेदन किया है और एक प्रश्न के रूप में उन्होंने मुझे कुछ आवश्यकताओं के साथ अपनी कंपनी के लिए एक स्कीमा बनाने और उन्हें DDL फ़ाइल मेल करने के लिए कहा है । मैंने Oracle डेटाबेस 11g एक्सप्रेस संस्करण स्थापित किया है, लेकिन मैं Oracle डेटाबेस 11g में एक नया स्कीमा कैसे बनाऊं? मैंने समाधान के लिए नेट में खोज की है लेकिन मुझे समझ नहीं आ रहा है कि मैं क्या करूं। और एक स्कीमा बनाने के बाद, मुझे उन्हें कौन सी फाइल मेल करनी चाहिए?


create user foo ...। कृपया मैनुअल पढ़ें
a_horse_with_no_name

क्या मुझे पता है कि ओरेकल ऑटोमैटिक स्टोरेज मैनेजमेंट क्लस्टर क्या है?
13

4
यह साइट आपके स्वयं के अनुसंधान करने और उत्पाद प्रलेखन से सीखने का विकल्प नहीं है। उस लिंक के लिए दिए गए लिंक को खोजकर आपको बताएगा कि ASM क्या है। आपको शुरुआत में शुरू करने की आवश्यकता है। आप यहां लोगों से यह उम्मीद नहीं कर सकते कि वे पूरे ओरेकल की व्याख्या करें, इसका विषय बहुत बड़ा है; या यहां तक ​​कि हर नए शब्द की व्याख्या करें। हो सकता है कि आप कंपनी को समझाएं कि आपके पास कोई ओरेकल ज्ञान नहीं है, लेकिन वे सीखना और देखना चाहेंगे कि क्या वे आपके लिए प्रशिक्षण प्रदान कर सकते हैं।
एलेक्स पोले

1
Oracle में पूर्ण नवागंतुकों के लिए, यदि आप Oracle डेटाबेस XE का उपयोग करने में सक्षम हैं, तो प्रक्रिया सरल है। XE एक नया उपयोगकर्ता / स्कीमा बनाने के लिए एक वेब UI प्रदान करता है (उर्फ "एप्लीकेशन एक्सप्रेस वर्कस्पेस") मैंने XE 11.2 में यह कोशिश की है। नीचे दिए गए पूर्ण क्रिया 11g उत्तर के लिए @vitfo को क्रेडिट।
पॉल

जवाबों:


240

आमतौर पर 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 प्लस कमांड


3
/ as sysdbaशुरुआत साधन पर चलाने के लिए " c:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe / as sysdbaएक Windows कमांड खोल से"।
उवे कीम

3
इसके लिए भी उपयोगी है: GRANT CREATE VIEW TO <user>; <उपयोगकर्ता> के लिए अनुदान सृजन;
विटोल्ड काकज़ुरबा

मैं का उपयोग कर जुड़ा हुआ है sqlplus system/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=127.0.0.1)(Port=1521))(CONNECT_DATA=(SID=XE)))और फिर तुम्हारा इन सभी आदेशों में टाइप किया। लेकिन फिर, connect myuserमुझे एक त्रुटि मिलती हैORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist̀
स्टीफन

क्या आप हमें पूरी sqlplusआज्ञा दे सकते हैं ? जैसे, ऊपर बनाया गया उपयोगकर्ता के आधार पर, पूरा कमांडsqlplus ???/???@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=127.0.0.1)(Port=1521))(CONNECT_DATA=(SID=???))
स्टीफन

कमांड को ORA-65096: invalid common user or role nameचलाते समय मुझे त्रुटि मिलती हैcreate user ... default tablespace ...
क्रायानुभु

16

यह एक कार्यशील उदाहरण है:

CREATE USER auto_exchange IDENTIFIED BY 123456;
GRANT RESOURCE TO auto_exchange;
GRANT CONNECT TO auto_exchange;
GRANT CREATE VIEW TO auto_exchange;
GRANT CREATE SESSION TO auto_exchange;
GRANT UNLIMITED TABLESPACE TO auto_exchange;

1
यदि आपको " त्रुटि: ORA-65096: अमान्य सामान्य उपयोगकर्ता या भूमिका नाम " का अनुभव होता है, तो " alter session set "_ORACLE_SCRIPT"=true;" निष्पादित करना सुनिश्चित करें ।
उवे कीम

15

चलिए शुरू करते हैं। क्या आपको ओरेकल में कोई ज्ञान है?

पहले आपको यह समझने की जरूरत है कि एक SCHEMA क्या है। एक स्कीमा डेटा, या स्कीमा ऑब्जेक्ट्स की तार्किक संरचनाओं का एक संग्रह है। एक स्कीमा डेटाबेस उपयोगकर्ता के स्वामित्व में है और उस उपयोगकर्ता के समान नाम है। प्रत्येक उपयोगकर्ता एक एकल स्कीमा का मालिक है। स्कीमा ऑब्जेक्ट एसक्यूएल के साथ बनाया और हेरफेर किया जा सकता है।

  1. निर्माता उपयोगकर्ता; - जब भी आप ओरेकल में एक नया उपयोगकर्ता बनाते हैं, तो उपयोगकर्ता नाम के साथ एक स्कीमा बनाया जाता है, जहां उपयोगकर्ता अपनी सभी वस्तुओं को संग्रहीत करता है।
  2. एक्रोडर के लिए अनुदान निर्माण; - ऐसा करने में विफलता आप कुछ नहीं कर सकते।

किसी अन्य उपयोगकर्ता के स्कीमा का उपयोग करने के लिए, आपको उस स्कीमा पर विशिष्ट ऑब्जेक्ट पर विशेषाधिकार दिए जाने की आवश्यकता है या वैकल्पिक रूप से SYSDBA भूमिका सौंपी गई है।

आपको इस तरह से प्रारंभ करवाया जाना चाहिए।


4
SQL> select Username from dba_users
  2  ;

USERNAME
------------------------------
SYS
SYSTEM
ANONYMOUS
APEX_PUBLIC_USER
FLOWS_FILES
APEX_040000
OUTLN
DIP
ORACLE_OCM
XS$NULL
MDSYS

USERNAME
------------------------------
CTXSYS
DBSNMP
XDB
APPQOSSYS
HR

16 rows selected.

SQL> create user testdb identified by password;

User created.

SQL> select username from dba_users;

USERNAME
------------------------------
TESTDB
SYS
SYSTEM
ANONYMOUS
APEX_PUBLIC_USER
FLOWS_FILES
APEX_040000
OUTLN
DIP
ORACLE_OCM
XS$NULL

USERNAME
------------------------------
MDSYS
CTXSYS
DBSNMP
XDB
APPQOSSYS
HR

17 rows selected.

SQL> grant create session to testdb;

Grant succeeded.

SQL> create tablespace testdb_tablespace
  2  datafile 'testdb_tabspace.dat'
  3  size 10M autoextend on;

Tablespace created.

SQL> create temporary tablespace testdb_tablespace_temp
  2  tempfile 'testdb_tabspace_temp.dat'
  3  size 5M autoextend on;

Tablespace created.

SQL> drop user testdb;

User dropped.

SQL> create user testdb
  2  identified by password
  3  default tablespace testdb_tablespace
  4  temporary tablespace testdb_tablespace_temp;

User created.

SQL> grant create session to testdb;

Grant succeeded.

SQL> grant create table to testdb;

Grant succeeded.

SQL> grant unlimited tablespace to testdb;

Grant succeeded.

SQL>

0

Oracle Sql डेवलपर से, sql वर्कशीट में नीचे निष्पादित करें:

create user lctest identified by lctest;
grant dba to lctest;

फिर "ओरेकल कनेक्शन" -> नए कनेक्शन पर राइट क्लिक करें, फिर कनेक्शन नाम से उपयोगकर्ता नाम पासवर्ड के लिए सब कुछ सबसे सुरक्षित बनाएं। टेस्ट कनेक्शन पास होगा। फिर कनेक्ट होने के बाद आपको स्कीमा दिखाई देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.