Nói chung một lược đồ trong oracle cũng giống như một người dùng. Cơ sở dữ liệu Oracle tự động tạo một lược đồ khi bạn tạo một người dùng. Tệp có phần mở rộng tệp DDL là tệp Ngôn ngữ Định nghĩa Dữ liệu SQL.
Tạo người dùng mới (sử dụng SQL Plus)
Các lệnh SQL Plus cơ bản:
- connect: connects to a database
- disconnect: logs off but does not exit
- exit: exists
Mở SQL Plus và đăng nhập:
/ as sysdba
Sysdba là một vai trò và giống như "root" trên unix hoặc "Administrator" trên Windows. Nó nhìn thấy tất cả, có thể làm tất cả. Trong nội bộ, nếu bạn kết nối dưới dạng sysdba, tên giản đồ của bạn sẽ có vẻ là SYS.
Tạo người dùng:
SQL> create user johny identified by 1234;
Xem tất cả người dùng và kiểm tra xem người dùng johny có ở đó không:
SQL> select username from dba_users;
Nếu bạn cố gắng đăng nhập bằng johny ngay bây giờ, bạn sẽ gặp lỗi:
ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied
Người dùng để đăng nhập cần ít nhất tạo phiên riêng tư, vì vậy chúng tôi phải cấp đặc quyền này cho người dùng:
SQL> grant create session to johny;
Bây giờ bạn có thể kết nối với tư cách là người dùng johny:
username: johny
password: 1234
Để loại bỏ người dùng, bạn có thể loại bỏ nó:
SQL> drop user johny;
Đó là ví dụ cơ bản để chỉ ra cách tạo người dùng. Nó có thể phức tạp hơn. Ở trên, chúng tôi đã tạo một người dùng có các đối tượng được lưu trữ trong vùng bảng mặc định của cơ sở dữ liệu. Để cơ sở dữ liệu gọn gàng, chúng ta nên đặt các đối tượng người dùng vào không gian riêng của anh ta (không gian bảng là một phân bổ không gian trong cơ sở dữ liệu có thể chứa các đối tượng lược đồ).
Hiển thị các không gian bảng đã được tạo:
SQL> select tablespace_name from dba_tablespaces;
Tạo vùng bảng:
SQL> create tablespace johny_tabspace
2 datafile 'johny_tabspace.dat'
3 size 10M autoextend on;
Tạo không gian bảng tạm thời (Không gian bảng tạm thời là một phân bổ không gian trong cơ sở dữ liệu có thể chứa dữ liệu tạm thời chỉ tồn tại trong khoảng thời gian của phiên. Dữ liệu tạm thời này không thể được phục hồi sau lỗi quy trình hoặc phiên bản.):
SQL> create temporary tablespace johny_tabspace_temp
2 tempfile 'johny_tabspace_temp.dat'
3 size 5M autoextend on;
Tạo người dùng:
SQL> create user johny
2 identified by 1234
3 default tablespace johny_tabspace
4 temporary tablespace johny_tabspace_temp;
Cấp một số đặc quyền:
SQL> grant create session to johny;
SQL> grant create table to johny;
SQL> grant unlimited tablespace to johny;
Đăng nhập với tư cách johny và kiểm tra những đặc quyền mà anh ấy có:
SQL> select * from session_privs;
PRIVILEGE
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
Với đặc quyền tạo bảng, người dùng có thể tạo bảng:
SQL> create table johny_table
2 (
3 id int not null,
4 text varchar2(1000),
5 primary key (id)
6 );
Chèn dữ liệu:
SQL> insert into johny_table (id, text)
2 values (1, 'This is some text.');
Lựa chọn:
SQL> select * from johny_table;
ID TEXT
1 This is some text.
Để lấy dữ liệu DDL, bạn có thể sử dụng gói DBMS_METADATA "cung cấp một cách để bạn truy xuất siêu dữ liệu từ từ điển cơ sở dữ liệu dưới dạng XML hoặc tạo DDL và gửi XML để tạo lại đối tượng." (với sự trợ giúp từ http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )
Đối với bảng:
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;
Kết quả:
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"
Đối với chỉ mục:
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;
Kết quả:
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"
Thêm thông tin:
DDL
DBMS_METADATA
Đối tượng lược đồ
Sự khác biệt giữa giản đồ và người dùng
Đặc quyền
Tạo người dùng / lược đồ
Tạo vùng bảng
Lệnh SQL Plus
create user foo ...
. Xin vui lòng đọc manual-