Oracleda Archivelog rejimi
Archivelog rejimində olan Oracle bazasında redo log fayllarına yazılan bütün dəyişiklər və ya tranzaksiyalar tarixçə formasında saxlanılır. Bəs bu dəyişiklərin tarixçə formasında saxlanılmasının bizim üçün üstünlükləri nələrdir?
- Baza açıq olarkən ehtiyat nüsxə (backup) almaq imkanı
- Son tranzaksiyaya qədər bərpa etmə imkanı
- Bazanın dayanaqlılığını və informasiya itkisini minimuma endirmək üçün müxtəlif texnologiyalardan istifadə imkanı
7/24 rejimində fəaliyyət göstərən informasiya sistemlərində bazanın bir neçə dəqiqəlik belə dayandırılmasına bir çox hallarda icazə verilmir. Lakin bazanın ehtiyat nüsxəsinin saxlanılması vacibdir. Bu səbəbdən Oracle tövsiyyə edir ki, real istifadə mühitində olan bazalar archivelog rejimində istifadə edilsin. Bu zaman baza istifadə edilərkən onun ehtiyat nüsxəsini almaq mümkün olur. Əgər no archivelog rejimində olan bazaların ehtiyat nüsxəsini almaq istəsək bu zaman istifadəçilərin bazadan istifadəsi məcburən dayandırılmalıdır. Eyni zamanda əgər no archivelog rejimində olan baza istifadə ediriksə, saat 03:00-da bazanın ehtiyat nüsxəsi alınarsa, 13:00-da bazada problem yaranarsa, biz bazanı bərpa etmək istədikdə ən yaxşı halda 03:00 vəziyyətinə olan ehtiyat nüsxədən bərpa edə bilərik. Bu isə 10 saat ərzində baş tutan tranzaksiyaların silinməsi deməkdir. Lakin archivelog rejimində biz 03:00-da bazanın ehtiyat nüsxəsini aldıqdan sonra bazada baş verən tranzaksiyalar üçün tarixçə formasında loglar generasiya edilir. Əgər 13:00-da hər hansı bir problem baş verərsə, əvvəlcə 03:00-a olan ehtiyat nüsxəni bərpa edib, daha sonra ehtiyat nüsxədən sonradan aparılmış tranzaksiyaları bərpa edə bilərik. İndi isə bazanı archivelog rejiminə keçirmək üçün icra edilməli addımlara baxaq.
İlk əvvəl bazanın hansı rejimdə olduğunu yoxlayaq. Bunun üçün iki üsuldan istifadə edə bilərsiniz. Əvvəlcə sqlplus üzərindən bazaya qoşulaq.
sqlplus / as sysdba
Daha sonra istifadə edə biləcəyimiz aşağıdakı sorğulara baxaq.
archive log list;
əmrini icra etdikdə əgər baza no archivelog rejimindədirsə aşağıdakı nəticə əks olunacaq.
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 142
Current log sequence 144
Və ya aşağıdakı sorğunu icra edə bilərik.
select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
Baza no archivelog rejimində olduğu üçün artıq bazanı archivelog rejiminə keçirdək.
Bazanı söndürürük.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
Bazanı mount rejimində açırıq.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 3390558208 bytes
Fixed Size 2180464 bytes
Variable Size 1895828112 bytes
Database Buffers 1476395008 bytes
Redo Buffers 16154624 bytes
Database mounted.
Bazanı archivelog rejiminə keçirtmək üçün əmri daxil edirik.
SQL> ALTER DATABASE ARCHIVELOG;
Database altered.
Archivelog rejimində olan bazanı no archivelog rejiminə keçirtmək üçün ALTER DATABASE NOARCHIVELOG;
əmrini icra etmək lazımdı. İndi isə bazanı aça bilərik.
SQL> ALTER DATABASE OPEN;
Database altered.
Yenidən bazanın rejimini yoxlayaq.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 142
Next log sequence to archive 144
Current log sequence 144
Artıq bazamız archivelog rejimindədir.