Tôi còn khá mới với cơ sở dữ liệu của Oracle. Tôi đã cài đặt Oracle Database 11g R2
trên Oracle Linux 6
. Tôi đã tạo thành công một cơ sở dữ liệu mới dbca
và kết nối với cơ sở dữ liệu bằng cách sử dụng:
$ sqlplus "/ as sysdba"
Tôi đã tạo thành công một bảng và chèn một số dữ liệu và thực hiện một số lựa chọn:
SQL> CREATE TABLE Instructors (
tid NUMBER(7) PRIMARY KEY,
fname VARCHAR2(32),
lname VARCHAR2(32),
tel NUMBER(16),
adrs VARCHAR2(128) );
Table created.
SQL> INSERT INTO Instructors (tid, fname, lname, tel, adrs)
VALUES (8431001, 'John', 'Smith', 654321, 'London');
1 row created.
SQL> SELECT count(*) FROM Instructors;
COUNT(*)
----------
1
Sau đó, tôi đã tạo một người dùng mới với đặc quyền CONNECT:
SQL> CREATE USER teacher1 IDENTIFIED BY pass1;
User created.
SQL> GRANT CONNECT TO teacher1;
Grant succeeded.
Sau đó, tôi đã tạo một vai trò mới với các đặc quyền đối tượng thích hợp:
SQL> CREATE ROLE instructor;
Role created.
SQL> GRANT SELECT, UPDATE ON Instructors TO instructor;
Grant succeeded.
Và cấp vai trò cho người dùng:
SQL> GRANT instructor TO teacher1;
Grant succeeded.
Tiếp theo tôi đã thoát sqlplus với exit;
và kết nối với tư cách là người dùng mới để kiểm tra nó. Tôi đã đăng nhập thành công vào cơ sở dữ liệu với:
$ sqlplus teacher1
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 25 03:20:50 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter password: *****
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
Nhưng khi tôi cố gắng chọn từ bảng thì nó báo:
SQL> SELECT * FROM Instructors;
SELECT * FROM Instructors
*
ERROR at line 1:
ORA-00942: table or view does not exist
Tôi đang thiếu gì ở đây?!
dbadmin
với cácDBA
đặc quyền và tạo tất cả các bảng với người dùng DBA này. Sau đó, tất cả người dùng khác nên truy cập các bảng từDBADMIN
lược đồ ... Đúng không?!