2008-09-26 16 views
27

Khi tôi cố gắng thực thi chế độ xem bao gồm các bảng từ các lược đồ khác nhau, ORA-001031 Không đủ đặc quyền. Các bảng này có quyền thực thi cho lược đồ nơi khung nhìn đã được tạo. Nếu tôi thực thi câu lệnh SQL của khung nhìn thì nó hoạt động. Tôi đang thiếu gì?ORA-01031: không đủ đặc quyền khi chọn chế độ xem

Trả lời

19

Là chủ sở hữu bảng, bạn cần cấp quyền truy cập SELECT trên các bảng bên dưới cho người dùng bạn đang chạy câu lệnh SELECT dưới dạng.

grant SELECT on TABLE_NAME to READ_USERNAME; 
1

Nếu chế độ xem được truy cập thông qua quy trình được lưu trữ, quyền thực thi không đủ để truy cập chế độ xem. Bạn phải cấp quyền chọn một cách rõ ràng.

35

Cuối cùng tôi đã làm việc đó. Câu trả lời của Steve là đúng nhưng không phải cho mọi trường hợp. Nó không thành công khi khung nhìn đó đang được thực thi từ một lược đồ thứ ba. Để làm việc đó, bạn phải thêm tùy chọn cấp:

CHỌN LỰA CHỌN TRÊN [TABLE_NAME] ĐẾN [READ_USERNAME] VỚI TÙY CHỌN LỚN;

Bằng cách đó, [READ_USERNAME] cũng có thể cấp lựa chọn đặc quyền trên nhằm schema khác

+0

gì nếu dba cấp các đặc quyền. Tôi không nhận được công việc này mặc dù người dùng được cấp đặc quyền bởi dba để xem các bảng được tạo và các bảng bên dưới. – kinkajou

+1

cảm ơn bạn nó vẫn đang giúp đỡ mọi người :) – Ilaria

2

Q. Khi nào "với tùy chọn cấp" yêu cầu?

A. khi bạn có chế độ xem được thực thi từ lược đồ thứ ba.

Ví dụ: schema DSDSW có một cái nhìn gọi view_name

a) that view selects from a table in another schema (FDR.balance) 
b) a third shema X_WORK tries to select from that view 

tài trợ tiêu biểu: cấp lựa chọn về dsdw.view_name để dsdw_select_role; cấp dsdw_select_role cho fdr;

Nhưng: fdr được chọn số đếm (*) từ dsdw.view_name; ERROR at line 1: ORA-01.031: đủ đặc quyền

vấn đề cấp:

grant select on fdr.balance to dsdw with grant option; 

tại FDR: select count (*) từ dsdw.view_name; 5 hàng

4

Hãy để tôi tạo bản tóm tắt.

Khi bạn xây dựng chế độ xem chứa đối tượng của các chủ sở hữu khác nhau, những chủ sở hữu khác phải cấp "với tùy chọn cấp quyền" cho chủ sở hữu của chế độ xem. Vì vậy, chủ sở hữu xem có thể cấp cho người dùng khác hoặc schemas ....

Ví dụ: User_a là chủ sở hữu của một bảng gọi là mine_a User_b là chủ sở hữu của một bảng gọi là yours_b

Hãy nói rằng user_b muốn để tạo ra một cái nhìn với một tham gia của mine_a và yours_b

để có cái nhìn để làm việc tốt, user_a có để cung cấp cho "cấp lựa chọn về mine_a để user_b với tùy chọn cấp"

Sau đó user_b thể cấp lựa chọn trên đó nhằm tất cả mọi người.

1

Nếu chế độ xem được truy cập thông qua quy trình được lưu trữ, cấp quyền thực thi không đủ để truy cập chế độ xem.Bạn phải cấp quyền chọn một cách rõ ràng.

chỉ cần nhập số này

cấp tất cả cho mọi người;

0

Để sử dụng chế độ xem, người dùng phải có các đặc quyền thích hợp nhưng chỉ dành cho chính chế độ xem chứ không phải đối tượng bên dưới. Tuy nhiên, nếu quyền truy cập cho các đối tượng bên dưới của chế độ xem bị xóa thì người dùng không còn quyền truy cập nữa. Hành vi này xảy ra bởi vì tên miền bảo mật được sử dụng khi người dùng truy vấn chế độ xem là của chế độ xem của chế độ xem. Nếu các đặc quyền trên các đối tượng bên dưới bị thu hồi khỏi trình xử lý của khung nhìn, thì khung nhìn sẽ trở thành không hợp lệ và không ai có thể sử dụng khung nhìn. Do đó, ngay cả khi người dùng đã được cấp quyền truy cập vào chế độ xem, người dùng có thể không sử dụng được chế độ xem nếu quyền của người bảo vệ đã bị thu hồi khỏi các đối tượng bên dưới của chế độ xem.

Oracle Documentation http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

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