所以。SQLPlus 简单地给出了我的第一次尝试(在有一点 postgresql 经验之后):
SQL> SELECT * FROM MYTABLESPACE.MYTABLE;
SELECT * FROM MYTABLESPACE.MYTABLE
*
ERROR at line 1:
ORA-00942: table or view does not exist
我也尝试过SELECT * FROM MYTABLESPACE$MYTABLE
(直观的尝试)并且SELECT * FROM MYTABLE
也很简单,但没有成功。谷歌搜索提供了很多关于表空间管理的信息,但这个微不足道的问题却一无所获。
该怎么办?
扩展#1:好吧,看起来对表空间和模式确实存在一个小误解。但问题仍然很明显:我可以访问该dba_tables
表,我可以访问它的其中一条记录,我想查询该表所描述的表,但它不起作用。
扩展 #2:这是我所做的。我打电话sqlplus
给system
账号(sqlplus system/****
):
SQL> SELECT * FROM (SELECT * FROM dba_tables WHERE tablespace_name='MYTABLESPACE') WHERE ROWNUM<=1;
OWNER TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME STATUS PCT_FREE PCT_USED INI_TRANS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ -------- ---------- ---------- ----------
MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOG B NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN
---------- -------------- ----------- ----------- ----------- ------------ ---------- --------------- --- - ---------- ---------- ------------ ---------- ---------- -----------
AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LO SAMPLE_SIZE LAST_ANA PAR IOT_TYPE T S
------------------------- ------------------- ---------------------------------------- ---------------------------------------- -------------------- -------- ----------- -------- --- ------------ - -
NES BUFFER_ FLASH_C CELL_FL ROW_MOVE GLO USE DURATION SKIP_COR MON CLUSTER_OWNER DEPENDEN COMPRESS COMPRESS_FOR DRO REA SEG RESULT_
--- ------- ------- ------- -------- --- --- --------------- -------- --- ------------------------------ -------- -------- ------------ --- --- --- -------
EXAMPLEOWNER MYTABLE MYTABLESPACE VALID 10 1
255 65536 1048576 1 2147483645 NO N
1 1 N ENABLED NO N N
NO DEFAULT DEFAULT DEFAULT DISABLED NO NO DISABLED YES DISABLED DISABLED NO NO YES DEFAULT
SQL> SELECT * FROM MYTABLE;
SELECT * FROM MYTABLE
*
ERROR at line 1:
ORA-00942: table or view does not exist
根据您的
DBA_TABLES
查询,您有以下内容:所有者(架构名称):
EXAMPLEOWNER
表名:
MYTABLE
除非有指向它的公共同义词
SYSTEM
,否则用户将无法从中进行选择。MYTABLE
因此,要从表中选择,您必须通过在表前加上其模式来完全限定名称:
请注意,表空间只是存储对象的地方,与 DML 查询无关。
从查询的角度来看,没有必要命名表空间。表空间只是一个逻辑名称,用于存储数据库数据文件。重要的是创建表的模式以及您对该模式对象的特权。因此,如果“MYTABLE”在名为“USERTABS”的模式中,那么您需要运行授权才能授予您权限;例如
或者
然后从由其架构限定的表中进行选择;