|
|
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
Озадачили сторонние разработчики (которых надо вешать за левую ногу!). У них создается куча лишних таблиц, которые предполагается, что сам пользователь будет время от времени удалять. Не хочу давать своим юзерам такие привилегии, а самому чистить схемы по одной таблице лень. Отсюда вопрос: можно ли дропнуть таблицы списком, т.е. передать в команду drop table имя таблицы как параметр? Пробовал со всякими кавычками и скобками, но увы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:10:37 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
Использовать DBMS_SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:14:44 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
А какой пакет укажите хотя-бы, плз! Чтобы можно было доку поднимать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:23:48 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
А есть какой-либо признак, который отличает подобные таблицы от других? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:48:49 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
да, они начинаются с INZ. Маску построить можно. Вопрос, на что ее наложить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:51:42 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
Ха, напиши тогда скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Настройки всякие, что-бы лишнее убрать - сам напишешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:59:20 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
есть представление ALL_TABLES из которого можно выбрать название таблиц по маске select ... where table_name like 'INZ%' and owner = 'USER1' а дальше в процедуре описываете курсор, и по fetch , формируете динамический SQL, который успешно выполняете. Вот Вам пример DBMS_SQL. Rem Copyright (c) 1995, 1996, 1997 by Oracle Corp. All Rights Reserved. Rem Rem NAME Rem owadsyn.sql - OWA Drop public SYNonyms Rem PURPOSE Rem Drop the public OWA synonyms used by the PL/SQL Rem gateway. Rem NOTES Rem This script should be run as sys. Rem history Rem pkapasi 09/07/00 - Ignore drop errors for SQL*Plus and svrmgrl Rem rdecker 07/21/00 - split off from owacomm.sql Rem DECLARE -- procedure executes a DDL and ignores errors if any. PROCEDURE execute_ddl(ddl_statement VARCHAR2) IS ddl_cursor INTEGER; BEGIN -- try to execute DDL ddl_cursor := dbms_sql.open_cursor; -- issue the DDL statement dbms_sql.parse (ddl_cursor, ddl_statement, dbms_sql.native); dbms_sql.close_cursor (ddl_cursor); EXCEPTION -- ignore exceptions when others then if (dbms_sql.is_open(ddl_cursor)) then dbms_sql.close_cursor(ddl_cursor); end if; END; BEGIN execute_ddl ('drop public synonym OWA_CUSTOM'); execute_ddl ('drop public synonym OWA_GLOBAL'); execute_ddl ('drop public synonym OWA'); execute_ddl ('drop public synonym HTF'); execute_ddl ('drop public synonym HTP'); execute_ddl ('drop public synonym OWA_COOKIE'); execute_ddl ('drop public synonym OWA_IMAGE'); execute_ddl ('drop public synonym OWA_OPT_LOCK'); execute_ddl ('drop public synonym OWA_PATTERN'); execute_ddl ('drop public synonym OWA_SEC'); execute_ddl ('drop public synonym OWA_TEXT'); execute_ddl ('drop public synonym OWA_UTIL'); execute_ddl ('drop public synonym OWA_INIT'); execute_ddl ('drop public synonym OWA_CACHE'); execute_ddl ('drop public synonym WPG_DOCLOAD'); END; / Или если у Вас свежая версия оракла: declare cursor c is select table_name from all_tables where owner = '...' and like 'MASK%'; begin for c_rec in c loop execute immediate 'drop table "' || c_rec.table_name || '"' ; end loop; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 18:25:17 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
Написать процедуру и подвесить в джоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 18:29:55 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
Для того чтобы видеть dba_tables , нужно иметь привелегии на это представление. Правило второе. Не нужно давать лишние привелегии это бывет опасно. to softbuilder@inbox.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 18:38:29 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
to Elsid: "Не нужно давать лишние привелегии это бывет опасно. to softbuilder@inbox.ru" Во-первых, не учите меня жить. Во-вторых из сообщения "....Не хочу давать своим юзерам такие привилегии, а самому чистить схемы по одной таблице лень..." ясно видно, что этот человек администратор БД, поэтому во всех отношениях есть смысл использовать dba_ вью, потому-что "чистить" будет он. В крайнем случае человек сам разберётся откуда ему лучше брать. В третьих, даже если он не DBA, а пусть даже девелопер, в любой литературе можно найти упоминание, что нужно сделать, что бы у девелопера был доступ к data dictionary - это дать привилегию SELECT_CATALOG_ROLE. В четвёртых, ни один нормальный админ не будет такие административные вещи, как дропание таблиц помещать в PL/SQL код, а сделает это через такое родное и близкое ему до боли средство, как SQL*Plus. Теперь если вы такой умный, приведите фактические и документальные доказательства, что хоть когда-нибудь наличие данной роли у девелопера прямо привело к опасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 22:06:39 |
|
||
|
дропнуть много таблиц
|
|||
|---|---|---|---|
|
#18+
to softbuilder: спасибо, действительно просто до ужаса (ужас, потому что сам не докумекал). Просто зациклился на возможности передачи параметром в процедуре, а про родной spool выскочило из головы. Главное, что можно легко этот список редактировать перед запуском скрипта to Elsid: спасибо за скрипт. Попробую поизгаляться и поставить джобом. Насчет раздачи привилегий полностью согласен - так я их и не даю, из-за чего кутерьму и затеял! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2003, 09:50:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32168807&tid=1990345]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 463ms |

| 0 / 0 |
