无法在SQL Developer中删除现有的主表

时间:2019-05-31 04:45:38

标签: oracle plsql oracle-sqldeveloper datapump

我在Sql Developer向导中多次使用酵母来导出和导入数据。每次导出/导入后,新的主表都会出现在sql developer(view-> dba)中的“ +”按钮下。 我想删除所有这些表(大约10个表),并且除其中2个之外,我都成功了所有情况。当我编写sql代码:删除表x时,它向我显示此表不存在的错误。对于其他所有表,它都运行良好。 当我运行查询时,从dba_tables中选择*,其中table_name ='x',表在那里。我正在以系统用户身份编写drop statement。

  select * 
      from dba_tables 
     where table_name in ('moj_dump_job'
                        , 'moj_job_data_pump');


OWNER                          TABLE_NAME                    
------------------------------ ------------------------------
SYSTEM                         moj_dump_job                  
SYSTEM                         moj_job_data_pump             

drop table moj_dump_job;

Error starting at line : 1 in command -
drop table moj_dump_job
Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

我厌倦了丢掉这份工作,但是没用:

select owner_name, job_name
  from DBA_DATAPUMP_JOBS;

OWNER_NAME                     JOB_NAME                      
------------------------------ ------------------------------
SYSTEM                         moj_job_data_pump             
SYSTEM                         moj_dump_job    


BEGIN
  dbms_scheduler.drop_job(job_name => 'moj_dump_job');
END;

Error starting at line : 13 in command -
BEGIN
  dbms_scheduler.drop_job(job_name => 'moj_dump_job');
END;
Error report -
ORA-27475: "SYSTEM.MOJ_DUMP_JOB" must be a job
ORA-06512: at "SYS.DBMS_ISCHED", line 213
ORA-06512: at "SYS.DBMS_SCHEDULER", line 657
ORA-06512: at line 2
27475. 00000 -  "unknown %s \"%s\".\"%s\""
*Cause:    The specified object did not exist, privileges were not granted,
           or the object was of the wrong type.
*Action:   Specify an object of the correct type on which you have privileges.

您知道我该怎么办吗?在表名称之前使用架构名称没有帮助。 最好的问候,Darek

2 个答案:

答案 0 :(得分:0)

感谢您的帮助。工作正常。

drop table "moj_dump_job"
drop table "moj_job_data_pump";


Table "moj_dump_job" dropped.
Table "moj_job_data_pump" dropped.

现在

 select * 
   from dba_tables 
  where table_name in ('moj_dump_job'
                     , 'moj_job_data_pump');


select owner_name, job_name
  from DBA_DATAPUMP_JOBS;      

两个语句均不返回任何行。完美,但是在视图-> dba->数据泵->导出作业下,这两个表仍然可见。如何将它们从树上掉下来?

答案 1 :(得分:0)

默认情况下,它不起作用的原因Oracle将作业名称更改为大写。为了避免它需要使用'"my_job"'

根据Oracle文档

  

按照SQL命名规则在   DBMS_SCHEDULER软件包。默认情况下,调度程序对象名称为   大写,除非它们被双引号引起来。例如,   创建作业时,job_name =>'my_job'与job_name =>相同   'My_Job'和job_name =>'MY_JOB',但不同于job_name =>   '“我的工作”'。在以下情况下,也要遵循这些命名规则:   调度程序对象名称的逗号分隔列表用于   DBMS_SCHEDULER软件包。