《大型Oracle系统在AIX/Unix环境下的实践》
TAR备份命令
-c 创建一个新的压缩备份
-f 指定备份设备名称
-v 列出每个被处理的文件名称
-x 从压缩备份中提取一个或多个文件
-t 显示压缩备份中包含的文件。
1、将/db/orale(Oracle系统的安装目录)备份至磁带上。
tar -cvf /dev/rmt0
/db/oracle
2、列表显示备份文件内容
tar -tvf /dev/rmt0
|more
3、从tar备份中恢复文件
tar -xvf /dev/rmt0
/db/oracle
tar -cvf /home/ectadm/bk
/home/ectadm/jason #将jason这个目录备份至bk中
tar -xvf /home/ectadm/bk #可用rm
-r jason将jason这个目录删除后,再执行恢复
tar -xvf /home/ectadm/bk
/home/ectadm/jason/t1 #仅恢复某个文件
find /home/etcadm/jason -print
| cpio -ov >bkup
cpio -itv < bkup
|more
如何进行数据库冷备
1、了解数据库的物理结构
select name from v$datafile
union
select member from v$logfile
union
select name from
v$controlfile;
显示如下:
/oradata/origlogA/log_g11m1.dbf
/oradata/mirrlogA/log_g11m2.dbf
/oradata/origlogB/log_g12m1.dbf
/oradata/mirrlogB/log_g12m2.dbf
/oradata/origlogA/log_g13m1.dbf
/oradata/mirrlogA/log_g13m2.dbf
/oradata/origlogB/log_g14m1.dbf
/oradata/mirrlogB/log_g14m2.dbf
/oradata/origlogA/cntrl/cntrlECT.dbf
/oradata/origlogB/cntrl/cntrlECT.dbf
/oradata/sapdata1/cntrl/cntrlECT.dbf
/oradata/sapdata7/sr3_31/sr3.data31
/oradata/sapdata7/sr3_32/sr3.data32
/oradata/sapdata7/sr3_33/sr3.data33
……
2、将oradata备份至根文件系统的dbbackup文件中
SQL>shutdown
imediate;
tar -cvf /dbbackup
/oradata/
SQL>startup
备份制度 P322
Oracle包括三种类型的数据库文件:数据文件、重做日志文件、控制文件(数据库结构信息、运行状态、备份信息等)。
数据库并非实时向硬盘写入数据。
DBWn后台进程与事务是否提交无直接关系,在用户执行COMMIT/ROLLBACK语句结束事务之后,与该事务相关的脏缓存块会暂留在数据高速缓存中,并非立即写入数据文件。
数据库实例恢复过程。
1、数据文件不同步状态。
2、前滚数据,恢复未保存数据。
3、回退数据,删除
用户进程对应的服务进程,在修改数据库数据时(默认情况下)将会产生重做记录,这些重做记录由Oracle写入到得做日志缓存中。在一定条件下,日志写盘进程LGWR从重做日志
缓存中读取重做记录,并将之写入联机重做日志文件中,同时清空重做日志缓存
。
系统中任何一个事务进行提交或回退操作,都会导致LGWR后台进程将重做记录写入到联机重做日志文件中,由于记录其操作的日志信息已经写盘,记录其数据的数据调整缓存就没
有必要立刻写盘了——因为重做信息可以用来重做事务、恢复数据库数据。
在一个事务的提交记录和重做信息都被写入重做日志文件后,Oracle会认为一个事务已经成功提交,同时向用户返回提交成功的信息。即便这时发生实例崩溃,这个事务也不会丢
失,因为联机重做日志文件中保存了这个事务的重做记录,并可以用来恢复这个事务。
检查是Oracle实例中用于调度数据缓冲区中数据与硬盘数据同步的一个后台进程,严格来说,是一个事件,当检查点事件发生时,数据库调整缓存中所有的脏数据块(已提交、未
写盘的数据块)都将被写入数据文件中,进行内存和硬盘的数据同步。同时ORACLE刷新所有控制文件及数据文件的信息,在其文件头(File
Header)的数据块中,记录当前数据库的
SCN信息。
因此可以这样类似地认为——检查点执行后的瞬间,所有已提交的数据都被同步到数据文件中,事务所产生的重做记录也都被同步到联机重做日志中。这时,整个数据库瞬间处于
一致状态,当然这个状态也是瞬间完成的。
CKPT进程负责两个工作:执行检查点和更新控制文件与数据文件的SCN信息。
SQL> show
parameter log_checkpoints_to_alert;
NAME
TYPE
VALUE
------------------------------------ -----------
--------
log_checkpoints_to_alert
boolean
TRUE
上面为TRUE设置,在警告文件中可以看到检查点发出的信息。
SQL> show
parameter FAST_START_MTTR_TARGET;
NAME
TYPE
VALUE
------------------------------------ -----------
--------
fast_start_mttr_target
integer
0
此参数用于控制数据库崩溃情况下数据恢复所需的时间长度,太短,硬盘I/O压力大,太长,则崩溃恢复耗费时长。
SQL> show
parameter CONTROL_FILES;
NAME
TYPE
VALUE
------------------------------------ -----------
------------------------------
control_files
string
/oradata/origlogA/cntrl/cntrlECT.dbf,
/oradata/origlogB/cntrl/cntrlECT.dbf,
/oradata/sapdata1/cntrl/cntrlECT.dbf
建议将控制文件放到RAID0+1的阵列上。
SQL> show
parameter user_dump_dest
NAME
TYPE
VALUE
------------------------------------ -----------
---------------------------------------------
user_dump_dest
string
/oracle/ECT/saptrace/diag/rdbms/ect/ECT/trace
数据库用户跟踪文件路径。
ALTER DATABASE BACKUP
CONTROLFILE TO TRACE; #反向抽取生成控制文件。
LGWn,ARC0
事务链条
SQL> show
parameter log_archive_max_process; #可以动态设置 ALTER
SYSTEM SET log_archive_max_processes = 15 scope=both;
NAME
TYPE
VALUE
------------------------------------ -----------
-------
log_archive_max_processes
integer
4
(默认是4,最大为30)
初始ARC进程数量。
SQL> ARCHIVE LOG
LIST;
Database log mode
Archive Mode
Automatic archival
Enabled
Archive destination
/oraarc/ECTarch/
Oldest online log sequence
32405
Next log sequence to archive
32408
Current log sequence
32408
如用了闪回恢复区,则有:
Archive Destinaton
USE_DB_RECOVERY_FILE_DEST
控制文件,数据库结构图
数据库备份集备份,数据块抽取方式,压缩,
可采用的备份方式P352
缓存恢复
(Rollforward)、事务恢复(Rollback)
在联机重做日志文件中,不仅包含已提交事务的重做日志,也包含了未提交事务的重做日志。
备份演习(恢复演练),各种情况
P363
RMAN恢复目录,RMAN资料档案
可利用块跟踪机制,快速备份。
RMAN> report
need backup redundancy 2 database;
Report of files with less than
2 redundant backups
File #bkps Name
---- -----
-----------------------------------------------------
1
1
/oracle/IDS/sapdata1/system_1/system.data1
2
1
/oracle/IDS/sapdata1/sysaux_1/sysaux.data1
3
1
/oracle/IDS/sapdata1/undo_1/undo.data1
4
1
/oracle/IDS/sapdata1/sr3_1/sr3.data1
5
1
/oracle/IDS/sapdata1/sr3_2/sr3.data2
……
Datafile Copy
/oracle/IDS/sapbackup/cntrlIDS.dbf
/oracle/IDS/sapbackup
配置文件:/oracle/IDS/sapbackup/IDS/
#控制文件中的使用记录至少需要保留的天数。
SQL> show
parameter control_file_record_keep_time
NAME
TYPE
VALUE
------------------------------------ -----------
---------
control_file_record_keep_time
integer
30
Oracle自己的备份管理软件Oracle Security
Backup(OSB)、还有Veritas,Legato,EMC,IBM的TSM(Tivoli Storage
Manager)等厂商也有自己的产品。
TSM是AIX平台执行数据库备份的佼佼者。
RMAN> CONFIGURE
DEVICE TYPE DISK PARALLELISM 6; #提高备份的并行度
new RMAN configuration
parameters:
CONFIGURE DEVICE TYPE DISK
PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration
parameters are successfully stored
released channel:
ORA_DISK_1
RMAN>backup as
backupset database; #不包含归档日志。
RMAN>backup as
backupset plus archivelog delete input;
#含归档日志文件备份,同时将已备份的归档日志文件删除。
col FILE_ID format
9999
col FILE_NAME format
a60
col TABLESPACE_NAME format
a30
select
FILE_ID,FILE_NAME,TABLESPACE_NAME from DBA_DATA_FILES order by
3;
RMAN> list
backup of controlfile;
crontab -e
crontab -l
whoami
oracle
chmod 750 *.sh
#检查数据文件及归档日志是事完好。
RMAN>BACKUP
VALIDATE DATABASE ARCHIVELOG ALL;
可通过V$BACKUP_CORRUPTION或V$COPY_CORRUPTION查看物理坏块的信息。
select
FILE#,BLOCK#,CORRUPTION_TYPE from V$BACKUP_CORRUPTION;
select
FILE#,BLOCK#,CORRUPTION_TYPE from V$COPY_CORRUPTION;
第11章 恢复崩溃的系统
Tivoli Sysback环境,Veritas
NBU等。
#shutdown -Fr 重启系统
发现4号数据文件offline后,如何恢复?
col NAME format
a50
col ENABLED format
a12
col STATUS format
a8
select NAME,ENABLED,STATUS from
v$datafile;
SQL>alter
database datafile 4 offline;
RMAN>list backup
summary;
RMAN>list backup
of datafile 4 summary;
RMAN>restore
datafile 4; #装载
RMAN>recover
datafile 4; #恢复
RMAN>sql "alter
database datafile 4 online";
退出RMAN,再查询select
NAME,ENABLED,STATUS from v$datafile; 发现4号文件Online了。
如果是还原表空间或系统表空间损坏,则数据库系统不能运行,数据库一定不能处于打开状态。
数据库系统崩溃的恢复
思路:装载回数据库的一个完整备份集进行恢复。
$rman target/
RMAN>restore
database;
RMAN>recover
database;
RMAN>alter
database open;
此方法简单,但代价大。
各种文件(控制/日志)损坏情况下的恢复?
P433
整体崩溃下的系统重构?P434
Oracle安装卷组(备份方法:savevg,backup,tar,cpio等方式)和数据卷组。
磁盘冷热迁移 P441
深入学习理解下卷组
# lsvg
rootvg
esdbvg
esdbarcvg
# lspv -L
hdisk0
00c37a803b0ff3ae
rootvg
active
hdisk2
00c37a806f6aa09d
rootvg
active
hdisk1
00c37a8017dd14c8
esdbvg
active
hdisk3
00c37a8017dd6caa
esdbvg
active
hdisk4
00c37a8017dd9942
esdbvg
active
hdisk5
00c37a8017ddbf10
esdbvg
active
hdisk18
00c37a8021d8f12c
esdbarcvg
active
# lsvg -p rootvg
#显示rootvg由两块物理硬盘构成。
rootvg:
PV_NAME
PV STATE
TOTAL PPs
FREE PPs
FREE DISTRIBUTION
hdisk0
active
558
100
72..00..00..07..21
hdisk2
active
558
64
12..00..00..48..04
# lsvg -p esdbvg
#查看esdbvg的状态
esdbvg:
PV_NAME
PV STATE
TOTAL PPs
FREE PPs
FREE DISTRIBUTION
hdisk1
active
799
0
00..00..00..00..00
hdisk3
active
799
0
00..00..00..00..00
hdisk4
active
799
0
00..00..00..00..00
hdisk5
active
799
45
00..00..00..00..45
# lsvg -p
esdbarcvg
esdbarcvg:
PV_NAME
PV STATE
TOTAL PPs
FREE PPs
FREE DISTRIBUTION
hdisk18
active
799
18
00..00..00..00..18
# lsvg -l esdbvg
#esdbvg这个卷组上定义了逻辑卷(lvoradata),且该逻辑卷被条带化设置,上面创建了文件系统/oradata。
esdbvg:
LV NAME
TYPE
LPs
PPs PVs
LV STATE
MOUNT POINT
lvoradata
jfs2
3150 3150
4
open/syncd
/oradata
loglv01
jfs2log
1
1
1
open/syncd
N/A
查看Oracle数据库的jfs2(not裸设备)设备使用状态,当前是open的,而不是closed的。
# lsvg -l esdbvg
esdbvg:
LV NAME
TYPE
LPs
PPs PVs
LV STATE
MOUNT POINT
lvoradata
jfs2
3150 3150
4
open/syncd
/oradata
loglv01
jfs2log
1
1
1
open/syncd
N/A
查看hdisk5的使用情况
# lspv -p hdisk5
hdisk5:
PP RANGE
STATE REGION
LV NAME
TYPE
MOUNT POINT
1-160
used outer
edge lvoradata
jfs2
/oradata
161-320 used
outer middle
lvoradata
jfs2
/oradata
321-479 used
center
lvoradata
jfs2
/oradata
480-639 used
inner middle
lvoradata
jfs2
/oradata
640-753 used
inner edge
lvoradata
jfs2
/oradata
754-754 used
inner edge
loglv01
jfs2log
N/A
755-799 free
inner edge
# varyoffvg esdbvg
在适宜的时间内,(关闭数据库后)将卷组关闭。
# chvg -Q y esdbvg
重新激活。
磁盘故障定位与处理
iostat 2
#查看磁盘是否工作良好,通常某个盘有问题,上面无I/O操作。
假如hdisk0怀疑有问题,进一步检查,发现是非工作状态(missing),说明有问题。
# lspv hdisk0
PHYSICAL VOLUME:
hdisk0
VOLUME GROUP:
rootvg
PV IDENTIFIER:
00c37a803b0ff3ae VG IDENTIFIER
00c37a8000004c00000001153bb03d9a
PV STATE:
missing
STALE PARTITIONS:
0
ALLOCATABLE:
yes
PP SIZE:
512 megabyte(s)
LOGICAL VOLUMES:
14
TOTAL PPs:
558 (285696 megabytes) VG
DESCRIPTORS: 2
FREE PPs:
100 (51200 megabytes)
HOT SPARE:
no
USED PPs:
458 (234496 megabytes) MAX
REQUEST:
256 kilobytes
FREE DISTRIBUTION:
72..00..00..07..21
USED DISTRIBUTION:
40..112..111..104..91
然后在SMITTY中查看OS日志,获得系统硬件错误信息。
# errpt -aj
EAA3D429 也可通过EAA3D429这个Error
Code来查。
将坏盘取走,放新盘。
cfgmgr
设备扫描
第四篇
集群篇
第12章
构建AIX下的Oracle集群环境
第13章
在AIX中管理Oracle集群环境