Невозможно удалить существующую мастер-таблицу в SQL-разработчике. - PullRequest
0 голосов
/ 31 мая 2019

Я много раз использовал Data Pump в Sql Developer Wizard для экспорта и импорта данных.После каждого экспорта / импорта новая главная таблица появлялась под кнопкой «+» в sql developer (view-> dba).Я хотел отбросить все эти таблицы (около 10 таблиц), и я был успешным во всех случаях, кроме 2 из них.Когда я пишу sql код: drop table x, он показывает мне ошибку, что эта таблица не существует.Это работало нормально для всех остальных таблиц. Когда я запускаю запрос, выберите * из dba_tables, где table_name = 'x' таблица там.Я пишу оператор drop как системный пользователь.

  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.

У вас есть идеи, что я могуделать?Использование имени схемы перед именем таблицы не помогает.С уважением, Дарек

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Причина, по которой он не работал, по умолчанию Oracle меняет имя задания на прописные. Чтобы избежать этого нужно использовать '"my_job"'

Согласно документу Oracle

Следуйте правилам именования SQL для именования объектов планировщика в Пакет DBMS_SCHEDULER. По умолчанию имена объектов планировщика прописные буквы, если они не заключены в двойные кавычки. Например, при создании задания job_name => «my_job» совпадает с job_name => 'My_Job' и job_name => 'MY_JOB', но отличаются от job_name => '"моя работа"'. Эти правила именования также соблюдаются в тех случаях, когда разделенные запятыми списки имен объектов планировщика используются в Пакет DBMS_SCHEDULER.

0 голосов
/ 31 мая 2019

Спасибо за вашу помощь. Это работает.

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 -> data pump -> экспортные задания. Как их скинуть с дерева?

...