linux下oracle11G DG搭建(一):环境准备
环境
名称 |
主库 |
备库 |
主机名 |
bjsrv |
shsrv |
软件版本 |
RedHat Enterprise5.5、Oracle 11g 11.2.0.1 |
RedHat Enterprise5.5、Oracle 11g 11.2.0.1 |
导入虚拟机镜像(已安装oracle、已建库)
为主库和备库分别添加1块磁盘,大小为30g。
依实际需要进行设置host only或桥接,如下图:
操作步骤同上(略)。
略。
vi /etc/sysconfig/network //修改主机名
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=bjsrv
#hostname bjsrv //使主机名生效或重启系统
vi /etc/sysconfig/network //修改主机名
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=shsrv
#hostname shsrv //使主机名生效或重启系统
此处为显示格式习惯的设置,可不做修改。
#vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
.~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
#PS1=`whoami`@`hostname`':${PWD}> '
PS1='[\u@\h \w]\$'
export PS1
[root@bjsrv ~]#source.bash_profile
#vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
.~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
#PS1=`whoami`@`hostname`':${PWD}> '
PS1='[\u@\h \w]\$'
export PS1
[root@shsrv ~]#source.bash_profile
#vi /etc/hosts
#vi /etc/sysconfig/network-scripts/ifcfg-eth0 //修改IP地址
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.4.71
NETMASK=255.255.255.0
ONBOOT=yes
#service networkrestart
#vi /etc/hosts
#vi /etc/sysconfig/network-scripts/ifcfg-eth0 //修改IP地址
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.4.72
NETMASK=255.255.255.0
ONBOOT=yes
#service networkrestart
由于导入虚拟机中已安装好oracle,此处不进行安装。安装详见“oracle安装”文档,此步骤略。
[root@bjsrv ~]#cat /etc/oratab //验证库已经存在
注意:在主库安装oracle 软件和数据库,在备库只要安装oracle软件。
简介:
使用逻辑卷作为物理卷使用。
分别在bj和sh新创建一块30G的硬盘,创建逻辑卷,aix的逻辑卷必须是一整块磁盘,linux下可以是磁盘的一个分区,逻辑卷组就是把好几块物理卷整合在一起,逻辑卷就是从逻辑组分割出来各种大小的分区。(需修改)
目的:虚拟出4块磁盘
为磁盘分区,分一个主分区。然后再转换为逻辑卷。
[root@bjsrv ~]#fdisk –l //查看硬盘情况
[root@bjsrv ~]# fdisk /dev/sdb
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extrafunctionality (experts only)
Command (m forhelp): n
Command action
e extended
p primary partition (1-4) p
Partition number(1-4): 1
First cylinder(1-3916, default 1):
Using default value1
Last cylinder or+size or +sizeM or +sizeK (1-3916, default 3916):
Using default value3916
Command (m forhelp): p
Disk /dev/sdb: 32.2GB, 32212254720 bytes
255 heads, 63sectors/track, 3916 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 3916 31455238+ 83 Linux
Command (m forhelp): t //(change a partition'ssystem id)转换成逻辑卷格式
Selected partition 1
Hex code (type L tolist codes): L
8e Linux LVM
Hex code (type L tolist codes): 8e 创建逻辑卷格式
Changed system typeof partition 1 to 8e (Linux LVM)
Command (m forhelp): p
Disk /dev/sdb: 32.2GB, 32212254720 bytes
255 heads, 63sectors/track, 3916 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 3916 31455238+ 8e Linux LVM
//查看可知转换逻辑卷格式成功,接下来就是创建逻辑卷
Command (m for help): w //保存退出
创建物理卷(pv):
[root@bjsrv ~]# pvcreate /dev/sdb1 //把分区作为一个物理卷来使用
[root@bjsrv ~]#pvdisplay //显示物理卷信息
将物理卷加入卷组(vg):
[root@bjsrv ~]#vgcreate datavg /dev/sdb1 //创建卷组
//格式:vgcreate datavg /dev/sdb1
//说明:建立卷组 逻辑卷组名 物理卷
[root@bjsrv ~]#vgdisplay //查看卷组信息
在卷组下创建逻辑卷:
lvcreate [-n取名] [-L 指定大小]
参考图例:
操作:
# lvcreate-n lv_dsk1 -L 7g datavg
# lvcreate-n lv_dsk2 -L 7g datavg
# lvcreate-n lv_dsk3 -L 7g datavg
# lvcreate -n lv_dsk4 -L 8g datavg
//剩余一些空间给卷组头使用
# lvdisplay //查看逻辑卷信息
对逻辑卷进行格式化:
参考图例:
操作如下:
#mkfs.ext3 /dev/datavg/lv_dsk1
#mkfs.ext3 /dev/datavg/lv_dsk2
#mkfs.ext3 /dev/datavg/lv_dsk3
#mkfs.ext3 /dev/datavg/lv_dsk4
为虚拟出的4块磁盘建立目录:
#mkdir /dsk1
#mkdir /dsk2
#mkdir /dsk3
#mkdir /dsk4
设置自动挂载,即将上几步所创建的目录设置为开机自动挂载
#vi /etc/fstab 设置自动挂载
参考图例:
操作添加:
/dev/datavg/lv_dsk1 /dsk1 ext3 defaults 0 0
/dev/datavg/lv_dsk2 /dsk2 ext3 defaults 0 0
/dev/datavg/lv_dsk3 /dsk3 ext3 defaults 0 0
/dev/datavg/lv_dsk4 /dsk4 ext3 defaults 0 0
挂载四块磁盘:
#mount /dsk1
#mount /dsk2
#mount /dsk3
#mount /dsk4
# df–h //查看磁盘信息
把新建目录的所有者改为oracle,属组设为dba:
#chown -R oracle:dba /dsk1
#chown -R oracle:dba /dsk2
#chown -R oracle:dba /dsk3
#chown -R oracle:dba /dsk4
操作步骤参考“对bj磁盘操作”。
步骤(略)。
说明:完成对数据库的改造,与DG无关,是为了设置一个模拟环境。
$vi $ORACLE_HOME/sqlplus/admin/glogin.sql
修改
setsqlprompt ‘_user@ _connect_identifier>’
settermout on;
set timeon
set timingon
参考下图:
参考bj修改,略。
目的:模拟redo日志、datafile不在同一磁盘下。
SQL>startup; //启库
启库时报00845错误
查看告警日志:
$tail -f /u01/app/oracle/diag/rdbms/testdb12/TestDB12/alert/ log.xml
$df -h
内存超出了,需要修改初始化参数文件中的参数值:
SQL>create pfile fromspfile;
$vi$ORACLE_HOME/dbs/initTestDB12.ora;
对内存值进行修改,参考如下图:
SQL>create spfile from pfile;
SQL>startup;
补充结束
SQL>select name from v$controlfile; //查看控制文件位置
SQL>select member from v$logfile; //查看日志位置
SQL>select name from v$datafile; //查看数据文件位置
SQL>archive log list //查看归档模式,DG必须是归档模式
以上查询得知:
控制文件、日志文件、数据文件在同一目录下,且未开归档。于是下面就要根据查询出的结果对数据库进行改造,模拟一个较复杂的环境。
创建文件放置位置所需目录:
规划:
redo日志放在dsk1、dsk2下
归档日志放在dsk4下
$mkdir -p /dsk1/oradata/bj
$mkdir -p /dsk2/oradata/bj
$mkdir -p /dsk3/oradata/bj
$mkdir -p /dsk4/oradata/bj
$mkdir -p /dsk4/arch_bj
$mkdir -p /dsk1/oradata/sh
$mkdir -p /dsk2/oradata/sh
$mkdir -p /dsk3/oradata/sh
$mkdir -p /dsk4/oradata/sh
$mkdir -p /dsk4/arch_sh
补充:
查看告警日志
SQL>selectmember from v$logfile;
SQL> selectgroup#,status,bytes from v$log;
SQL>alterdatabase add logfile member
‘/dsk2/oradata/bj/redo01b.log’to group 1,
‘/dsk2/oradata/bj/redo02b.log’to group 2,
‘/dsk2/oradata/bj/redo03b.log’to group 3;
SQL> selectmember from v$logfile;
迁移redo日志:(需在mount下进行)
SQL>shutdownimmediate;
$ cp/u01/app/oracle/oradata/TestDB12/redo03.log /dsk1/oradata/bj/redo03a.log;
$ cp/u01/app/oracle/oradata/TestDB12/redo02.log /dsk1/oradata/bj/redo02a.log;
$ cp/u01/app/oracle/oradata/TestDB12/redo01.log /dsk1/oradata/bj/redo01a.log;
$ls/dsk1/oradata/bj
SQL>startupmount;
SQL>alterdatabase rename file
‘/u01/app/oracle/oradata/TestDB12/redo03.log’to ‘/dsk1/oradata/bj/redo03a.log’;
SQL>alterdatabase rename file
‘/u01/app/oracle/oradata/TestDB12/redo02.log’to ‘/dsk1/oradata/bj/redo02a.log’;
SQL>alterdatabase rename file
‘/u01/app/oracle/oradata/TestDB12/redo01.log’to ‘/dsk1/oradata/bj/redo01a.log’;
SQL>selectmember from v$logfile;
删除旧的redo日志文件:
$rm/u01/app/oracle/oradata/TestDB12/redo*;
$ls/u01/app/oracle/oradata/TestDB12/
至此,实现了日志文件与数据文件的目录分离(即模拟了文件不在同一个磁盘)。
SQL>alterdatabase archivelog;
SQL>showparameter archive
SQL>altersystem set log_archive_dest_1='location=/dsk4/arch_bj';
SQL>altersystem set log_archive_format='arch_%t_%s_%r.log' scope=spfile;
SQL>startupforce;
SQL>archivelog list;
强制“所有操作”都生成redo日志:
SQL>alterdatabase force logging;
SQL>selectname from v$archived_log; //再查看一下归档日志信息
********************未完待续**************************
声明:
原创作品,出自 “深蓝的blog” 博客,允许转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。
关于涉及版权事宜,作者有权追究法律责任。