一、环境介绍
redhat 7.4 + Oracle 12.2.0.1 +rac +ASM
二、为了方便对归档文件进行管理,客户要求将Oracle rac归档文件放到本地文件系统
2.1.从存储上映射两块磁盘作为rac两节点的存放归档文件的文件系统
这里/dev/sdg为节点1,/dev/sdh为节点2存放归档的文件系统:
Disk /dev/sdg: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
Disk /dev/sdh: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
[root@or12c01 backup]#
2.2.各节点格式化并挂载文件系统
节点1:
# mkfs.etx4 /dev/sdg
节点2:
# mkfs.etx4 /dev/sdh
节点1 mount文件系统:
mount /dev/sdg /u03
节点2 mount文件系统:
mount /dev/sdh /u03
设置开机自动挂载:
UUID=265a1d12-b2cd-4461-bb39-33dd65777099 /u03 ext4 _netdev 0 0
节点2:
UUID=dcffe53e-fe66-4f96-9269-df9687dd3c47 /u03 ext4 _netdev 0 0
2.3.创建归档目录
节点1:
mkdir -p /u03/arch ---用于节点1的归档日志存放地
mkdir -p /u03/arch2 ---用于挂载节点2的归档存放地
节点2:
mkdir -p /u03/arch ---用于节点2的归档日志存放地
mkdir -p /u03/arch1 ---用于挂载节点1的归档存放地
2.4.启动各节点的nfs服务并设置开机启动
[root@or12c02 u03]# systemctl enable nfs.service
[root@or12c02 u03]#
[root@or12c02 u03]# systemctl status nfs.service
[root@or12c02 u03]# systemctl restart nfs.service
[root@or12c02 u03]#
[root@or12c02 u03]# systemctl status nfs.service
节点1同上
2.5.配置/etc/exports文件
节点1;
[root@or12c01 backup]# cat /etc/exports
/u03/arch or12c02(rw,async,no_root_squash)
说明:
/u02/arch 为归档文件存放地
or12c02 为节点2的主机名
() 括号里面为相关的权限配置
节点2:
[oracle@or12c02 backup]$ cat /etc/exports
/u03/arch or12c01(rw,async,no_root_squash)
节点1:
[root@or12c01 backup]# showmount -e 192.168.127.61
Export list for 192.168.127.61:
/u03/arch or12c02
[root@or12c01 backup]#
可以看到节点1已成功将/u03/arch 目录共享给了节点2
[root@or12c01 backup]# showmount -e 192.168.127.63
Export list for 192.168.127.63:
/u03/arch or12c01
[root@or12c01 backup]#
同样也可以看到节点2将/u03/arch目录共享给了节点1
2.6.配置各节点挂载对端目录
# mount -t nfs -o rw,bg,hard,nointr,rsize=2048,wsize=2048,timeo=300,actimeo=0 or12c02:/u03/arch /u03/arch2 ---将节点2的归档路径共享给节点1
# mount -t nfs -o rw,bg,hard,nointr,rsize=2048,wsize=2048,timeo=300,actimeo=0 or12c01:/u03/arch /u03/arch1 ---同理,将节点2的归档目录/u01/arch共享给节点1,并挂载到节点1的/u03/arch1
2.7.将Oracle归档路径改为/u03/arch
SQL> alter system set log_archive_dest_1='location=/u03/arch';
SQL> alter system set log_archive_dest_1='location=/u03/arch';
查看数据库的归档路径:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u03/arch
Oldest online log sequence 76
Next log sequence to archive 78
Current log sequence 78
SQL>
三、使用本地文件系统存放归档时Oracle的备份
3.1.创建备份片存放路径(两节点都要创建且路径完全一致)
两节点都要执行:
# mkidr -p /u02/backup
# chown -R oracle:oinstall /u02
# chmod -R 775 /u02
3.2.配置两节点的tnsname.ora文件
看节点2的配置:
[root@or12c02 arch]# vim /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora
OR12C2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.127.63)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = or12c)
)
)
OR12C1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.127.61)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = or12c)
)
)
看节点1的配置:
OR12C1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.127.61)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = or12c)
)
)
OR12C2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.127.63)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = or12c)
)
)
3.3.rman全库备份
登录rman:
[oracle@or12c01 backup]$ rman target /
执行备份:
run{
allocate channel c1 type disk connect sys/oracle@or12c1 maxpiecesize 5G;
allocate channel c2 type disk connect sys/oracle@or12c2 maxpiecesize 5G;
crosscheck backupset;
crosscheck archivelog all;
delete expired archivelog all;
DELETE NOPROMPT EXPIRED BACKUPSET;
sql 'alter system archive log current ';
BACKUP AS COMPRESSED BACKUPSET SKIP INACCESSIBLE TAG hot_db_bk_level0 FORMAT '/u02/backup/bk_%s_%p_%t' FULL DATABASE;
sql 'alter system archive log current ';
sql 'alter system archive log current ';
sql 'alter system archive log current ';
backup archivelog all format '/u02/backup/arc_%t_%s';
backup current controlfile format '/u02/backup/cntrl_%s_%p_%s';
crosscheck archivelog all;
release channel c1;
release channel c2;
}
此时,备份的文件分为两部分。一部分是由通道1生成,在节点1上;另一部分是由通道2生成,在节点2上。只有将两节点的备份文件加起来,才算是完整的备份信息!
有个奇怪的地方:每次执行:alter system archive log current时,对面节点的归档既可能存在本节点,也可能存在对方节点!!