2013-04-17 31 views
6

Tôi muốn tạo ra một sơ đồ mới trong oracle và tôi đã sử dụng mẫu mã, trong đó có sẵn hereLàm thế nào để tạo ra sơ đồ mới và liệt kê tất cả tên lược đồ trong oracle

CREATE SCHEMA AUTHORIZATION oe 
    CREATE TABLE new_product 
     (color VARCHAR2(10) PRIMARY KEY, quantity NUMBER) 
    CREATE VIEW new_product_view 
     AS SELECT color, quantity FROM new_product WHERE color = 'RED' 
    GRANT select ON new_product_view TO scott 
/

Nhưng, nhận được lỗi

ERROR at line 1: 
ORA-02421: missing or invalid schema authorization identifier 

Ngoài ra, hãy giúp tôi cách liệt kê tên của tất cả các lược đồ có sẵn. Tôi đang sử dụng

select username from dba_users; 

để liệt kê schema, nhưng tôi nghĩ rằng, không phải là một cách tiếp cận đúng của nó, bởi vì, người dùng và giản đồ có nhiều-nhiều mối quan hệ, có nghĩa là tôi không thể nhận được tất cả tên schema đây.

Xin hãy giúp tôi !!

+0

Trong oracle người dùng và lược đồ * không * có quan hệ nhiều-nhiều (thực sự sự khác biệt là ngữ nghĩa hơn - họ là hoàn toàn giống nhau) –

+0

Tại sao? một người dùng có thể có nhiều lược đồ và lược đồ có thể được liên kết với nhiều người dùng. Phải không? – Ravi

+0

Trong oracle 'user' và' schema' khá giống nhau. Xem [bài đăng này] (http://stackoverflow.com/questions/880230/difference-between-a-user-and-a-schema-in-oracle) –

Trả lời

12

Từ oracle documentation:

Tuyên bố này không thực sự tạo ra một giản đồ. Oracle Database tự động tạo một schema khi bạn tạo một người dùng

nhu Vì vậy, bạn đầu tiên create a User với tên schema

Đối với truy vấn của bạn đó là tốt, kể từ khi danh sách tên người dùng là tương đương với tên schema không có sẵn


UPDATE: tôi có thể không thực sự kiểm tra nó bây giờ, nhưng nên có một cái gì đó như thế này:

CREATE USER oe IDENTIFIED BY oePSWRD; 

CREATE SCHEMA AUTHORIZATION oe 
    CREATE TABLE new_product 
     (color VARCHAR2(10) PRIMARY KEY, quantity NUMBER) 
    CREATE VIEW new_product_view 
     AS SELECT color, quantity FROM new_product WHERE color = 'RED' 
    GRANT select ON new_product_view TO scott; 
+0

bạn có thể viết lại mã để tạo giản đồ mới không? – Ravi

+0

@jWeavers, tôi đã cập nhật câu trả lời của mình. Tôi cũng nhận thấy rằng tôi quên thêm liên kết vào tài liệu 'create user' ... –

+0

tôi nên sử dụng tài khoản' oe' để tạo lược đồ 'oe'? – Ravi

2

Từ các tài liệu: http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6014.htm

Tên schema phải giống như cơ sở dữ liệu Oracle Tên truy nhập của bạn.

Bạn có muốn tìm tất cả người dùng hoặc tất cả người dùng có bảng (ví dụ) tồn tại không? Nếu sau đó ...

select distinct 
    owner 
from 
    dba_tables 
where 
    owner not in ('SYS','SYSTEM') 

Thêm vào tên người dùng khác mà bạn không quan tâm đến danh sách theo yêu cầu.

Các vấn đề liên quan