Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Query for used blocks in a table
"Lars Erik Petersen" <lap_at_orkfin.no> wrote in message
news:AJy6d.258$ZG9.170427392_at_news.telia.no...
> Hi!
>
> I'm running the following query to list the tables in question:
>
> SELECT a.owner, a.segment_name
> FROM dba_segments a, dba_tables b
> WHERE a.owner ='SCDAT'
> AND a.segment_type = 'TABLE'
> AND a.segment_name = b.table_name
> AND a.owner = b.owner
> GROUP BY a.owner, a.segment_name
>
> For each of the tables returned by the query, I want to do another query:
>
> SELECT COUNT(DISTINCT(SUBSTR(ROWID,1,8) || SUBSTR(ROWID,15,4))) FROM
{table}
>
> (where {table} is the table name as returned by the query above)
>
> I doubt I can do this in a single query, but could someone please give a
> hint as to how I could do it in a PL/SQL script?
>
> What I originally wanted was to use this query in OEM and create a report
> (report definitions) to see only used blocks in an table, and not
allocated.
> Is this possible?
>
>
> Regards,
> Lars Erik Petersen
Hi Lars
In case of chained/migrated rows you will miss some blocks with a query on the ROWID. I don't know what are you trying to do... anyway in my opinion you should consider used each block under the high-water mark
Chris
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=