Sey*_*mad 10 oracle oracle-11g-r2 errors
我对 Oracle 数据库相当陌生。我已经安装Oracle Database 11g R2
在Oracle Linux 6
. 我已经成功创建了一个新数据库dbca
并使用以下方法连接到数据库:
$ sqlplus "/ as sysdba"
Run Code Online (Sandbox Code Playgroud)
我成功创建了一个表并插入了一些数据并执行了一些选择:
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
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个具有 CONNECT 权限的新用户:
SQL> CREATE USER teacher1 IDENTIFIED BY pass1;
User created.
SQL> GRANT CONNECT TO teacher1;
Grant succeeded.
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个具有适当对象权限的新角色:
SQL> CREATE ROLE instructor;
Role created.
SQL> GRANT SELECT, UPDATE ON Instructors TO instructor;
Grant succeeded.
Run Code Online (Sandbox Code Playgroud)
并将角色授予用户:
SQL> GRANT instructor TO teacher1;
Grant succeeded.
Run Code Online (Sandbox Code Playgroud)
接下来我退出 sqlplusexit;
并以新用户身份连接以测试它。我成功登录到数据库:
$ 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>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从表中选择时,它说:
SQL> SELECT * FROM Instructors;
SELECT * FROM Instructors
*
ERROR at line 1:
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?!
a_h*_*ame 19
您在创建表SYS
的模式(你应该永远,永远做。真的,从来没有)。
当您以teacher1
任何语句登录时,会在该模式中查找对象。但是没有TEACHER1.INSTRUCTORS
表,因为真正的名字是SYS.INSTRUCTORS
(我有没有提到在 SYS 模式中创建对象是一个多么糟糕的主意?)。
您需要运行select * from sys.instructors
才能访问该表。如果不想在表名前面加上架构,请在架构中创建同义词teacher1
:
create synonym teacher1.instructors for sys.instructors;
Run Code Online (Sandbox Code Playgroud)
然后teacher1
可以从SYS
架构访问该表,而无需对其进行完全限定。
再次:停止使用 SYS 或 SYSTEM 帐户来处理非 DBA 内容。为此使用常规帐户。
归档时间: |
|
查看次数: |
120971 次 |
最近记录: |