>
> Hi Ari, would you please give me the solution of the following:-
>
> - How can we calculate the total number of rows in oracle database and in
> this way get size of database?
>
> Thanks
>
>
There are three ways that come to mind to find the number of rows in the
database:
1) Use the ANALYZE built-in package to estimate or compute statistics for
all users, then issue
SELECT SUM(NUM_ROWS) FROM ALL_TABLES;
2) Export the database with FULL=Y. The output of the export will display the
number of records for each table. You will manually add the numbers.
3) SELECT COUNT(*) from all tables. Since there could be a large number of
tables, you can write a script to dynamically create another script:
set header off
set feedback off
spool count_it.sql
SELECT 'SELECT COUNT(*) FROM '||owner||'.'||table_name||';'
FROM ALL_TABLES;
spool off
Now, you have a script, "count_it.sql" that contains multiple SELECT COUNT(*)
statements. Run count_it.sql and add up the totals.
The above three methods are good to find the number of records. Since there
is overhead, such as free space within a block, and since each table has
differing data and column types, the number of records does not always give
an indication of the size of the data. To do this, type:
SELECT COUNT(distinct substr(rowid,1,8)) FROM table_name;
This will give the number of physical database blocks that the table data
occupies. Usually a database block is 2k, 4k or 8k. You should be able to
get the block size by looking at your initSID.ora file or configSID.ora file.
Do the above script for all tables.
-Ari Kaplan
Independent Oracle DBA Consultant
<-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><->
<-> For 150+ Oracle tips, visit my Web Page: <->
<-> <->
<-> www.arikaplan.com <->
<-> <->
<-> email: akaplan@interaccess.com <->
<-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><->
Back to Ari Kaplan's Home Page