컬럼추가나 삭제작업을 낮에 한참 바쁠 때 하게되면 오라클이 느려지게 돼서
컬럼추가나 삭제작업은 밤에 한가할 때 수행해야함
오라클 인스턴스의 구성
1. SGA - buffer cache, redo log buffer
2. background processor
# /home/oracle/add_email.sql
alter table emp add email varchar2(100);
exit;
/home/oracle 밑에 저장하기
# /home/oracle/run_add_email.sh
#!/bin/bash
export ORACLE_SID=ORA19 # DB SID
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus -s scott/tiger <<EOF
@/home/oracle/scripts/add_email.sql
EOF
$ chmod +x /home/oracle/run_add_email.sh
crontab -e
0 22 * * * /home/oracle/run_add_email.sh > /home/oracle/add_email.log 2>&1
alter table emp
drop column email;
crontab -e
9 14 * * * /home/oracle/run_add_email.sh > /home/oracle/add_email.log 2>&1
--> 매일 오후 2시 9분에 수행됨
7 14 16 9 * /home/oracle/run_add_email.sh > /home/oracle/add_email.log 2>&1
--> 7분 14시 16일 9월
분 시 일 월 요, *은 매분, 매시, 매일, 매월, 매요일을 뜻함

[oracle@ora19c ~]$ pwd
/home/oracle
[oracle@ora19c ~]$
[oracle@ora19c ~]$ vi drop_email.sql
[oracle@ora19c ~]$
[oracle@ora19c ~]$ cat drop_email.sql
alter table emp
drop column email;
[oracle@ora19c ~]$ pwd
/home/oracle
[oracle@ora19c ~]$ vi run_drop_email.sh
[oracle@ora19c ~]$
[oracle@ora19c ~]$ cat drop_email.sql
alter table emp
drop column email;
[oracle@ora19c ~]$ ^C
[oracle@ora19c ~]$ cat run_drop_email.sh
export ORACLE_SID=ORA19
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus -s scott/tiger <<EOF
@/home/oracle/drop_email.sql
EOF
[oracle@ora19c ~]$ chmod +x /home/oracle/run_drop_email.sh
[oracle@ora19c ~]$
[oracle@ora19c ~]$ crontab -e
crontab: installing new crontab
[oracle@ora19c ~]$
crontab -e
15 14 * * * /home/oracle/run_drop_email.sh > /home/oracle/drop_email.log 2>&1
exec dbms_stats.gather_schema_stats('SH');
select table_name, num_rows, last_analyzed
from user_tables;
[oracle@ora19c ~]$ vi exec_gather_stats_sh.sql
# /home/oracle/exec_gather_stats_sh.sql
begin
dbms_stats.gather_schema_stats('SH');
end;
/
exit;
[oracle@ora19c ~]$ vi run_exec_stats.sh
# /home/oracle/run_exec_stats.sh
#!/bin/bash
export ORACLE_SID=ORA19
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus -s sh/sh <<EOF
@/home/oracle/exec_gather_stats_sh.sql
EOF
[oracle@ora19c ~]$ crontab -e
@reboot /home/oracle/start_listener.sh >> /home/oracle/start_listener.log 2>&1
9 14 * * * /home/oracle/run_add_email.sh > /home/oracle/add_email.log 2>&1
21 14 * * * /home/oracle/run_drop_email.sh > /home/oracle/drop_email.log 2>&1
35 14 * * * /home/oracle/run_exec_stats.sh > /home/oracle/run_exec_stats.log 2>&1