oracle can't drop MATERIALIZED VIEW

12 отговора 590 прегледа
#1

oracle can't drop MATERIALIZED VIEW

Вижте сега кво става тука :
свързвам се като потребител dev.

SQL> desc ggg;
Name Null? Type
------------------------------- -------- ----
DAY CHAR(1)

SQL> drop table ggg;
drop table ggg
*
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "DEV"."GGG"


SQL> DROP MATERIALIZED VIEW ggg;
DROP MATERIALIZED VIEW ggg
*
ERROR at line 1:
ORA-12003: snapshot "DEV"."GGG" does not exist


SQL> desc ggg;
Name Null? Type
------------------------------- -------- ----
DAY CHAR(1)

SQL> select * from ggg;

no rows selected


не мога да намеря ключа от палатката :)))

това view го създадох при rebuild - с TOAD по следния начин
rename view1 to view_x
create view1
insert на всичко от view_x в view1
(тва става със стандартен скрип на TOAD)
после изтрих всичко от view_x с truncate и го преименувах в GGG
защото една процедура която ползва view-to започна да прази мизерии макар да е против всякаква логика.

сега обаче защо не мога да го изтрия ???

Отговор
в отговор на krasi #2

Re: oracle can't drop MATERIALIZED VIEW

Това като гледам е VIEW, така че защо не тестваш със:
DROP VIEW my_view_name;

Направи SELECT от таблицата user_objects и виж какъв е този обект ggg.
Ключа от палатката най-вероятно е в тази таблица

Отговор
в отговор на no_data_found #3

Re: oracle can't drop MATERIALIZED VIEW

SQL> drop view ggg;
drop view ggg
*
ERROR at line 1:
ORA-00942: table or view does not exist



select * from user_objects where object_name ='GGG'

OBJECT_NAME
----------------------------------------------------------------------------------------------------
SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_
------------------------------ --------- -------------- ------------------ --------- ---------
TIMESTAMP STATUS T G S
------------------- ------- - - -
GGG
4974 6720 TABLE 23-OCT-03 09-MAR-04
2004-03-09:11:41:38 VALID N N N


--OBJECT_TYPE го дава table но с drop table дава
SQL> drop table ggg;
drop table ggg
*
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "DEV"."GGG"

Отговор
в отговор на krasi #4

Re: oracle can't drop MATERIALIZED VIEW

Ами нещото което ми идва на ум да проверя в подобни ситуации е дали имам права за тази комнада. В случая при теб е DROP ANY VIEW ( Oracle 8.1.7 най-верятно в 9i няма да се различава много по име , ако изобщо има разлики)!

Може би не е от това , ето синтаксиса за 8i:

Purpose

To remove an existing materialized view from the database.

The terms "snapshot" and "materialized view" are synonymous.

Prerequisites

The materialized view must be in your own schema or you must have the DROP ANY MATERIALIZED VIEW (or DROP ANY SNAPSHOT) system privilege. You must also have the privileges to drop the internal table, views, and index that Oracle uses to maintain the materialized view's data.

Examples

The following statement drops the materialized view PARTS owned by the user HQ:

DROP SNAPSHOT hq.parts;

The following statement drops the SALES_BY_MONTH materialized view and the underlying table of the materialized view (unless the underlying table was registered in the CREATE MATERIALIZED VIEW statement with the ON PREBUILT TABLE clause):

DROP MATERIALIZED VIEW sales_by_month;


Защо да правим нещата лесно...

Редактирано от Zloster на

Отговор
в отговор на Zloster #5

Re: oracle can't drop MATERIALIZED VIEW

има я тази привлегия , че и DBA има

Отговор
в отговор на krasi #6

Re: oracle can't drop MATERIALIZED VIEW

Я виж какво ти връща това:

select mview_name, container_name from user_mviews

Отговор
в отговор на Ooo #7

Re: oracle can't drop MATERIALIZED VIEW

ами заявката дава таблиците която се рефрешват по snapshot-a
GGG не фигурира там.
естествено излиза view1 (тва име го измислих за форума , иначе е друго , да не се заблуждавате излишно)

Отговор
в отговор на krasi #8

Re: Дай наново

Обясни пак стъпка по стъпка какво си направил и какво ти излиза, щото така няма да стане.
Тая грешка може да я даде и когато се опитваш да дропнеш таблица, върху която е създаден snapshot. Първо трябва да дропнеш snapshot-а , след това таблицата. При теб така ли е?

Отговор
в отговор на no_data_found #9

Re: Дай наново

Ето какво казват по въпроса ( намерих даже и на руски )
[линк]

Защо да правим нещата лесно...
Отговор
в отговор на no_data_found #10

Давам

Благодаря за търпението .
Сега ще пробвам по сносно да обясня.
Значи имаме обекта А който е snapshot table създаден чрез query върху
remote db.
чрез TOAD направих следното
rename A to A_X.
create A същата като A_X
insert into A (column1,column2,column3,column4 )
select column1,column2,column3,column4 from A_X
drop table A_X;
на последната стъпка даде грешка и не се дропна.
заради подозрения че една процедура която ползва А не работи.
дадох truncate на A_X и я преименувах за да няма такива съмнения.
GGG е новото име .

SQL> select OBJECT_TYPE from user_objects where OBJECT_NAME ='GGG';

OBJECT_TYPE
------------------
TABLE

SQL> drop table ggg;
drop table ggg
*
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "DEV"."GGG"

SQL> DROP MATERIALIZED VIEW ggg;
DROP MATERIALIZED VIEW ggg
*
ERROR at line 1:
ORA-12003: snapshot "DEV"."GGG" does not exist


SQL> select * from ggg;

no rows selected

SQL> desc ggg;
Name Null? Type
------------------------------- -------- ----
DAY CHAR(1)


select mview_name, container_name from user_mviews;

връща един списък в който обекта А
го има и двете колони - MVIEW_NAME и CONTAINER_NAME
но GGG не фигирира там.
Така да се надявам е обяснено по добре.
;)))

Отговор
в отговор на krasi #11

Re: Давам

Виж, не съм се занимавал със репликация, но ти поствам, това което открих по твоя проблем. Не знам дали ще помогне, но го прочети:

----------------------
Problem Description
-------------------

When you issue the following command to drop a table, you receive an ORA-12083,
indicating that there is a materialized view. For example:

SQL> drop table account_ref_x;
drop table account_ref_x
*
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "DTMADMIN"."ACCOUNT_REF_X"

If you try to drop the materialized view, the error that the snapshot does not
exist is returned:

SQL> DROP MATERIALIZED VIEW account_ref_x;

DROP MATERIALIZED VIEW account_ref_x
*
ERROR at line1:
ORA-12003: snapshot "DTMADMIN"."ACCOUNT_REF_X" does not exist


Solution Description
--------------------

1. Determine which table the renamed snapshot was recreated from. If the base
table cannot be determined, then you must create a table with the same
columns.

2. Recreate the snapshot table:

SQL> create snapshot ACCOUNT_REF_X ON PREBUILT TABLE as select * from dept;
Materialized view created.

3. Drop the snapshot:

SQL> drop snapshot ACCOUNT_REF_X;
Materialized view dropped.

4. Drop the table:

SQL> drop table ACCOUNT_REF_X;
Table dropped.


Please Note:

In Oracle9i, it is not possible to rename a materialized view/snapshot:

SQL> rename account_ref_x to dept;
rename account_ref_x to dept
*
ERROR at line 1:
ORA-32318: cannot rename a materialized view


Explanation
-----------

Renaming a materialized view/snapshot is not mentioned in the documentation.
It is not prohibited when executed, but it should not be allowed.

SQL> create snapshot account_ref as select * from toto.dept;
Materialized view created.

SQL> rename account_ref to account_ref_x;
Table renamed.

SQL> drop snapshot ACCOUNT_REF;
Materialized view dropped.

SQL> drop snapshot account_ref_x;
drop snapshot account_ref_x
*
ERROR at line 1:
ORA-12003: snapshot "TOTO"."ACCOUNT_REF_X" does not exist

SQL> drop table account_ref_x;
drop table account_ref_x
*
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "TOTO"."ACCOUNT_REF_X"

----------------------

Отговор
в отговор на no_data_found #12

10x

Благодаря ти , от къде го намери на oracle.com ли?

Отговор
в отговор на krasi #13

Re: 10x

не, това специално на metalink.oracle.com, но понякога и това не помага. Но metalink-а е едно добро начало

Отговор