Регистрация XML-схем в Oracle - как избавиться от оставшихся объектов - PullRequest
1 голос
/ 13 января 2010

На днях я попытался зарегистрировать схему в Oracle, чтобы проверить документ XML. Код, который я использовал, был довольно прост:

dbms_xmlschema.registerSchema(schemaURL => 'http://www.myCompany.com/schema',
                              schemaDoc => :schemaCLOB);

Сначала казалось, что все работает хорошо, что касается проверки. Однако я заметил, что появились десятки новых объектов базы данных: таблицы, триггеры и типы (несколько таблиц и триггеров dowsn, но, вероятно, много сотен типов). Я попытался удалить схему следующим образом:

dbms_xmlschema.deleteSchema(schemaURL => 'http://www.myCompany.ca/schema',
                            delete_option => dbms_xmlschema.DELETE_INVALIDATE);

Это сняло с регистрации схему, но все объекты остались позади.

Я RTFM немного опоздал и обнаружил, что дополнительные объекты были созданы, оставив значения по умолчанию в вызове registerSchema, поэтому я понял, что мне придется вручную удалить дополнительные объекты.

Теперь, когда я пытаюсь удалить объекты, Oracle говорит мне, что их не существует. Я не могу выбрать из них, и моя IDE (PL / SQL Developer) показывает их как недопустимые (рядом с ними немного красного X). Я также не могу найти информацию об этих таблицах в all_tables. Как мне избавиться от них?

Ответы [ 3 ]

1 голос
/ 15 января 2010

Решение было: восстановлено из резервной копии предыдущего дня. В будущем я буду устанавливать gentables и gentypes на FALSE ВСЕГДА и удаляю с помощью DELETE_CASCADE_FORCE. Все, что не работает с этим, я, вероятно, отправлю новый вопрос.

0 голосов
/ 14 января 2010

Metalink - это сайт поддержки Oracle (http://support.oracle.com)), но для входа на защищенный сайт вам понадобится идентификатор поддержки клиента (entifier).

Если на 11g использовать DBMS_XMLSCHEMA.PURGESCHEMA, чтобы избавиться от объектов. Если на 10gRx использовать

dbms_xmlschema.deleteSchema(schemaURL => 'http://www.myCompany.ca/schema', delete_option => dbms_xmlschema.DELETE_CASCADE_FORCE);

или

dbms_xmlschema.deleteSchema('http://www.myCompany.ca/schema',4);

Если это не помогает сбросить базу данных после использования принудительного удаления и повторите попытку. Если это не поможет, удалите схему с помощью оператора delete на основе user_xml_schemas (последний параметр не поддерживается).

0 голосов
/ 13 января 2010

Я, вероятно, упускаю что-то очевидное, но, глядя на документацию , не могли бы вы использовать параметры DELETE_CASCADE или DELETE_CASCADE_FORCE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...