Czy istnieje sposób, w jaki mogę określić rozmiar bloku mojej bazy danych Oracle, jeśli nie mam dostępu do widoku v$parameter
?Zapytanie o rozmiar mojego bloku
Dzięki!
f.
Czy istnieje sposób, w jaki mogę określić rozmiar bloku mojej bazy danych Oracle, jeśli nie mam dostępu do widoku v$parameter
?Zapytanie o rozmiar mojego bloku
Dzięki!
f.
Można to zrobić:
select distinct bytes/blocks from user_segments;
który to zrobił. dzięki. – filippo
To zapytanie jest bardzo kosztowne, lepiej rozważ coś w rodzaju wartości wybranej z parametru v $, gdzie name = 'db_block_size' –
@GuidoLeenders: "jeśli nie mam dostępu do widoku parametrów v $"! –
Tak, to masz poważny problem. Odpytywanie user_segments może być naprawdę powolne, szczególnie gdy korzystasz z SAP lub Infor BAAN, które tworzą dziesięć tysięcy segmentów i mają tendencję do fragmentacji słownika danych. Najlepiej przekonać administratora DBA, aby przyznał ci dostęp w jakiś sposób, być może poprzez widok z v_ $.
Alternatywa, która działa lepiej: kiedy możesz tworzyć segmenty, masz dostęp do obszarów tabel (zauważ, że wyróżnienie nie działa, gdy nie masz żadnych segmentów). Lista ta jest na ogół krótsza, więc na przykład użytku:
wybierz bajtów/bloków z user_ts_quotas
Że nadal pozostawia nam z problemem inżynierii społecznej z lokalną DBA gdy użytkownik jest tak ograniczony, że nie mają kontyngent :-)
Naprawdę? Chciał poznać rozmiar bloku i nie miał dostępu do widoku parametrów v $. Nawet jeśli zapytanie dotyczące user_segments zajęło 5 minut, wciąż otrzymywało odpowiedź w 5 minut. O ile nie ma szczególnej potrzeby sprawdzania rozmiaru bloku bazy danych kilka razy dziennie, wydaje się, że OTT prosi administratora DBA o przywilej, aby dowiedzieć się o wiele szybciej? –
W Oracle, rozmiar bloku jest ustawiony na tabelę. Możesz zapytać user_tablespaces lub dba_tablespaces (jeśli masz dostęp) i zobaczyć rozmiar bloku dla każdego obszaru tabel; te widoki zwykle działają natychmiast.
Możesz również dołączyć do tych 2 do dba_tabeli, user_tables lub all_tables i pomnożyć liczbę bloków przez rozmiar bloku, aby uzyskać całkowity rozmiar tabeli w bajtach (podzielić przez 1024 * 1024, aby uzyskać rozmiar w MB etc.)
Ponieważ rozmiar bloku jest różna dla każdej tabel lepiej wykorzystać następujące zapytanie:
select block_size, tablespace_name from dba_tablespaces;
Uwaga: Oracle obsługuje inny rozmiar bloku dla każdego tablespaspace. Parametr valuse v v $ jest po prostu "domyślny". – ibre5041