Bagaimana cara membuat skema baru / pengguna baru di Oracle Database 11g?

86

Saya telah melamar magang di sebuah perusahaan dan sebagai pertanyaan mereka meminta saya untuk membuat skema untuk perusahaan mereka dengan persyaratan tertentu dan mengirimkan file DDL kepada mereka . Saya telah menginstal database Oracle 11g Express edition, tetapi bagaimana cara membuat skema baru di database Oracle 11g? Saya telah mencari di internet untuk mendapatkan solusi tetapi saya tidak mengerti apa yang harus dilakukan. Dan setelah membuat skema, file mana yang harus saya kirimkan?

acoder
sumber
create user foo .... Silakan baca
manual-
bolehkah saya tahu apa itu cluster manajemen penyimpanan otomatis oracle?
acoder
4
Situs ini bukan pengganti untuk melakukan penelitian dan pembelajaran Anda sendiri dari dokumentasi produk. Mencari tautan yang diberikan Ben untuk istilah itu akan memberi tahu Anda apa itu ASM juga. Anda harus mulai dari awal. Anda tidak dapat mengharapkan orang di sini untuk menjelaskan keseluruhan Oracle, topik yang terlalu besar; atau bahkan menjelaskan setiap istilah baru yang Anda temukan. Mungkin Anda harus menjelaskan kepada perusahaan bahwa Anda tidak memiliki pengetahuan Oracle, tetapi ingin belajar dan melihat apakah mereka dapat memberikan pelatihan untuk Anda.
Alex Poole
1
Untuk pendatang baru di Oracle, prosesnya disederhanakan jika Anda dapat menggunakan Oracle Database XE. XE menyediakan UI Web untuk membuat pengguna / skema baru (alias "Ruang Kerja Ekspres Aplikasi") Saya sudah mencoba ini di XE 11.2. Penghargaan untuk @vitfo untuk jawaban lengkap 11g di bawah ini.
Paul

Jawaban:

242

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 SQL Plus dasar:

  - connect: connects to a database
  - disconnect: logs off but does not exit
  - exit: exists

Buka SQL Plus dan log:

/ as sysdba

Sysdba adalah sebuah 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 sebagai 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 login membutuhkan setidaknya membuat hak istimewa sesi jadi kita 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 menjatuhkannya:

SQL> drop user johny;

Itu adalah contoh dasar untuk menunjukkan cara membuat pengguna. Mungkin lebih kompleks. Di atas kami membuat pengguna yang objeknya disimpan dalam tablespace default database. Untuk membuat database rapi kita harus menempatkan objek pengguna ke ruangnya sendiri (tablespace adalah alokasi ruang dalam database yang dapat berisi objek skema).

Tampilkan tablespaces 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 (Temporaty tablespace adalah alokasi ruang dalam database yang dapat berisi data sementara yang hanya ada selama sesi. Data sementara ini tidak dapat dipulihkan setelah proses atau instance gagal.):

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 istimewa 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 lebih lanjut:

DDL

DBMS_METADATA

Objek skema

Perbedaan antara skema dan pengguna

Hak Istimewa

Membuat pengguna / skema

Membuat tablespace

Perintah SQL Plus

vitfo
sumber
3
Pada / as sysdbaawalnya berarti menjalankan " c:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe / as sysdba" dari shell perintah Windows.
Uwe Keim
3
Juga berguna untuk memiliki: GRANT CREATE VIEW TO <user>; GRANT BUAT URUTAN KE <user>;
Witold Kaczurba
Saya terhubung menggunakan sqlplus system/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=127.0.0.1)(Port=1521))(CONNECT_DATA=(SID=XE)))dan kemudian mengetik semua perintah Anda ini. Tapi kemudian, melakukan connect myusersaya mendapatkan kesalahanORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist̀
Stephane
Bisakah Anda memberi kami sqlplusperintah lengkap ? Seperti, berdasarkan pengguna yang baru saja dibuat di atas, memiliki perintah lengkapsqlplus ???/???@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=127.0.0.1)(Port=1521))(CONNECT_DATA=(SID=???))
Stephane
Saya mendapatkan kesalahan ORA-65096: invalid common user or role namesaat menjalankan create user ... default tablespace ...perintah
cryanbhu
16

Ini adalah contoh yang berfungsi:

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;
Do Nhu Vy
sumber
1
Jika Anda mengalami " kesalahan: ORA-65096: pengguna umum atau nama peran tidak valid ", pastikan untuk mengeksekusi " alter session set "_ORACLE_SCRIPT"=true;".
Uwe Keim
15

Mari kita mulai. Apakah Anda memiliki pengetahuan tentang Oracle?

Pertama, Anda perlu memahami apa itu SCHEMA. Skema adalah kumpulan dari struktur data logis, atau objek skema. Skema dimiliki oleh pengguna database dan memiliki nama yang sama dengan pengguna tersebut. Setiap pengguna memiliki satu skema. Objek skema dapat dibuat dan dimanipulasi dengan SQL.

  1. BUAT acoder PENGGUNA; - setiap kali Anda membuat pengguna baru di Oracle, skema dengan nama yang sama dengan nama pengguna dibuat di mana semua objeknya disimpan.
  2. GRANT CREATE SESSION TO acoder; - Kegagalan melakukan ini, Anda tidak dapat melakukan apa-apa.

Untuk mengakses skema pengguna lain, Anda harus diberikan hak istimewa pada objek tertentu pada skema tersebut atau secara opsional memiliki peran SYSDBA yang ditetapkan.

Itu seharusnya membantu Anda memulai.

Tav
sumber
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>
Raj Sharma
sumber
0

Dari pengembang oracle Sql, jalankan yang di bawah ini di lembar kerja sql:

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

lalu klik kanan pada "Oracle connection" -> new connection, lalu buat semua yang paling penting mulai dari nama koneksi hingga kata sandi nama pengguna. Koneksi uji harus lulus. Kemudian setelah terkoneksi anda akan melihat skema.

Feng Zhang
sumber