cmdanalyze.jpg Voraussetzungen: Analysedaten sollten immer für alle Tabellen eines Schemas erstellt.
Alle Skripte in gleiche Ordner kopieren, mit entsprechenden Ordnerberechtigungen.
In conf.txt entsprechend Username, Password, Database anpassen.
Bsp:
#u#Scott
#p#Tiger
#d#orcl
compstat.bat

@ECHO OFF
COLOR 3E
ECHO ************************************************************
ECHO                 Variablen Deklarieren
ECHO ************************************************************
for /f "tokens=1 delims=;" %%a in ('findstr "#u#" conf.txt') do set us=%%a
set su=%us:#u#=%
for /f "tokens=1 delims=;" %%a in ('findstr "#p#" conf.txt') do set ps=%%a
set sp=%ps:#p#=%
for /f "tokens=1 delims=;" %%a in ('findstr "#d#" conf.txt') do set db=%%a
set bd=%db:#d#=%
set errs=Erfolgreich
set bzeit=%time:~0,8%
set logdatei=analysestat.log
set tmplog=lg1.log
ECHO ************************************************************
ECHO                 ANALYSE Beginn regestrieren
ECHO ************************************************************
for /F "delims=" %%a in (%logdatei%) do echo %%a >> %tmplog%
echo ANALYSE Beginn: %su% %date% %bzeit% > %logdatei%
echo ################################## ANALYSE %su% BEG ############################# >> %logdatei%
for /F "delims=" %%a in (%tmplog%) do echo %%a >> %logdatei%
del %tmplog% /q
ECHO ************************************************************
ECHO                 ANALYSE Beginn
ECHO ************************************************************
sqlplus %su%/%sp%@%bd% @cstattab.sql
sqlplus %su%/%sp%@%bd% @compstat.sql
ECHO ************************************************************
ECHO                 ANALYSE Result ermitteln
ECHO ************************************************************
for /f %%i in ('sqlplus -s %su%/%sp%@%bd% @cstattab.sql') do @set count=%%i
for /f "tokens=1 delims=-" %%a in ("%count%") do set err=%%a
IF "%err%" == "ORA" goto :ORAERR
IF "%err%" == "OSERR" goto :OSERR
goto :ERFOLG
:ORAERR
set put=# Oracle Error bei Analyse Tabellen Schema %su%
goto :RESULT
:OSERR
set put=# Betriebsystem Error bei Analyse Tabellen Schema %su%
goto :RESULT
:ERFOLG
set put=# %count% Tabellen Schema %su% %errs% Analysiert
goto :RESULT
if errorlevel 1 goto :error
goto :RESULT
:error
set put=# Batchscript Error bei Analyse Tabellen Schema %su%
ECHO ************************************************************
ECHO                 ANALYSE Result, Ende regestrieren
ECHO ************************************************************
:RESULT
REM Zeit END ermitteln:
set ezeit=%time:~0,8%
REM ANALYSE Result, Ende regestrieren:
for /F "delims=" %%a in (%logdatei%) do echo %%a >> %tmplog%
echo ################################## ANALYSE %su% END ############################# > %logdatei%
echo ANALYSE Ende: %su% %date% %ezeit% >> %logdatei%
echo %put% >> %logdatei%
for /F "delims=" %%a in (%tmplog%) do echo %%a >> %logdatei%
del %tmplog% /q
REM pause
exit

    
cstattab.sql

SET echo off;
SET heading off;
SET define off;
SET feedback off;
SET verify off;
set tab off;
set trimout off;
set trims off;
SET serveroutput on;
SET PAGESIZE 0
SET LINESIZE 120
WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT OSERR
SPOOL compstat.sql
select 'ANALYZE TABLE '||t.OWNER||'.'||t.table_name||' COMPUTE STATISTICS; ' from sys.all_tables t
where t.OWNER=(SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM DUAL);
SELECT TO_CHAR('exit;') FROM DUAL;
SPOOL OFF
SELECT TRIM (count(*)) from sys.all_tables t where t.OWNER=(SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM DUAL);
SET define on;
SET feedback on;
SET heading on;
SET verify on;
set tab on;
set trimout on;
set trims on;
exit;

    
conf.txt

#u#Username
#p#Password
#d#Database

    
als ZIP herunterladen:
Analyzestat
für mehrere DB:
ACS