JP,

        After you've initially created statistics and set the tables into monitoring 
mode this script will create a DBMS_JOB that keeps them up to date each morning:

set serverout on size 100000
prompt "Connecting to SYS"
connect sys@&_dbname
grant select on dba_tab_modifications to system;
grant analyze any to system;
prompt "Connecting as System"
@connect system@&_dbname
create procedure compute_daily_stats is
begin
  for a in (select distinct table_owner from dba_tab_modifications) loop
        DBMS_STATS.GATHER_SCHEMA_STATS(a.table_owner,
                                       NULL,FALSE,
                                       'FOR ALL indexed COLUMNS SIZE 1',
                                       NULL,'DEFAULT',TRUE,NULL,NULL,'GATHER 
STALE','DEFAULT');
  end loop;
end;
/

declare
  jb integer;
begin
  dbms_job.submit(jb, 
'compute_daily_stats;',trunc(sysdate+1)+(6/24),'trunc(sysdate+1)+(6/24)',FALSE);
  dbms_output.put_line('Job is '||jb);
end;
/


Dick Goulet
Senior Oracle DBA
Oracle Certified 8i DBA 

-----Original Message-----
Sent: Tuesday, June 03, 2003 11:25 AM
To: Multiple recipients of list ORACLE-L


Sorry JP, I should have clarified that DBMS_STATS is the way to go, when on
a 9i or above release. One of the simple factors being that ANALYZE is being
deprecated.. There seemed to be a number of bugs/quirks, whatever you want
to call them, in certain 8.1.x versions, which are now fixed within 9i..

There's a number of threads about the issues, available in the list archives
(you can find them at http://www.faqchest.com), which I dug around - as I
remembered seeing a post by Connor McDonald, where he gave away an alternate
script to gather stats, here's the mail:

http://www.faqchest.com/prgm/oracle-l/ora-02/ora-0210/ora-021011/ora02100802
_06150.html

I think the general consensus is that DBMS_STATS is quicker. I've never
personally done any comparative benchmarks to corroborate this sheep
following attitude though.. ;)

Regards

Mark

-----Original Message-----
Sent: 03 June 2003 14:55
To: Mark Leith
Cc: [EMAIL PROTECTED]


Thanx a lot Mark.
Sure , your code has given me a starting point.
let me change accordingly to use DBMS_STATSe and give a try :-)

So,can i conclude that DBMS_STATS is better than ANALYZE ?!

Someone over the list mentioned that DBMS_STATS is slower.
is it so ? What is your opinion regarding this ?!
just curious to know !

Regards,
Jp.


3-6-2003 22:01:32, "Mark Leith" <[EMAIL PROTECTED]> wrote:

>Prem,
>
>Use DBMS_JOBS to run the analyze:
>
>===================================
>
>undef username
>undef password
>grant analyze any to &&username
>/
>
>connect &&username/&&password
>
>CREATE or REPLACE PROCEDURE analyze_tables (
>      v_stat_type IN VARCHAR2 := 'COMPUTE') AS
>      CURSOR c IS
>      SELECT DISTINCT owner
>      FROM   all_tables
>      WHERE  owner not in ('SYS','SYSTEM');
>      BEGIN
>      FOR any_row IN c LOOP
>            dbms_utility.analyze_schema(
>                  any_row.owner,v_stat_type);
>      END LOOP;
>      END;
>/
>
>===================================
>
>variable jobno number
>declare jobno number;
>      BEGIN
>      dbms_job.submit(:jobno,
>        'begin &&username.analyze_tables; end;',
>        to_date('03jun0304:00','DDMONYYHH24:MI'),
>        'trunc(sysdate)+(1+(4/24))');
>      END;
>
>===================================
>
>The above will run a COMPUTE analyze on all schemas, except SYS and
SYSTEM,
>at 4:00am every day. Modify it to your own needs, but it should give
you a
>starting point..
>
>I would also recommend using DBMS_STATS to generate your statistics.
>
>Have fun! ;0)
>
>Mark



---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.484 / Virus Database: 282 - Release Date: 27/05/2003

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.484 / Virus Database: 282 - Release Date: 27/05/2003

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Mark Leith
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Goulet, Dick
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to