Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để tạo một lược đồ mới / người dùng mới trong Cơ sở dữ liệu Oracle 11g?

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 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 ít nhất cần 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 không gian 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à sự 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à 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 xem anh ấy có những đặc quyền nào:

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.');

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ông tin khác:

DDL

DBMS_METADATA

Đối tượng giản đồ

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

Các lệnh SQL Plus



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL / SQL (Cách tính ngày đầu tiên và ngày cuối cùng của bất kỳ quý nào trong năm)

  2. Làm cách nào để tạo và sử dụng danh sách nhiều lựa chọn trong APEX ORACLE?

  3. Cách khôi phục cơ sở dữ liệu bằng RMAN

  4. Hàm BITAND () trong Oracle

  5. làm cách nào để sử dụng chuỗi kết nối cùng với url jdbc