SQL错误:表空间不存在

时间:2015-03-30 08:50:24

标签: sql oracle oracle-sqldeveloper

我在sql oracle开发人员上运行这个脚本: -

DEFINE TABLESPACE1 = "&TABLESPACE1";
CREATE TABLE "DBUSER" 
(   
"USER_ID" VARCHAR2(100 BYTE), 
"USERNAME" VARCHAR2(100 BYTE), 
"CREATED_BY" VARCHAR2(100 BYTE), 
"CREATED_DATE" DATE
) TABLESPACE "&TABLESPACE1" ;

我收到此错误: -

SQL Error: ORA-00959: tablespace '&TABLESPACE1' does not exist
00959. 00000 -  "tablespace '%s' does not exist"

4 个答案:

答案 0 :(得分:1)

注意并非所有SQL*Plus命令都必须在 SQL Developer 中运行。另外,它取决于SQL Developer版本,最新版本有很多SQL * Plus命令支持。

我在 SQL Developer版本3.2.20.10

中进行了测试

&用于SQL*Plus中的替换变量

例如,

SQL*Plus

SQL> DEFINE TABLESPACE1 = &TABLESPACE1
Enter value for tablespace1: new_tablespace
SQL> SELECT '&TABLESPACE1' from dual;
old   1: SELECT '&TABLESPACE1' from dual
new   1: SELECT 'new_tablespace' from dual

'NEW_TABLESPAC
--------------
new_tablespace

SQL>

SQL Developer

DEFINE TABLESPACE1 = &TABLESPACE1

<Enter the value when prompted> -- I entered "t"

old:DEFINE TABLESPACE1 = &TABLESPACE1
new:DEFINE TABLESPACE1 = t
  

SQL错误:ORA-00959:tablespace'&amp; TABLESPACE1'不存在

     
      
  1. 00000 - “tablespace'%s'不存在”
  2.   

您确定在 SQL Developer 中将其作为脚本执行。您可以按F5 将其作为脚本执行。您是否将值替换为变量?

例如,

SQL> DEFINE TABLESPACE1 = "&TABLESPACE1"
Enter value for tablespace1: new_tablespace
SQL> CREATE TABLE "DBUSER"
  2  (
  3  "USER_ID" VARCHAR2(100 BYTE),
  4  "USERNAME" VARCHAR2(100 BYTE),
  5  "CREATED_BY" VARCHAR2(100 BYTE),
  6  "CREATED_DATE" DATE
  7  ) TABLESPACE "&TABLESPACE1" ;
old   7: ) TABLESPACE "&TABLESPACE1"
new   7: ) TABLESPACE "new_tablespace"
) TABLESPACE "new_tablespace"
             *
ERROR at line 7:
ORA-00959: tablespace 'new_tablespace' does not exist


SQL>

在您的情况下,如果值被正确替换,并且表空间存在,您应该能够创建表。

答案 1 :(得分:0)

您似乎输入了一个值&#39;&amp; TABLESPACE1&#39;进入TABLESPACE1替换变量。也许你有替代扫描。尝试

SET SCAN ON
在你的陈述之前

答案 2 :(得分:0)

我的解决方案:

DROP TABLE "DBUSER";
UNDEFINE TABLESPACE1
DEFINE TABLESPACE1 = 'USERS'
CREATE TABLE "DBUSER" 
(   
"USER_ID" VARCHAR2(100 BYTE), 
"USERNAME" VARCHAR2(100 BYTE), 
"CREATED_BY" VARCHAR2(100 BYTE), 
"CREATED_DATE" DATE
) TABLESPACE "&TABLESPACE1." ;
/

SQL> DROP TABLE "DBUSER";
UNDEFINE TABLESPACE1
DEFINE TABLESPACE1 = 'USERS'
CREATE TABLE "DBUSER"
(
"USER_ID" VARCHAR2(100 BYTE),
"USERNAME" VARCHAR2(100 BYTE),
"CREATED_BY" VARCHAR2(100 BYTE),
"CREATED_DATE" DATE
) TABLESPACE "&TABLESPACE1." ;
/
Table dropped.

SQL> SQL> SQL>   2    3    4    5    6    7  alt   7: ) TABLESPACE "&TABLESPACE1."
neu   7: ) TABLESPACE "USERS"

Table created.

SQL>

答案 3 :(得分:-1)

您确定您的表空间名称是:“&amp; TABLESPACE1”?

尝试使用

测试如果您的表空间存在
select Tablespace_name from dba_tablespaces 
where Tablespace_name = 'yourtablespacename';