oracle redo log 大小裸设备 redo 设置多大

磁盘管理、存储系统、RAID(109)
windows操作系统(160)
Oracle存储结构及管理(表空间)(125)
oracle安装升级与卸载(75)
oracle SQL语句优化调优(193)
linux操作系统(125)
oracle系统性能优化及管理(173)
Oracle数据库基本管理(336)
裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件(裸设备使用特殊文件????)。由应用程序(非文件系统相关进程)负责对它进行读写操作。不经过文件系统的缓冲。它是不被操作系统直接管理的设备(因为不由文件系统相关进程负责对它进行读写操作)。
这种设备少了操作系统这一层,I/O效率更高。不少数据库都能通过使用裸设备作为存储介质来提高I/O效率。
而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于Unix维护文件系统的开销也都没有了,比如不用再维护I-node,空闲块等,这也能够帮助提高性能。
在Unix的/dev 目录下,有许多文件,其中有两个大类:文件和文件。
特殊文件进行I/O操作不经过操作系统的缓冲区,而特殊文件用来同进行定长的包传输。
字符特殊文件与进行I/o操作时每次只传输一个字符。而对于特殊文件来说,它用了cache机制,在和内存之间一次可以传送一整块数据。
裸设备使用特殊文件。在/dev 目录下,你可以看到许多这样的文件。
因为使用裸设备避免了再经过Unix操作系统这一层,数据直接从Disk到Oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高的性能。当然,这是以的
I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。
而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于Unix维护文件系统的开销也都没有了,比如不用再维护I-node,空闲块等,这也能够帮助提高性能。
判断是否使用裸设备要从以下方面进行考虑:
首先,本身需要已经被比较好的经过了优化。优化是一门很有些技术的话题,很难简单地讲述。
其次,使用Unix命令来辨别是否存在磁盘读写瓶颈。比如Unix的vmstat, sar 等命令都可以较好的进行鉴别。如果决定采用裸设备,需要磁盘上还有空闲的分区。否则,就要新添磁盘,或者对原有系统重新规划。
如果使用了Oracle 并行服务器选项,则必须采用裸设备来存放所有的数据文件,,重做日志文件。只有把这些文件放到裸设备上,才能保证所有Oracle 实例都可以读取这个数据库的文件。这是由Unix操作系统的特性决定的。
还有一种情况是,如果你想使用异步I/O,那么在有些Unix上也必须采用裸设备。这个需要参考具体Unix的相关文档。
应该由root来创建裸设备,然后再分配给Oracle用户以供使用。同时还要把它归入Oracle用户所在的那个组里边(通常都是DBA)。
在创建数据文件时指定裸设备和普通文件没有什么太大的区别,一样都是在单引号里边写上裸设备的详细就可以了。举一个例子:要在创建一个,使用两个裸设备,每个分别为30M的大小,Oracle块的大小为4K,可以用下面的命令:
CREATE TABLESPACE RAW_TS
DATAFILE '/dev/raw1' size 30712k
DATAFILE '/dev/raw2' size 30712k;
在裸设备上,不能使用Unix实用程序来进行备份,唯一的办法是使用最基本的Unix命令:DD来进行备份。比如:dd if=/dev/raw1 of=/dev/rmt0 bs=16k。dd的具体语法可以参考unix手册,或者在线帮助。你也可以先用dd把裸设备上的数据文件备份到上,然后再利用Unix实用程序进一步处理。
把联机重做日志文件(online redo log)放到裸设备上是一个极好的选择。联机重做日志文件是写操作非常频繁的文件,放到裸设备上非常合适。如果你使用了并行服务器选项,那么联机重做日志文件必须放到裸设备上面。 但是归档日志文件必须放到常规的Unix文件系统上面,或者直接放到磁带上面去。在提高数据读写的速度和性能方法还有其他的途径, 使用RAID()也是非常有效的办法,尤其实那种读写非常频繁的系统。
对Oracle 进行优化,并且购买更多的磁盘和磁盘控制器,来分散I/O到不同的磁盘上也是比较有效的一种方法。
要注意的是,在Oracle中,一旦使用了裸设备,tablespace就不能设定为auto_extend,因为在裸设备中不支持文件大小的自动扩展,因此如果数据文件快要写完的时候,请手动在裸设备上添加数据库文件以完成扩容的目的。
裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件(裸设备使用特殊文件????)。
裸设备使用特殊文件。
即使裸设备使用特殊文件,那么该特殊文件里调用的应该是块设备的驱动程序吧,可以随机存取,只是字符特殊文件与进行I/o操作时每次只传输一个字符。???
参考:/view/3080056.htm
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2657491次
积分:25902
积分:25902
排名:第185名
原创:355篇
转载:1189篇
评论:63条
(2)(1)(12)(3)(25)(37)(9)(32)(19)(7)(5)(11)(26)(37)(29)(76)(26)(19)(41)(63)(76)(32)(33)(88)(41)(16)(25)(37)(73)(63)(92)(75)(120)(159)(55)(67)(13)(1)日志(23)
lsvg -l vg
1.在一个卷组上创建相关数据库文件的逻辑卷
& mklv -T O -y ctl1 vg1 30m
mklv -T O -y ctl2 vg1 30m
mklv -T O -y ctl3 vg1 30m
mklv -T O -y redo1 vg1 60m
mklv -T O -y redo2 vg1 60m
mklv -T O -y redo2 vg1 60m
mklv -T O -y sysaux01 vg1 300m
mklv -T O -y system01 vg1 600m
mklv -T O -y undotbs01 vg1 600m
mklv -T O -y user01 vg1 650m
mklv -T O -y example01 vg1 200m
mklv -T O -y temp01 vg1 400m
mklv -T O -y spfilepdb vg1 10m
mklv -T O -y pwdpdb vg1 10m
2.给这些裸设授权
& # chown oracle:oinstall /dev/rexample01
# chown oracle:oinstall /dev/ruser01
# chown oracle:oinstall /dev/temp*
# chown oracle:oinstall /dev/rundotbs01
# chown oracle:oinstall /dev/rredo*
# chown oracle:oinstall /dev/rctl*
# chown oracle:oinstall /dev/rspfilecan
# chown oracle:oinstall /dev/rpwdcan
# chmod 755 /dev/temp*
# chown oracle:oinstall /dev/rtemp*
3.编写rawconfig.txt
& system=/dev/rsystem01
sysaux=/dev/rsysaux01
example=/dev/rexample01
users=/dev/ruser01
temp=/dev/rtemp01
undotbs1=/dev/rundotbs01
redo1_1=/dev/rredo1
redo1_2=/dev/rredo2
redo1_3=/dev/rredo3
control1=/dev/rctl1
control2=/dev/rctl2
control3=/dev/rctl3
spfile=/dev/rspfilecan
pwdfile=/dev/rpwdcan
4.设置环境变量
5.安装数量库即可
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:110793次
积分:1825
积分:1825
排名:第17398名
原创:74篇
转载:14篇
评论:10条
(5)(1)(1)(1)(1)(1)(9)(1)(6)(6)(5)(7)(3)(4)(12)(26)(1)aix上使用裸设备安装oracle10g数据库
aix上使用裸设备安装oracle10g数据库一、检查系统信息[root@aix222 /]# oslevel -r5300-08[root@aix222 /]# prtconf | grep -i memMemory Size: 1904 MBGood Memory Size: 1904 MB&[root@aix22...
aix上使用裸设备安装oracle10g
一、检查信息
[root@aix222 /]# oslevel -r
[root@aix222 /]# prtconf | grep -i mem
Memory Size: 1904 MB
Good Memory Size: 1904 MB
[root@aix222 /]# lsattr -El mem0
goodsize 1904 Amount of usable physicalmemory in Mbytes False
1904 Total amount of physical memory in Mbytes
[root@aix222 /]# prtconf | more
Processor Implementation Mode: POWER 5
Processor Version: PV_5_2
Number Of Processors: 2
Processor Clock Speed: 1898 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 1 10-0884G
Memory Size: 1904 MB
Good Memory Size: 1904 MB
Platform Firmware level: SF240_382
Firmware Version: IBM,SF240_382
[root@aix222 /]# bootinfo -K
[root@aix222 /]# lsps &a
[root@aix222 /]# lsps &s
二、查看软件包和安装补丁
[root@aix222 /]# lslpp -l |grep bos.adt
[root@aix222 /]# lslpp -l |grep -i xlc.rte
[root@aix222 /]# lslpp -l |grep -i xlc
[root@aix222 /]# lslpp -l |grep -i bos.perf
Aix上的oracle10g需要下面的软件包
Bos.adt.base
Bos.adt.lib
Bos.adt.libm
Bos.pref.libperfstat
Bos.perf.perfstat
Bos.perf.proctools
Xlc.aix50.rte
下面查看补丁
[root@aix222 /]# instfix -ik IY58143
[root@aix222 /]# instfix -ik IY59386
[root@aix222 /]# instfix -ik IY60930
[root@aix222 /]# instfix -ik IY66513
[root@aix222 /]# instfix -ik IY70159
[root@aix222 /]# instfix -ik IY68989
三、配置系统参数
[root@aix222 /]# smit system
Change / Show Characteristics of OperatingSystem
=&Maximum number of PROCESSES allowed peruser
[root@aix222 /]# smit chaio
MINIMUM number of servers
MAXIMUM number of servers per cpu
maximum number of REQUESTS
server PRIORITY
STATE to be configured at systemrestart
State of fast path
四、建立用户组和用户
Groups:oinstall、dba
Users:oracle
使用smit来添加
五、配置oracle用户的.profile
[oracle@aix222 ~]$ vi .profile
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORACLE_SID=siqian
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
export EDITOR=vi
export DBCA_CONFIG=/home/oracle/raw_mp.txt
六、使用现有的vg创建lv
[root@aix222 /]# mklv -y 'system' -t 'raw' datavg3 32
这里的lp大小为32mb,也就是说system这个lv大小为1gb。
[root@aix222 /]# mklv -y 'sysaux' -t 'raw' datavg3 32
[root@aix222 /]# mklv -y 'users' -t 'raw' datavg3 16
[root@aix222 /]# mklv -y 'example' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'undotbs' -t 'raw' datavg3 16
[root@aix222 /]# mklv -y 'temp' -t 'raw' datavg3 10
[root@aix222 /]# mklv -y 'control01' -t 'raw' datavg3 2
[root@aix222 /]# mklv -y 'control02' -t 'raw' datavg3 2
[root@aix222 /]# mklv -y 'control03' -t 'raw' datavg3 2
[root@aix222 /]# mklv -y 'spfile' -t 'raw' datavg3 1
[root@aix222 /]# mklv -y 'redo01a' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'redo01b' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'redo02a' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'redo02b' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'redo03a' -t 'raw' datavg3 5
[root@aix222 /]# mklv -y 'redo03b' -t 'raw' datavg3 5
七、配置映射文件
[oracle@aix222 ~]$ vi raw_mp.txt
system=/u01/app/oracle/oradata/siqian/system01.dbf
sysaux=/u01/app/oracle/oradata/siqian/sysaux01.dbf
users=/u01/app/oracle/oradata/siqian/users01.dbf
example=/u01/app/oracle/oradata/siqian/example01.dbf
undotbs1=/u01/app/oracle/oradata/siqian/undotbs01.dbf
temp=/u01/app/oracle/oradata/siqian/temp01.dbf
control1=/u01/app/oracle/oradata/siqian/control01.ctl
control2=/u01/app/oracle/oradata/siqian/control02.ctl
control3=/u01/app/oracle/oradata/siqian/control03.ctl
redo1_1=/u01/app/oracle/oradata/siqian/redo01a.log
redo1_2=/u01/app/oracle/oradata/siqian/redo01b.log
redo2_1=/u01/app/oracle/oradata/siqian/redo02a.log
redo2_2=/u01/app/oracle/oradata/siqian/redo02b.log
redo3_1=/u01/app/oracle/oradata/siqian/redo03a.log
redo3_2=/u01/app/oracle/oradata/siqian/redo03b.log
spfile=/u01/app/oracle/oradata/siqian/spfilesiqian.ora
八、配置裸设置权限
在root下执行:
chown oracle:oinstall /dev/rsystem
chown oracle:oinstall /dev/rsysaux
chown oracle:oinstall /dev/rusers
chown oracle:oinstall /dev/rexample
chown oracle:oinstall /dev/rundotbs
chown oracle:oinstall /dev/rtemp
chown oracle:oinstall /dev/rcontrol01
chown oracle:oinstall /dev/rcontrol02
chown oracle:oinstall /dev/rcontrol03
chown oracle:oinstall /dev/rspfile
chown oracle:oinstall /dev/rredo01a
chown oracle:oinstall /dev/rredo01b
chown oracle:oinstall /dev/rredo02a
chown oracle:oinstall /dev/rredo02b
chown oracle:oinstall /dev/rredo03a
chown oracle:oinstall /dev/rredo03b
九、给裸设置创建链接(用r开头的设备)
ln -s /dev/rsystem /u01/app/oracle/oradata/siqian/system01.dbf
ln -s /dev/rsysaux/u01/app/oracle/oradata/siqian/sysaux01.dbf
ln -s /dev/rusers/u01/app/oracle/oradata/siqian/users01.dbf
ln -s /dev/rexample/u01/app/oracle/oradata/siqian/example01.dbf
ln -s /dev/rundotbs /u01/app/oracle/oradata/siqian/undotbs01.dbf
ln -s /dev/rtemp/u01/app/oracle/oradata/siqian/temp01.dbf
ln -s /dev/rcontrol01/u01/app/oracle/oradata/siqian/control01.ctl
ln -s /dev/rcontrol02/u01/app/oracle/oradata/siqian/control02.ctl
ln -s /dev/rcontrol03/u01/app/oracle/oradata/siqian/control03.ctl
ln -s /dev/rspfile/u01/app/oracle/oradata/siqian/spfilesiqian.ora
ln -s /dev/rredo01a/u01/app/oracle/oradata/siqian/redo01a.log
ln -s /dev/rredo01b/u01/app/oracle/oradata/siqian/redo01b.log
ln -s /dev/rredo02a/u01/app/oracle/oradata/siqian/redo02a.log
ln -s /dev/rredo02b/u01/app/oracle/oradata/siqian/redo02b.log
ln -s /dev/rredo03a/u01/app/oracle/oradata/siqian/redo03a.log
ln -s /dev/rredo03b/u01/app/oracle/oradata/siqian/redo03b.log
十、DBCA建库
其中加入两个参数:CONTROL_FILES和SPFILE,填入对应的数值,然后导入raw_mp.txt,建库。博客访问: 1743199
博文数量: 546
博客积分: 10716
博客等级: 上将
技术积分: 7001
注册时间:
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
一、关于裸设备 1.1 什么是裸设备(RAW DEVICE) 裸设备是指未创建文件系统的磁盘分区(raw partition)或逻辑卷(raw logical volume),应用程序直接通过一 个字符设备驱动程序对它进行访问。如何对设备上的数据读写决定于使用它的应用程序。由于对裸设备的操作不通过UNIX的缓冲区,数据在ORACLE的数据缓冲区(BUFFER CACHE)和磁盘之间直接传递,所以使用裸设备在一定程度上能够提高I/O性能,适合I/O量大的系统。另外OPS/RAC (Oracle Parallel Server/Real Application Cluster)环境下,多个节点同时访问同一个数据库,所以CONTROL FILE、DATA FILE、REDO LOG都必须建在RAW DEVICE上。 1.2 裸设备的可用空间 不同的UNIX对裸设备的管理不完全相同,特别要注意的是某些UNIX在每个裸设备的头部要保留一定的空间,应用程序在使用裸设备时不可以覆盖这一部分,否则会对裸设备造成损坏。所以一个裸设备的实际可用空间是分配给裸设备的空间再减去这部分操作系统保留空间。下面是常用UNIX的OS Reserved Size列表: UNIXOS Reserved Size ---------------------------- SUN Solaris& && && && &&&0 HP-UX& && && && && && && & 0 IBM AIX& && && && && && &&&4k Tru64 UNIX& && && && &&&64k Linux& && && && && && && && &0 1.3 dd命令 UNIX上读写裸设备不能使用cp, cpio, tar等命令,必须用dd,下面是几个dd常用参数的简单说明,更详细的信息请参考UNIX使用手册或用命令man dd。 dd [ operand=value ... ] if=file 指定输入文件,缺省值是标准输入 of=file 指定输出文件,缺省值是标准输出 bs=n 设置输入和输出的块大小为n字节,也可以用“k”作单位 skip=n 在拷贝之前跳过n个输入块,缺省值是0 seek=n 在拷贝之前从输出文件首部跳过n块,缺省值是0 count=n 指定拷贝的块数,缺省拷贝到输入文件结束 1.4 对本文中示例的说明 a. 所有例子中ORACLE的DB_BLOCK_SIZE都是8k b. /oradata是一文件系统目录 c. /dev/rlv_data,/dev/rlv_redo和/dev/rlv_ctrl是三个RAW DEVICE,大小均为8MB(8192k) d. 在未提到操作系统时,默认是AIX,OS_RESERVED_SIZE=4K 二、移动数据文件(DATAFILE) 2.1 在裸设备上建立数据文件 用以下命令建立表空间: SQL> CREATE TABLESPACE ts_test DATAFILE '/dev/rlv_data' SIZE 8180k; SIZE指定的数值必须小于或等于8180k,否则语句将会失败: ORA-01119: error in creating database file '/dev/rlv_data' ORA-27042: not enough space on raw partition to fullfill request 这个最大值的计算方法如下: 8192k(RAW DEVICE SIZE) - 4k (OS_RESERVED_SIZE) - 8k (DB_BLOCK_SIZE) = 8180k 为什么还要减去一个DB_BLOCK_SIZE呢?这是因为ORACLE建立DATAFILE时,在命令中SIZE指定的大小之外,还要在文件头另加一个BLOCK,叫作“Oracle OS Header Block”,里面保存有这个文件的逻辑块大小和文件块数等信息。这一点并不是在RAW DEVICE上建DATAFILE特有的,如果你在文件系统上建一个DATAFILE,指定SIZE 1000k的话,你用ls -l或dir命令看到的文件大小将是1008k (DB_BLOCK_SIZE=8K)。 2.2 在文件系统和裸设备之间移动数据文件 2.2.1 从文件系统到裸设备 a. 在文件系统上建一个4M的DATAFILE SQL> CREATE TABLESPACE test DATAFILE '/oradata/test.dbf' SIZE 4M; b. 查看一下这个新建的DATAFILE的大小 (注:4202496 = 4M + 8K) $ ls -l /oradata/test.dbf -rw-r----- 1 oracle dba 4202496 Aug 29 15:01 /oradata/test.dbf c. 按下表公式确定dd的参数 d. 在数据库没有OPEN的状态下,用dd进行拷贝,下面给出命令及输出 AIX$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=4k seek=1 1026+0 records in 1026+0 records out Tru64$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=64k seek=1 64+1 records in 64+1 records out Other$ dd if=/oradata/test.dbf of=/dev/rlv_data bs=1024k 4+1 records in 4+1 records out 2.2.2 从裸设备到文件系统 a. 确定数据文件实际大小file_size,用于下一步计算dd的参数count。如果count计算不对,拷贝出的数据文件无效,数据库无法打开。 SQL> SELECT bytes, blocks, bytes/blocks db_block_size, bytes+bytes/blocks file_size FROM dba_data_files WHERE file_name='/dev/rlv_data'; BYTESBLOCKSDB_BLOCK_SIZEFILE_SIZE ---------- -------- ------------- ---------
b. 按下表公式确定dd的参数,min表示二者之中取较小的 c. 在数据库没有OPEN的状态下,用dd进行拷贝,下面给出命令及输出 AIX$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=4k skip=1 count=1026 1026+0 records in 1026+0 records out Tru64$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=8k skip=8 count=513 513+0 records in 513+0 records out Other$ dd if=/dev/rlv_data of=/oradata/test2.dbf bs=8k count=513 513+0 records in 513+0 records out 2.2.3 无论从FILE SYSTEM拷贝到RAW DEVICE还是反之,想让ORACLE以新的数据文件打开数据库,必须进行RENAME操作 SQL> STARTUP MOUNT; SQL> ALTER DATABASE RENAME FILE 'oldfilename' TO 'newfilename'; SQL> ALTER DATABASE OPEN; 三、移动联机重作日志(ONLINE REDO LOG) 3.1 在裸设备上建ONLINE REDO LOG 用以下命令增加一组ONLINE REDO LOG: SQL> ALTER DATABASE ADD LOGFILE GROUP 4 '/dev/rlv_redo' SIZE 在裸设备上建REDO LOG时也要计算SIZE子句可使用的最大值,方法类似于在2.1中建DATAFILE时的计算方法,唯一不同的是要把公式中的DB_BLOCK_SIZE换成REDO_BLOCK_SIZE(即REDO LOG的逻辑块大小)。这个REDO_BLOCK_SIZE在不同操作系统上取值不同,用以下两种方法均可得到这个值,同时还可计算出REDO LOG的实际文件大小file_size): 方法1:dump现有的REDO LOG FILE SQL> ALTER SYSTEM DUMP LOGFILE '/oradata/redo01.log'; SQL> SHOW PARAMETER user_dump_dest 查看user_dump_dest目录下刚产生的trc文件: FILE HEADER: Software vsn=x8107000, Compatibility Vsn=x8106000 Db Id==0xc05af98e, Db Name='V817' Control Seq=ba, File size=0 File Number=5, Blksiz=512, File Type=2 LOG 方法2:用ORACLE提供的工具dbfsize,对文件系统和RAW DEVICE上的文件都适用 $ dbfsize /oradata/redo01.log Database file: /oradata/redo01.log Database file type: file system Database file size:
byte blocks 从以上两个输出都可得知REDO_BLOCK_SIZE=512,blocks=8192 file_size=(blocks + 1) * REDO_BLOCK_SIZE = (2=4194816 如果已知所在平台的REDO_BLOCK_SIZE,也可以通过查询数据字典来计算file_size: SQL> SELECT b.member, b.bytes, b.bytes+512 file_size FROM v$logfile a, v$log b WHERE a.group#=b.group# and a.member='/oradata/redo01.log '; MEMBERBYTES FILE_SIZE ------------------------------------- /oradata/redo01.log16 下表列出了常用OS上的ORACLE REDO_BLOCK_SIZE: OSREDO_BLOCK_SIZE ----------------- --------------- Windows512 SUN Solaris512 HP-UX1024 IBM AIX512 Compaq Tru64 UNIX1024 Linux512 3.2在文件系统和裸设备之间移动ONLINE REDO LOG 参见2.2拷贝DATAFILE的过程,唯一不同是要把DB_BLOCK_SIZE换成REDO_BLOCK_SIZE。另外,REDO LOG也可以不用dd进行拷贝,而采用删除重建的方法: SQL> SELECT * FROM v$ --be sure it's not current and archived SQL> ALTER SYSTEM SWITCH LOGFILE; --if it's current, force switch SQL> ALTER DATABASE DROP LOGFILE GROUP SQL> ALTER DATABASE ADD LOGFILE GROUP n 'newlogfilename' SIZE xxxxM; 四、移动控制文件(CONTROL FILE) 4.1在裸设备上建控制文件 ORACLE的控制文件是执行CREATE DATABASE或CREATE CONTROLFILE语句时生成的,其名字是由初始化参数文件init$ORACLE_SID.ora中的control_files参数指定。CONTROL FILE的大小不能显式指定,而且随着数据库的运行,它还会自动增长,所以为控制文件划分裸设备时要根据经验,留好足够的余量,以免不必要的麻烦。CONTROL FILE的逻辑块大小和DB_BLOCK_SIZE相同,而且文件头部也和DATAFILE一样有一块“Oracle OS Header Block”。 4.2在文件系统和裸设备之间移动控制文件 4.2.1 使用dd复制 拷贝CONTROL FILE的方法基本与2.2中拷贝DATAFILE相同,唯一不同是当由裸设备向文件系统拷贝时,如何确定CONTROL FILE的实际大小file_size (ORACLE数据字典里没有CONTROL FILE大小的数据)。下面介绍两个方法: 方法1:执行完下面的SQL语句,再到user_dump_dest目录查看刚产生的trc文件 SQL> ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 10'; FILE HEADER: Software vsn=x8100000, Compatibility Vsn=x8000000 Db Id==0x73751b47, Db Name='O817' Control Seq=ce, File size=476=0x1dc File Number=0, Blksiz=8192, File Type=1 CONTROL 方法2:用ORACLE提供的工具dbfsize $ dbfsize /oradata/control01.ctl Database file: /oradata/control01.ctl Database file type: file system Database file size: 476 8192 byte blocks 从以上两个方法的输出结果都可得到file_size=(476+1)* 4.2.2 使用SQL命令复制 相对于4.2.1介绍的用dd拷贝CONTROL FILE,下面用SQL语句进行复制的方法更为简洁: SQL> STARTUP MOUNT SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'newcontrolfile'; 语句中newcontrolfile既可以是文件系统文件,也可以是RAW DEVICE,所以在MOUNT状态下运行这个命令就可以生成一个与现有CONTROL FILE完全相同CONTROL FILE复件。 4.2.3 修改初始化参数文件(init$ORACLE_SID.ora) 无论用4.2.1还是4.2.2的方法产生了新的CONTROL FILE,为了让数据库使用新的CONTROL FILE,只要修改init$ORACLE_SID.ora里的control_files参数即可。 五、Recovery Manager (RMAN) RMAN是ORACLE8开始提供的备份与恢复工具,它能自动正确地跳过裸设备头部的OS Reserved Block,通过使用RMAN的BACKUP和RESTORE功能,可以方便地达到把DATAFILE和CONTROL FILE在文件系统和裸设备之间移动的目的,具体操作过程在这里不再详述,请参见RMAN手册。
阅读(1199) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 oracle redo log 大小 的文章

 

随机推荐