A. Create Backup with record table
1. Create DATA_PUMP_DIR backup directory
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/home/oracle/backup';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO aisyah;
2. create schema (dbatools)
CREATE USER dbatools IDENTIFIED BY dbatools;
GRANT CONNECT, RESOURCE,oem_monitor TO dbatools;
ALTER USER dbatools QUOTA UNLIMITED ON USERS;
-- Memberikan hak akses dasar kepada user dbatools
GRANT CONNECT, RESOURCE,oem_monitor TO dbatools;
-- Memberikan hak akses untuk melakukan dbatoolsistrasi
GRANT CREATE SESSION TO dbatools;
GRANT UNLIMITED TABLESPACE TO dbatools;
GRANT DBA TO dbatools;
3. create table;
CREATE TABLE backuplogduration (
host VARCHAR2(255 CHAR) NOT NULL,
backuptime TIMESTAMP NOT NULL,
start_time TIMESTAMP NOT NULL, -- Mengganti "start" karena bisa jadi kata kunci
finish_time TIMESTAMP NOT NULL,
duration VARCHAR2(255 CHAR) NOT NULL,
schemadb VARCHAR2(255 CHAR) NOT NULL,
backup VARCHAR2(255 CHAR) NOT NULL,
size_mb NUMBER(19, 0) NOT NULL,
size_b NUMBER(19, 0) NOT NULL,
filename VARCHAR2(255 CHAR) NOT NULL
);
4. run script
backupdb_record_to_table_duration.sh
[oracle@teguhth test]$ sh backupdb_record_to_table_duration.sh
5. check info from table backuplogduration
select * from backuplogduration;
select host,backuptime,start_time,finish_time,duration,schemadb,backup,size_mb,size_b,filename,(select banner from v$version) as version from backuplogduration order by backuptime desc
B. script backup using record table
[oracle@teguhth duration]$ cat backupdb_record_to_table_duration.sh
#[oracle@teguhth duration]$ cat backupdb_record_to_table_duration.sh
##cat backup_expdp_all.sh
echo ""
Server=$(hostname)
ip_address=$(ip a | awk '/inet / && $2 !~ /^127\./ {gsub("addr:","",$2); print $2}')
# Print the IP address
infotgl=$(date +%Y""%m""%d"_"%H""%M""%S"");
dbversion=$(sqlplus /NOLOG < /dev/null | grep Release | cut -d' ' -f3);
backuptime=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
echo ".::: Backup Database Oracle $dbversion using EXPDB in '$Server' with $ip_address :::."
###echo ".::: Backup Database Oracle using EXPDB in '$Server $dbversion' with $ip_address :::." >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
#!/bin/bash
#
#clear;
year=`date +%Y`; month=`date +%m`; day=`date +%d`; hour=`date +%H`; min=`date +%M`; sec=`date +%S`; dayname=`date +%a`;underscore='_';
date=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
datedir=$(date +"%Y%m%d")
#
vlogin=$'\"sys/oracle as sysdba\"'
vuser="dbatools/dbatools@//10.10.10.19:1521/tgh"
#vschema=$(
#sqlplus -s aisyah/hanin@//10.10.10.19:1521/tgh <<EOF
#SET HEADING OFF
#SET FEEDBACK OFF
#SET PAGESIZE 0
#SELECT username FROM dba_users WHERE account_status = 'OPEN' ORDER BY username;
#EXIT;
#EOF
#)
vschsql=$(
sqlplus -s aisyah/hanin@//10.10.10.19:1521/tgh <<EOF
SET HEADING OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SELECT username FROM dba_users WHERE account_status = 'OPEN' ORDER BY username;
EXIT;
EOF
)
# Menggabungkan hasil menjadi satu baris
#vschema=$("$(echo "$vschsql" | tr '\n' ' ')")
vschema=$vschsql
#vschema='aisyah,admin'
echo ""
#echo "schemanya $vschema"
echo "Backup Schema for $(echo "$vschema" | tr '\n' ' ')"
###echo "Backup Schema for $(echo "$vschema" | tr '\n' ' ')" >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
backuppath="/home/oracle/backup"
mkdir -p /home/oracle/backup/$datedir
#path="$backuppath/$year$month$day/$listdb"
#for i in $vschemas; do
for listdb in $vschema; do
datex=$(date +%Y-%m-%d" "%H:%M:%S)
dumpfile="${listdb}_${infotgl}.dmp"
logfile="${listdb}_${infotgl}.log"
filepath="$backuppath/$dumpfile"
echo "$datex --->>> Start Backup SchemaDB $listdb"
startbackup=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
epoch_startf=$(date +%s)
# Jalankan expdp untuk backup
expdp $vlogin DIRECTORY=DATA_PUMP_DIR DUMPFILE=$dumpfile LOGFILE=$logfile SCHEMAS=$listdb REUSE_DUMPFILES=YES
# Hitung ukuran file backup
FILE_SIZEFB=$(stat -c%s "$filepath")
FILE_SIZEFM=$(echo "scale=2; $FILE_SIZEFB / 1024 / 1024" | bc)
echo "FILEF $filepath"
echo "FILEFX $dumpfile"
echo "FILE_SIZEFB $FILE_SIZEFB"
echo "FILE_SIZEFM $FILE_SIZEFM"
infofile="/home/oracle/backup/$datedir/${listdb}_${infotgl}.dmp"
echo "infofile $infofile"
finishbackup=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
epoch_endf=$(date +%s)
# Menghitung selisih waktu dalam detik
finish=$((epoch_endf - epoch_startf))
# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")
echo "Duration Process"
echo "Duration : $formatted_time"
echo ""
# Masukkan data backup ke dalam tabel backuplogs
sqlplus -s "$vuser" <<EOF
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
INSERT INTO backuplogduration (host, backuptime, start_time, finish_time, duration,schemadb, backup, size_mb,size_b, filename)
VALUES ('$Server', TO_TIMESTAMP('$backuptime', 'YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('$startbackup', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP('$finishbackup', 'YYYY-MM-DD HH24:MI:SS'),'$formatted_time', '$listdb', 'EXPDP FULL', $FILE_SIZEFM,$FILE_SIZEFB, '$infofile');
COMMIT;
select * FROM backuplogduration ORDER BY backuptime DESC FETCH FIRST 1 ROWS ONLY;
EXIT;
EOF
echo "$datex --->>> Finished Backup SchemaDB $listdb"
echo ""
done
datez=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
echo "Backup All Schema Finished from $date to $datez"
###echo "Backup All Schema Finished from $date to $datez" >> ${Server}_logdbbackup_${infotgl}.txt
#datefnh=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"_%N");
#echo "Backup All SchemaDB is done at $datefnh"
mkdir -p /home/oracle/backup/$datedir
#mv /home/oracle/backup/* /home/oracle/backup/$datedir
find /home/oracle/backup -maxdepth 1 -type f -exec mv {} /home/oracle/backup/$datedir \;
datefile='/home/oracle/backup/'
echo "Check File Backup in $datefile$datedir"
### echo "Check File Backup in $datefile$datedir" >> ${Server}_logdbbackup_${infotgl}.txt
ls -lh /home/oracle/backup/$datedir
### ls -lh /home/oracle/backup/$datedir >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
###echo "Copyright by : Teguh Triharto" >> ${Server}_logdbbackup_${infotgl}.txt
###echo "Website : https://www.linkedin.com/in/teguhth" >> ${Server}_logdbbackup_${infotgl}.txt
cat ${Server}_logdbbackup_${infotgl}.txt
echo ""
echo ""
[oracle@teguhth duration]$
#[oracle@teguhth duration]$ cat backupdb_record_to_table_duration.sh
##cat backup_expdp_all.sh
echo ""
Server=$(hostname)
ip_address=$(ip a | awk '/inet / && $2 !~ /^127\./ {gsub("addr:","",$2); print $2}')
# Print the IP address
infotgl=$(date +%Y""%m""%d"_"%H""%M""%S"");
dbversion=$(sqlplus /NOLOG < /dev/null | grep Release | cut -d' ' -f3);
backuptime=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
echo ".::: Backup Database Oracle $dbversion using EXPDB in '$Server' with $ip_address :::."
###echo ".::: Backup Database Oracle using EXPDB in '$Server $dbversion' with $ip_address :::." >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
#!/bin/bash
#
#clear;
year=`date +%Y`; month=`date +%m`; day=`date +%d`; hour=`date +%H`; min=`date +%M`; sec=`date +%S`; dayname=`date +%a`;underscore='_';
date=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
datedir=$(date +"%Y%m%d")
#
vlogin=$'\"sys/oracle as sysdba\"'
vuser="dbatools/dbatools@//10.10.10.19:1521/tgh"
#vschema=$(
#sqlplus -s aisyah/hanin@//10.10.10.19:1521/tgh <<EOF
#SET HEADING OFF
#SET FEEDBACK OFF
#SET PAGESIZE 0
#SELECT username FROM dba_users WHERE account_status = 'OPEN' ORDER BY username;
#EXIT;
#EOF
#)
vschsql=$(
sqlplus -s aisyah/hanin@//10.10.10.19:1521/tgh <<EOF
SET HEADING OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SELECT username FROM dba_users WHERE account_status = 'OPEN' ORDER BY username;
EXIT;
EOF
)
# Menggabungkan hasil menjadi satu baris
#vschema=$("$(echo "$vschsql" | tr '\n' ' ')")
vschema=$vschsql
#vschema='aisyah,admin'
echo ""
#echo "schemanya $vschema"
echo "Backup Schema for $(echo "$vschema" | tr '\n' ' ')"
###echo "Backup Schema for $(echo "$vschema" | tr '\n' ' ')" >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
backuppath="/home/oracle/backup"
mkdir -p /home/oracle/backup/$datedir
#path="$backuppath/$year$month$day/$listdb"
#for i in $vschemas; do
for listdb in $vschema; do
datex=$(date +%Y-%m-%d" "%H:%M:%S)
dumpfile="${listdb}_${infotgl}.dmp"
logfile="${listdb}_${infotgl}.log"
filepath="$backuppath/$dumpfile"
echo "$datex --->>> Start Backup SchemaDB $listdb"
startbackup=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
epoch_startf=$(date +%s)
# Jalankan expdp untuk backup
expdp $vlogin DIRECTORY=DATA_PUMP_DIR DUMPFILE=$dumpfile LOGFILE=$logfile SCHEMAS=$listdb REUSE_DUMPFILES=YES
# Hitung ukuran file backup
FILE_SIZEFB=$(stat -c%s "$filepath")
FILE_SIZEFM=$(echo "scale=2; $FILE_SIZEFB / 1024 / 1024" | bc)
echo "FILEF $filepath"
echo "FILEFX $dumpfile"
echo "FILE_SIZEFB $FILE_SIZEFB"
echo "FILE_SIZEFM $FILE_SIZEFM"
infofile="/home/oracle/backup/$datedir/${listdb}_${infotgl}.dmp"
echo "infofile $infofile"
finishbackup=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
epoch_endf=$(date +%s)
# Menghitung selisih waktu dalam detik
finish=$((epoch_endf - epoch_startf))
# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")
echo "Duration Process"
echo "Duration : $formatted_time"
echo ""
# Masukkan data backup ke dalam tabel backuplogs
sqlplus -s "$vuser" <<EOF
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
INSERT INTO backuplogduration (host, backuptime, start_time, finish_time, duration,schemadb, backup, size_mb,size_b, filename)
VALUES ('$Server', TO_TIMESTAMP('$backuptime', 'YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('$startbackup', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP('$finishbackup', 'YYYY-MM-DD HH24:MI:SS'),'$formatted_time', '$listdb', 'EXPDP FULL', $FILE_SIZEFM,$FILE_SIZEFB, '$infofile');
COMMIT;
select * FROM backuplogduration ORDER BY backuptime DESC FETCH FIRST 1 ROWS ONLY;
EXIT;
EOF
echo "$datex --->>> Finished Backup SchemaDB $listdb"
echo ""
done
datez=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"");
echo "Backup All Schema Finished from $date to $datez"
###echo "Backup All Schema Finished from $date to $datez" >> ${Server}_logdbbackup_${infotgl}.txt
#datefnh=$(date +%Y"-"%m"-"%d" "%H":"%M":"%S"_%N");
#echo "Backup All SchemaDB is done at $datefnh"
mkdir -p /home/oracle/backup/$datedir
#mv /home/oracle/backup/* /home/oracle/backup/$datedir
find /home/oracle/backup -maxdepth 1 -type f -exec mv {} /home/oracle/backup/$datedir \;
datefile='/home/oracle/backup/'
echo "Check File Backup in $datefile$datedir"
### echo "Check File Backup in $datefile$datedir" >> ${Server}_logdbbackup_${infotgl}.txt
ls -lh /home/oracle/backup/$datedir
### ls -lh /home/oracle/backup/$datedir >> ${Server}_logdbbackup_${infotgl}.txt
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
###echo "Copyright by : Teguh Triharto" >> ${Server}_logdbbackup_${infotgl}.txt
###echo "Website : https://www.linkedin.com/in/teguhth" >> ${Server}_logdbbackup_${infotgl}.txt
cat ${Server}_logdbbackup_${infotgl}.txt
echo ""
echo ""
[oracle@teguhth duration]$
No comments:
Post a Comment