Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 1

Step 1: Create a shell script to accept a sql file and execute against a particular

database. Make necessary changes to the ORACLE_SID, ORACLE_BASE, ORACLE_HOME


parameters.

$ vi sql.sh
export ORACLE_SID=transprd
export ORACLE_BASE=/u00/app/oracle
export ORACLE_HOME=/u00/app/oracle/product/11.2.0.3/db_1
export
PATH=/u00/app/oracle/product/11.2.0.3/db_1/bin:/usr/kerberos/bin:/usr/local/bin:/bi
n:/usr/bin:/home/oracle/bin:/u00/app/oracle/product/11.2.0.3/db_1/bin:.
sqlplus sthomas/voyage123 << EOF > /home/oracle/st/gath.log
@$1
exit
EOF

Step 2: Change the permission for the shell script


$ chmod 744 sql.sh
Step 3: Create a sql script file to generate the scripts for gather statistics
command. Make necessary changes to the table names mentioned in red color below.
$ cat cr_gather.sql
set pages 100
set lines 250
set echo off feedback off heading off
spool gather.sql
select 'SET ECHO ON FEEDBACK ON TIMING ON' FROM DUAL;
select 'exec dbms_stats.gather_table_stats (ownname => ''' || owner ||''', tabname
=> '''||table_name||''', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, cascade
=> TRUE,method_opt => '''||' FOR ALL COLUMNS SIZE AUTO'''||', degree => 8);' from
dba_tables
where table_name in ('EMP', 'DEPT');
spool off
Step 4: Run the shell script with argument as the sql script file (cr_gather.sql).
This will create a gather.sql script file in the same directory.
$ sql.sh cr_gather.sql
Step 5: Add a crontab entry using crontab �e command with required execution
timings.
01 23 * * * /home/oracle/st/sql.sh /home/oracle/st/gather.sql >
/home/oracle/st/cron.log

You might also like