对oracle关键文件controlfile,redolog,archive实现双份方案,实现本地磁盘与共享存储上各一份,本地磁盘路径为/data
1. 挂载共享磁盘到/data
2. 依次创建archive,controlfile,redolog,rman_bak四个目录。
3. 配置归档冗余存放
4. 配置controlfile冗余存放
5. 配置redolog冗余存放
一、挂载iscsi共享磁盘
说明:本实例采用的是iscsi共享存储,采用的是openfiler来搭建,假定事先已经配置好一个共享磁盘如下。
也可以采用常见的nfs来实现。
(1) 准备iscsi客户端环境
iscsi target: 192.168.187.200
IQN: iqn.2006-01.com.openfiler:tsn.eca3da916592
# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.x86_64.rpm
# chkconfig --level 2345 iscsi on
# chkconfig --level 2345 iscsid on
# service iscsi start
# service iscsid start
(2) 挂载与分区
# iscsiadm --mode discovery --type sendtargets --portal 192.168.187.200
# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.eca3da916592 -p 192.168.187.200 -l
# fdisk -l
# fdisk /dev/sdb n p 1 w
# mkfs.ext3 /dev/sdb1
# mount /dev/sdb1 /data
(3) 查看磁盘的UUID
# tune2fs -l /dev/sdb1
tune2fs 1.39 (29-May-2006)
Filesystem volume name: data
Last mounted on: <not available>
Filesystem UUID: c160af38-3928-42c8-9155-ac05a1d20538
Filesystem magic number: 0xEF53
(4) 开机挂载共享磁盘
# cat /etc/fstab
...
UUID=6e04aed8-1ce7-4c80-ba58-4576ff32ae46 /data ext3 _netdev 0 0
说明:采用uuid挂载对于多target挂载时不会产口分区交错情况。
[root@dbtest data]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 6.0G 8.8G 41% /
/dev/sda1 99M 22M 73M 23% /boot
tmpfs 1006M 0 1006M 0% /dev/shm
/dev/sdb1 20G 354M 18G 2% /data
二、创建目录
在挂载的存储的分区上创建台下分区,用于存放冗余的oracled/data/archive 存放一份归档日志文件(归档本地磁盘一份,存储上一份)
/data/controlfile 存放一份控制文件(存储上一份)
/data/redolog 存放一份redolog文件(存储上一份)
/data/rman_bak 存放rman备份,包扩rman自动备份控制文件
(1) 创建目录
# mkdir -p /data/{archive,controlfile,redolog,rman_bak}
# chown -R oracle:oinstall /data/{archive,controlfile,redolog,rman_bak}
(2) 创建本地磁盘归档目录
# mkdir -p /u01/app/archive
# chown -R oracle:oinstall /u01/app/archive
用于本地存放归档日志文件
[root@dbtest data]# cd /data
[root@dbtest data]# ll
drwxr-xr-x 2 oracle oinstall 4096 03-06 21:49 archive
drwxr-xr-x 2 oracle oinstall 4096 03-06 20:43 controlfile
drwx------ 2 root root 16384 03-05 23:41 lost+found
drwxr-xr-x 2 oracle oinstall 4096 03-06 21:38 redolog
drwxr-xr-x 2 oracle oinstall 4096 03-06 21:38 rman_bak
三、数据库配置规档
# su - oracle
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> alter system set log_archive_dest_1='location=/u01/app/archive' scope=both;
SQL> alter system set log_archive_dest_2='location=/data/archive' scope=both;
SQL> show parameter archive;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string
log_archive_dest_1 string location=/u01/app/archive
log_archive_dest_10 string
log_archive_dest_2 string location=/data/archive
...
略
SQL> alter system switch logfile;
可以观察两个归档目录有相同的归档目志文件。
[root@dbtest data]# ll /u01/app/archive/
total 4048
-rw-r----- 1 oracle oinstall 1308160 Mar 6 20:30 1_7_777161447.dbf
[root@dbtest data]#
[root@dbtest data]#
[root@dbtest data]# ll /data/archive/
total 4048
-rw-r----- 1 oracle oinstall 1308160 Mar 6 20:30 1_7_777161447.dbf
[root@dbtest data]#
四、配置controlfile冗余配置
oracle控制文件默认三份都是一致的,任何一份出现问题,都可以通过其它文件替换掉,将其中一份存储在存储分区上,可以实现本地磁盘挂掉,控制文件还有一份存在。
当然控制文件也可以采用rman自动备份控制文件的方式还实现控制文件的最新备份。
(1) 关闭数据库,创建pfile文件
# su - oracle
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> create pfile from spfile;
SQL> shutdown immediate;
(2) 修改pfile文件,增加控制文件
$ vi /u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl','/data/controlfile/control04.ctl'
(3) 拷贝现在控制文件到存储上分区中
cp /u01/app/oracle/oradata/orcl/control01.ctl /data/controlfile/
cd /data/controlfile
mv control01.ctl control04.ctl
(4) 通过pfile启动oracle,并新创建spfile
startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';
create spfile from pfile;
shutdown immediate;
startup;
(5) 查看结果
查看方法一:
SQL> select name from v$controlfile;
NAME
----------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
/data/controlfile/control04.ctl
查看方法二:
SQL> show parameter control;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl, /data/controlfile/
control04.ctl
五、 配置redolog冗余存放
redolog的存在对oracle数据库的介质恢复起着重要的作用,默认状态下,redolog是只有三个组,每个组一个日志文件。本方案是将每个组中再增加一个日志文件,与原日志文件相互镜像,实现了redolog日志文件冗余设计。
# su - oracle
$ sqlplus /nolog
SQL> conn / as sysdba;
向原来redolog日志组各增加一个成员
SQL> alter database add logfile member '/data/redolog/redo01.log' to group 1;
SQL> alter database add logfile member '/data/redolog/redo02.log' to group 2;
SQL> alter database add logfile member '/data/redolog/redo03.log' to group 3;
SQL> set pagesize 999;
SQL> set linesize 200;
SQL> col MEMBER format a50
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO
1 INVALID ONLINE /data/redolog/redo01.log NO
2 INVALID ONLINE /data/redolog/redo02.log NO
3 INVALID ONLINE /data/redolog/redo03.log NO
6 rows selected.
切换三次日志文件,可以完成使redolog生效。
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO
1 ONLINE /data/redolog/redo01.log NO
2 ONLINE /data/redolog/redo02.log NO
3 ONLINE /data/redolog/redo03.log NO
6 rows selected.
结束,此文章转载而来,本人稍加调整,感谢原创的努力!