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?
86
create user foo ...
. Silakan bacaJawaban:
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:
Buka SQL Plus dan log:
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:
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
sumber
/ as sysdba
awalnya berarti menjalankan "c:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe / as sysdba
" dari shell perintah Windows.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, melakukanconnect myuser
saya mendapatkan kesalahanORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist̀
sqlplus
perintah 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=???))
ORA-65096: invalid common user or role name
saat menjalankancreate user ... default tablespace ...
perintahIni 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;
sumber
alter session set "_ORACLE_SCRIPT"=true;
".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.
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.
sumber
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>
sumber
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.
sumber