如何在SQLPlus Oracle select中指定tablespace_name

时间:2015-06-24 12:31:46

标签: oracle sqlplus

我的设置看起来像这样

SQL> SELECT tablespace_name, table_name
     FROM all_tables
     WHERE tablespace_name = 'MYSPACE';

TABLESPACE_NAME            TABLE_NAME
-------------------------- ------------------------------
MYSPACE                    MYTABLENAME
MYSPACE                    MYOTHERTABLENAME

现在我想SELECT * FROM MYSPACE.MYTABLENAME;,但显然你不是这样做的。

ERROR at line 1:
ORA-00942: table or view does not exist

我的预期结果是从该表中获取所有记录。就像我想的那样是MySQL。

由于

2 个答案:

答案 0 :(得分:5)

您正在从表空间中进行选择,这与您的所有者/架构名称不同。这就是为什么。例如,表空间var disabledDates = [...]; function noDays(date) { return [disabledDates.indexOf(date) != -1, "", ""]; } jQuery('#date').datepicker({ beforeShowDay: noDays }); 拥有所有者function noDays(date) { return [date > startDate && date < endDate, "", ""]; } 。您可以从Sys.xxx中选择;

确定。

SYSTEM

然后

SYS

(值得一提的是:从SELECT owner, tablespace_name, table_name FROM all_tables WHERE tablespace_name = 'MYSPACE'; / select * from [ owner ].[ table_name ]; 选择..)

答案 1 :(得分:3)

表不归表空间所有。表空间为a logical storage storage structure。创建表(或索引)时,指定其内容应为stored in的表空间。除非您正在执行DBA任务,否则您实际上不需要知道您的数据存储在哪个表空间中。

你可能只是混淆了条款。表由schemas拥有。如果您查询owner列而不是tablespace_name,您可能会看到以下内容:

SQL> SELECT owner, table_name
     FROM all_tables
     WHERE tablespace_name = 'MYSPACE';

OWNER                      TABLE_NAME
-------------------------- ------------------------------
MYUSER                     MYTABLENAME
MYUSER                     MYOTHERTABLENAME

然后您可以使用

进行查询
SELECT * FROM MYOWNER.MYTABLENAME;

当然,如果所有者实际上是你,那么你不需要在表名前加上模式;你可以选择FROM MYTABLENAME。 (您可能还有同义词或会话设置,使模式前缀不必要,但这有点偏离主题)。如果您拥有该表,您也会在USER_TABLES中看到它。