Monthly Archives: November 2009

Backup/Recovery dữ liệu trong Oracle

Control File: Mỗi Oracle Database đều có 1 control file, nó đơn giản chỉ là 1 file nhị phân dùng để ghi thông tin cấu trúc vật lý of database. Thông tin cấu trúc of database là Tên database, Tên và đường dẫn các file datafile, các file redo log đc liên kết đến, thời điểm tạo database, số lượng các file log hiện hành, thông tin checkpoint, …
Multiplex Control Files: Mỗi oracle database nên có tối thiểu 2 control file, và đc lưu trữ trên các hardware khác nhau. Nếu 1 control file bị hỏng, thì có thể đc restore từ 1 control file trên hardware khác.
Một số command liên quan đến control file:
– Backup Control File:
+ Back up nhị phân
Code:
ALTER DATABASE BACKUP CONTROLFILE TO ‘ICT24H.BKP’;
+ Back up dạng có thể đọc đc ( human readable format )
Code:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘C:/ICT24H.TXT’;
Recovery Control File:
+ recovery file control bị ngắt từ 1 bản sao Control File:
Giả định rằng một trong các file control bị ngắt, thư mục file control có thể truy cập đc, và có 1 bản sao of mutilplexed control file.
Code:
– shutdown instance.
– cp oldfile newfile
– startup
+ recovery Permanent Media Failure từ 1 bản sao Control File:
Giả định một trong các file control không thể đc truy cập ( inaccessible ) do thiết bị lưu trữ lỗi ( Permanent Media Failure ) và có 1 bản sao of mutilplexed control file.
Code:
– shutdown instance.
– cp oldfile newfile
– sửa thông số CONTROL_FILES trong file khởi tạo tham số, thay đường dẫn mới.
CONTROL_FILES = (newfile1, newfile2 )
– startup
Các table, view có liên quan đến control file: v$database, v$controlfile, v$controlfile_record_section
Redo threads: Mỗi instance database đều có các redo log group of riêng nó. Các redo log group này có thể mutilplexed hoặc ko, và đc gọi là 1 instance thread of redo. Thông thường, chỉ 1 database instance truy cập đc vào Oracle Database, vì vậy chỉ tồn tại 1 thread hiện hành. Đối với môi trường RAC, có 2 hay nhiều instance truy cập vào 1 database và mỗi instance này đều có thread of redo của riêng nó.
Redo log contents: các file redo log đc fill bởi các redo record, hay còn đc gọi là redo entry. Các redo entry này ghi các data mà có thể đc dùng để xây dựng lại ( recontruct ) tất cả các thay đổi trong database.
Làm thế nào để database ghi thông tin trong redo log: File redo log of database phải có tối thiểu 2 file, database yêu cầu tối thiểu 2 file để đảm bảo rằng 1 cái thường xuyên đc sử dụng để ghi, 1 cái thì đc lưu trữ ( nếu chế độ ARCHIVELOG đc thiết lập )
LGWR viết các file redo log theo hình tròn ( circular ). Khi file redo log hiện hành đầy, LGWR bắt đầu viết tới file redo log tiếp theo, khi file redo log cuối cùng bị đầy, LGWR quay lại file redo log đầu tiên và viết nó.
Nếu database sử dụng chế độ ARCHIVELOG thì sau khi file redo log bị đầy, LGWR sẽ viết thông tin đó lên datafile và lưu trữ file redolog đó, sau đó đc sử dụng lại.
Control File: Mỗi Oracle Database đều có 1 control file, nó đơn giản chỉ là 1 file nhị phân dùng để ghi thông tin cấu trúc vật lý of database. Thông tin cấu trúc of database là Tên database, Tên và đường dẫn các file datafile, các file redo log đc liên kết đến, thời điểm tạo database, số lượng các file log hiện hành, thông tin checkpoint, …
Multiplex Control Files: Mỗi oracle database nên có tối thiểu 2 control file, và đc lưu trữ trên các hardware khác nhau. Nếu 1 control file bị hỏng, thì có thể đc restore từ 1 control file trên hardware khác.
Một số command liên quan đến control file:- Backup Control File:+ Back up nhị phânCode:ALTER DATABASE BACKUP CONTROLFILE TO ‘ICT24H.BKP’;+ Back up dạng có thể đọc đc ( human readable format )Code:ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘C:/ICT24H.TXT’;-
Recovery Control File:+ recovery file control bị ngắt từ 1 bản sao Control File:Giả định rằng một trong các file control bị ngắt, thư mục file control có thể truy cập đc, và có 1 bản sao of mutilplexed control file.Code:- shutdown instance.- cp oldfile newfile- startup+ recovery Permanent Media Failure từ 1 bản sao Control File:Giả định một trong các file control không thể đc truy cập ( inaccessible ) do thiết bị lưu trữ lỗi ( Permanent Media Failure ) và có 1 bản sao of mutilplexed control file.Code:- shutdown instance.- cp oldfile newfile- sửa thông số CONTROL_FILES trong file khởi tạo tham số, thay đường dẫn mới.CONTROL_FILES = (newfile1, newfile2 )- startupCác table, view có liên quan đến control file: v$database, v$controlfile, v$controlfile_record_section
Redo threads: Mỗi instance database đều có các redo log group of riêng nó. Các redo log group này có thể mutilplexed hoặc ko, và đc gọi là 1 instance thread of redo. Thông thường, chỉ 1 database instance truy cập đc vào Oracle Database, vì vậy chỉ tồn tại 1 thread hiện hành. Đối với môi trường RAC, có 2 hay nhiều instance truy cập vào 1 database và mỗi instance này đều có thread of redo của riêng nó.
Redo log contents: các file redo log đc fill bởi các redo record, hay còn đc gọi là redo entry. Các redo entry này ghi các data mà có thể đc dùng để xây dựng lại ( recontruct ) tất cả các thay đổi trong database.Làm thế nào để database ghi thông tin trong redo log: File redo log of database phải có tối thiểu 2 file, database yêu cầu tối thiểu 2 file để đảm bảo rằng 1 cái thường xuyên đc sử dụng để ghi, 1 cái thì đc lưu trữ ( nếu chế độ ARCHIVELOG đc thiết lập )LGWR viết các file redo log theo hình tròn ( circular ). Khi file redo log hiện hành đầy, LGWR bắt đầu viết tới file redo log tiếp theo, khi file redo log cuối cùng bị đầy, LGWR quay lại file redo log đầu tiên và viết nó.Nếu database sử dụng chế độ ARCHIVELOG thì sau khi file redo log bị đầy, LGWR sẽ viết thông tin đó lên datafile và lưu trữ file redolog đó, sau đó đc sử dụng lại.


Multiplexing Redo Log File: Oracle Database cho phép sử dụng mutiplex redo log file, khi đó LGWR sẽ ghi thông tin redo log thay đổi tới nhiều file redo log nhận dạng.
Một số command liên quan đến Redo Log File:
– Tạo Redo Log Group

Code:
ALTER DATABASE ADD LOGFILE (‘/FILEMEM1.RDO’,’/FILEMEM2.RDO’) SIZE 500K;

– Tạo Redo Log Member

Code:
ALTER DATABASE ADD LOGFILE MEMBER ‘/FILENAME3.RDO’ TO GROUP 2;

– Cấp phát lại ( Relocating ) và Đổi tên ( Renaming ) Redo Log Member
Giả sử:
. Các file log được đặt tại 2 disk: diska và diskb
. Redo log đc duplex, 1 group gồm các member /diska/logs/log1a.rdo và /diskb/logs/log1b.rdo, và 1 group gồm các member /diska/logs/log2a.rdo và /diskb/logs/log2b.rdo
. Các file redo log đc đặt trên diska phải đặt lại trên diskc. Các tên file mới sẽ reflect vị trí mới: /diskc/logs/log1c.rdo/diskc/logs/log2c.rdo
Hoạt động

Code:
. shutdown database
. copy file redo log tới vị trí mới
. connect / as SYSDBA
STARTUP MOUNT
. ALTER DATABASE RENAME FILE ‘/diska/logs/log1a.rdo’,’/diska/logs/log2a.rdo’ TO ‘/diskc/logs/log1c.rdo’,’/diskc/logs/log2c.rdo’;
. ALTER DATABASE OPEN;

– Xóa Log Group
. 1 instance yêu cầu tối thiểu 2 group, bất chấp số lượng các member trong group.
. Có thể xóa log group chỉ nếu nó inactive. Nếu cần xóa log hiện hành, cưỡng ép con trỏ log switch
. Đảm bảo redo log group được archive ( nếu chế độ ARCHIVELOG đc bật ) trước khi xóa nó.

Code:
. ALTER DATABASE DROP LOGFILE GROUP 3

– Xóa Log Member

Code:
. ALTER DATABASE DROP LOGFILE MEMBER ‘/oracle/logs/log3c.rdo’

– Cưỡng ép con trỏ log switche

Code:
. ALTER DATABASE SWITCH LOGFILE;

– Clearing file redo log.
. File redo log có thể bị corrupt trong khi database vẫn open. Trong tình huống này, database phải stop do quá trình archive không thể tiếp tục. Hoặc sử dụng câu lệnh

Code:
ALTER DATABASE CLEAR LOGFILE

để khởi tạo lại ( reinitialize ) file trong khi không phải shutdown database.
. Câu lệnh sau sẽ clear các file log trong group 3

Code:
ALTER DATABASE CLEAR LOGFILE GROUP 3;

. Nếu file redo log bị corrupt không đc archive, sử dụng câu lệnh sau:

Code:
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;

Nguồn: http://www.ict24h.net

Advertisements