linux下一个oracle11G DG建立(一个):准备环境
周围环境
名称 |
主库 |
备库 |
主机名 |
bjsrv |
shsrv |
软件版本号 |
RedHat Enterprise5.5、Oracle 11g 11.2.0.1 |
RedHat Enterprise5.5、Oracle 11g 11.2.0.1 |
一.环境准备:
1.vbox
导入虚拟机镜像(已安装oracle、已建库)
1、导入虚拟机(主库-北京,下面简称bj)
2、导入虚拟机(备库-上海,下面简称sh)
3、主库、备库分别加入一块磁盘
为主库和备库分别加入1块磁盘,大小为30g。
(1)、bj加入磁盘。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
(2)、bj网卡设置
依实际须要进行设置host only或桥接,例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
(3)、sh加入磁盘、网卡设置
操作步骤同上(略)。
2.主机
1、rootpassword
(1)、改动bj的rootpassword
(2)、改动sh的rootpassword
略。
2、主机名
(1)、改动bj下主机名
vi /etc/sysconfig/network //改动主机名
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=bjsrv
#hostname bjsrv //使主机名生效或重新启动系统
(2)、改动sh下主机名
vi /etc/sysconfig/network //改动主机名
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=shsrv
#hostname shsrv //使主机名生效或重新启动系统
3、.bash_profile
此处为显示格式习惯的设置。可不做改动。
(1)、改动bj的.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@bjsrv ~]#source.bash_profile
(2)、改动sh的.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
4、网络配置
(1)、改动bj网络配置
#vi /etc/hosts
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
#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
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
(2)、改动sh网络配置
#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
3.安装数据库
因为导入虚拟机中已安装好oracle,此处不进行安装。安装详见“oracle安装”文档,此步骤略。
[root@bjsrv ~]#cat /etc/oratab
//验证库已经存在
注意:在主库安装oracle
软件和数据库,在备库仅仅要安装oracle软件。
4.磁盘
简单介绍:
使用逻辑卷作为物理卷使用。
分别在bj和sh新创建一块30G的硬盘,创建逻辑卷,aix的逻辑卷必须是一整块磁盘,linux下能够是磁盘的一个分区,逻辑卷组就是把好几块物理卷整合在一起,逻辑卷就是从逻辑组切割出来各种大小的分区。(需改动)
目的:虚拟出4块磁盘
1.对bj加入磁盘操作
1、分区→逻辑卷
为磁盘分区,分一个主分区。
然后再转换为逻辑卷。
[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):
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 //保存退出
2、创建物理卷
创建物理卷(pv):
[root@bjsrv ~]# pvcreate /dev/sdb1 //把分区作为一个物理卷来使用
[root@bjsrv ~]#pvdisplay
//显示物理卷信息
3、建立卷组
将物理卷增加卷组(vg):
[root@bjsrv ~]#vgcreate datavg /dev/sdb1 //创建卷组
//格式:vgcreate datavg /dev/sdb1
//说明:建立卷组 逻辑卷组名 物理卷
[root@bjsrv ~]#vgdisplay
//查看卷组信息
4、创建逻辑卷
在卷组下创建逻辑卷:
lvcreate [-n取名] [-L 指定大小]
參考图例:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
操作:
# 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 //查看逻辑卷信息
5、格式化逻辑卷
对逻辑卷进行格式化:
參考图例:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
操作例如以下:
#mkfs.ext3 /dev/datavg/lv_dsk1
#mkfs.ext3 /dev/datavg/lv_dsk2
#mkfs.ext3 /dev/datavg/lv_dsk3
#mkfs.ext3 /dev/datavg/lv_dsk4
6、建虚拟磁盘文件夹
为虚拟出的4块磁盘建立文件夹:
#mkdir /dsk1
#mkdir /dsk2
#mkdir /dsk3
#mkdir /dsk4
7、自己主动挂载
设置自己主动挂载,即将上几步所创建的文件夹设置为开机自己主动挂载
#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
//查看磁盘信息
8、赋权
把新建文件夹的全部者改为oracle。属组设为dba:
#chown -R oracle:dba /dsk1
#chown -R oracle:dba /dsk2
#chown -R oracle:dba /dsk3
#chown -R oracle:dba /dsk4
2.对sh加入磁盘操作
操作步骤參考“对bj磁盘操作”。
步骤(略)。
5.改造数据库
说明:完毕对数据库的改造,与DG无关。是为了设置一个模拟环境。
1、改动显示方式
bj改动
$vi $ORACLE_HOME/sqlplus/admin/glogin.sql
改动
setsqlprompt ‘_user@ _connect_identifier>’
settermout on;
set timeon
set timingon
參考下图:
sh改动
參考bj改动,略。
2、改造文件位置
目的:模拟redo日志、datafile不在同一磁盘下。
SQL>startup;
//启库
【补充】:报MEMORY_TARGETnot supported on this system
启库时报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;
//查看日志位置
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
SQL>select name from v$datafile; //查看数据文件位置
SQL>archive log list
//查看归档模式。DG必须是归档模式
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
以上查询得知:
控制文件、日志文件、数据文件在同一文件夹下,且未开归档。于是以下就要依据查询出的结果对数据库进行改造。模拟一个较复杂的环境。
创建文件放置位置所需文件夹:
规划:
redo日志放在dsk1、dsk2下
归档日志放在dsk4下
1、创建文件夹
bj创建文件夹
$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
sh创建文件夹
$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
补充:
查看告警日志
2、改造redo日志位置(bj)
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;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YW5sb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
删除旧的redo日志文件:
$rm/u01/app/oracle/oradata/TestDB12/redo*;
$ls/u01/app/oracle/oradata/TestDB12/
至此,实现了日志文件与数据文件的文件夹分离(即模拟了文件不在同一个磁盘)。
3、设置归档(bj)
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;
4、所有操作均生成redo设置(bj)
强制“全部操作”都生成redo日志:
SQL>alterdatabase force logging;
SQL>selectname from v$archived_log;
//再查看一下归档日志信息
********************未完待续**************************
声明:
原创作品。出自 “深蓝的blog” 博客,同意转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。
关于涉及版权问题。在追究法律责任的权利。
版权声明:本文博客原创文章,博客,未经同意,不得转载。