Friday, April 18, 2008

Oracle Backup

การ Backup แบ่งเป็น

1. Logical Backup
คือการ export ข้อมูล ออกมาเก็บไว้ใน dump file ข้อดีคือง่าย และไม่ต้องปิดการใช้ฐานข้อมูลขณะที่ export ปกติจะ export ข้อมูลทั้งหมดของ user แต่สามารถเลือกให้ backup ทั้ง databast หรือแค่บาง table ก็ได้

ตัวอย่างคำสั่งที่ใส่ไว้ใน batch file เช่น

exp userid=[user]/[passwd] file=[database.dmp] log=[logfile.log] rows=y

"E:\Oracle Backup\rar.exe" a -df -m5 -agYYYY-MM-DD .\Backup\ *.dmp

2. Physical Backup
เป็นการ backup ไฟล์ที่ประกอบเป็นฐานข้อมูลจริงๆ ซึ่งประกอบไปด้วย
- Control File
- Data File
- Redo Log File
- Parameter File
- Password File
- Archive File
แบ่งออก 2 แบบ คือ Cold Backup กับ Hot Backup

Cold Backup หรือ Full Backup
ประกอบด้วย 3 step คือ
1. shutdown oracle ด้วย utillity ที่ชื่อว่า svrmgrl (สำหรับ oracle8i แต่ถ้าเป็น oracle9i จะสั่งจาก SQL*Plus ซึ่งจะต้อง login ด้วย role sysdba ซึ่งเปรียบเสมือน root ของ oracle มีสิทธิ์ทำได้ทุกอย่าง)
EX
SVRMGR> connect internal (เปรียบเสมือน root ของ oracle8i )
default password of internal = oracle
SVRMGR> shutdown immediate หรือ shutdown normal

2. copy file ฐานข้อมูลต่างๆข้างบนไปเก็บไว้ในที่ปลอดภัย
EX
copy oracle_file backup_media
อย่าลืมจด path ของไฟล์เหล่านั้นเอาไว้ด้วย เวลา restore คืนจะได้เอาไปใส่ไว้ได้ถูก path

3. startup oracle
EX
SVRMGR> startup

Hot Backup
เป็นการ copy file คล้ายกับ cold backup แต่ไม่ต้อง ปิดฐานข้อมูลก่อน แต่วิธีทำจะซับซ้อนกว่า และสามารถใช้กับฐานข้อมูลที่ทำงานแบบ Archive Mode ได้เท่านั้น

1. สั่งเริ่มต้นการทำ Hot Backup ของ tablespace โดยใช้คำสั่ง
SVRMRG> alter tablespace tablespace_name begin backup;
2. คัดลอกไฟล์ของ tablespace ที่สั่งทำ backup ไปเก็บไว้ยังดิสก์สำหรับสำรองข้อมูล โดยใช้คำสั่ง copy
3. สั่งหยุดการทำ Hot Backup ของ tablespace โดยใช้คำสั่ง
SVRMRG> alter tablespace tablespace_name end backup;
4. สั่งให้ฐานข้อมูล switch log file เพื่อให้เกิดการทำ checkpoint ขึ้นในฐานข้อมูล
SVRMRG> alter system switch logfile;

วิธีการหาที่อยู่ของไฟล์ที่ต้อง Backup

1. Data File
select file_id,file_name from dba_data_file;
หรือ
select file#,name from v$datafile;
2. Control File
select name from v$controlfile;
หรือ ดูจากไฟล์ initSID.ora ซึ่งเป็น parameter file ของฐานข้อมูลก็ได้ ตรงบันทัด CONTROL_FILE
SID คือ System Identifier หรือชื่อของฐานข้อมูล เช่นถ้าเรามี database ชื่อ SUN ก็จะมีชื่อ control file ว่า initSUN.ora
3. Redo Log File
select group#, member from v$logfile;

4. ดูว่ามีฐานข้อมูลอะไรบ้าง และสามารถทำ hot backup ได้หรือไม่
select name, created, log_mode from v$database;
ถ้า log_mode = archivelog แสดงว่าสามารถทำ hot backup ได้
ถ้า log_mode = noarchivelog แสดงว่าทำ hot backup ไม่ได้

5. ดูว่ามีไฟล์อะไรที่ถูกสั่งทำ hot backup บ้าง
select * from v$backup;

Note
- view จะขึ้นต้นด้วย v$ สามารถดูได้จาก Oracle Enterprise Manager (OEM) ใน Schema SYS ว่ามี view อะไรบ้าง เช่น v$parameter , v$pwfile_users, v$tablespace เป็นต้น
- OEM สามารถใช้ดูว่าใน oracle มี database อะไรอยู่บ้าง และใน DB นั้นมี user , tablespace, schema อะไรอยู่บ้างได้
- เราสามารถใช้ OEM ช่วยในการดูตำแหน่งของไฟล์ต่างๆได้ง่ายขึ้นเช่น
control file ดูได้จาก Storage/Controlfile
datafile ดูได้จาก Storage/Tablespaces/ชื่อของ tablespace ซึ่ง 1 tablespace อาจจะประกอบไปด้วยหลายๆไฟล์ก็ได้ , ต่างนามสกุลกันก็ได้
Redo Logfile ดูได้จาก Stroage/ Redo Log Groups

No comments:

Post a Comment