在AIX环境为Oracle表空间增加裸设备 下载本文

内容发布更新时间 : 2024/5/6 0:15:23星期一 下面是文章的全部内容请认真阅读。

在AIX环境为Oracle表空间增加裸设备(逻辑卷)

当执行插入等操作时出现错误提示“unable to extand table ……” ,则说明该表所在表空间空间不足了。

如果是在winserver下则为表空间增加文件即可(本文不做介绍)。 本文主要介绍数据库服务器环境为AIX时,如何为表空间增加裸设备。 这里 包含AIX系统存储管理的基本介绍; AIX通过三个层次对存储进行管理:物理卷(PV)、卷组(GV),逻辑卷(LV); 数据库空间不足了就需要给表空间增加裸设备(逻辑卷),在sqlplus中通过alter命令将LV增加给表空间;

大体分为以下几步: 1、查看可用卷组

在AIX命令行中执行:

#lsvg – o //查看所有可用卷组 2、查看卷组中的逻辑卷 在AIX命令行中执行: lsvg –l datavg03

其中datavg03为1中查看到某卷组名称,管理人员希望将此卷组分配给数据库使用。

返回结果中STATE MOUNT列表名了逻辑卷的占用状态,open/syncd表示已被表空间占用,closed/syncd表示未使用

3、查看逻辑卷容量大小 在AIX命令行中执行: #lslv lvdata0315

其中lvdata0315为2中查看到的某未分配逻辑卷,在分配给表空间之前需要先确定它的容量。

容量大小为LPs×PPSIZE

4、将未使用的逻辑卷加入表空间 在sqlplus中以sysdba执行:

SQL>alter tablespace tablespacename add datafile ‘/dev/rlvdata0318’ size 4090

注意:将上句中/dev/rlvdata0318替换成2中查到未占用的逻辑卷名称,将该逻卷名称前加“/dev/r”;

逻辑卷名称注意大小写

size指示的大小应略小于3中计算逻辑卷大小 5、查看是否添加成功 在sqlplus中执行:

select t1.name , t2.name from system.v$tablespace t1,system.v$datafile t2 where t1.ts#=t2.ts# ;

返回结果包含两列:表空间名、文件名;如果结果中某行包含了4中操作的表空间及4中增加的逻辑卷名,那就说明增加成功了。

如果是创建新的表空间,操作也类似。这里只记录一个遇到的问题。 执行创建表空间的ddl语句,则报错:

ORA-01119: error in creating database file '/dev/r****' ORA-27041: unable to open file IBM AIX RISC System/6000 Error: 13: Permission denied Additional information: 11

如果你确信裸设备路径没有写错的话,那可能是由于裸设备的属主没有赋予Oracle用户所引起的。

可在aix命令行中执行 #chown -R oracle:dba lvname 更改要添加到表空间的裸设备的属主,其中lvname为裸设备名称。

如果使用的oracle RAC,那么创建了用裸设备创建了表空间,建立了表,在查询新表有时成功有时失败,失败时提示:

ORA-01157: cannot identify/lock data file [number] - see DBWR trace file

ORA-01110: data file [number]:\

这可能是由于没有在RAC中的所有节点上配置裸设备属主引起的。 解决方式,telnet到所哟节点,然后执行命令 #chown -R oracle:dba lvname AIX用裸设备扩数据库表空间专题

AIXCLUB大哥的经典文章,看这个AIX裸设备这块基本差不多了!AIX的裸设备跟LINUX有些不一样,建立完LV会在/dev/下生成跟LV名称前加R的文件,它就是LV的裸设备文件。

硬件环境:小型机 IBM P670,存储:IBM SHARK F-20 软件环境:操作系统 AIX5.1 数据库Oracle9i

主题思想:物理卷PV->卷组VG->逻辑卷LV(类型:raw)->添加表空间 操作过程: 一、 首先

#lsvg – o //查看所有可用卷组 datavg03 datavg02 datavg01 datavg00 rootvg

二、 然后对用来专为数据库准备的卷组进行如下操作: #lsvg –l datavg03 datavg09:

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT lvdata0316 raw 64 64 1 open/syncd N/A lvdata0317 raw 64 64 1 open/syncd N/A lvdata0318 raw 64 64 1 closed/syncd N/A lvdata0319 raw 64 64 1 closed/syncd N/A lvdata0320 raw 64 64 1 closed/syncd N/A lvdata0321 raw 64 64 1 closed/syncd N/A lvdata0322 raw 64 64 1 closed/syncd N/A

lvdata0323 raw 64 64 1 closed/syncd N/A lvdata0324 raw 64 64 1 closed/syncd N/A lvdata0325 raw 64 64 1 closed/syncd N/A lvdata0326 raw 64 64 1 closed/syncd N/A lvdata0327 raw 64 64 1 closed/syncd N/A lvdata0328 raw 64 64 1 closed/syncd N/A lvdata0329 raw 64 64 1 closed/syncd N/A lvdata0330 raw 64 64 1 closed/syncd N/A

由显示可知:该卷组还有13个逻辑卷(裸设备)未被使用(如果在显示结果中没有closed/syncd状态的逻辑卷,可进入第3步)但如何知道这13个逻辑卷有多大容量呢,可以机使用如下命令:

#lslv lvdata0315

LOGICAL VOLUME: lvdata0309 VOLUME GROUP: datavg09

LV IDENTIFIER: 0037de1d00004c0000000105cd3b6816.11 PERMISSION: read/write

VG STATE: active/complete LV STATE: opened/syncd TYPE: raw WRITE VERIFY: off

MAX LPs: 512 PP SIZE: 64 megabyte(s) COPIES: 1 SCHED POLICY: parallel LPs: 64 PPs: 64

STALE PPs: 0 BB POLICY: relocatable INTER-POLICY: minimum RELOCATABLE: yes INTRA-POLICY: middle UPPER BOUND: 32 MOUNT POINT: N/A LABEL: None

MIRROR WRITE CONSISTENCY: on/ACTIVE EACH LP COPY ON A SEPARATE PV ?: yes

可看到物理分区大小为64M,由于在同一卷组当中,所以可以知道所有物理分区大小都是64M,从lsvg - l datavg09的显示结果可看到,PPs:LPs=1:1所以,每个逻辑卷的大小是:LPs×PPSIZE=64*64M=4096M=4G,进而可知 还有13个4G的逻辑卷,未被使用。

但到此还不能完全保证就可以使用这13个逻辑卷对数据库的表空间进行扩充,因为我们还不知到这些裸设备的属主,所以还需要如下步骤:

#cd /dev

# ls –l rlvdata03* //显示以rlvdata03开头的文件属性 crw-rw---- 1 oracle dba 58, 20 Aug 22 11:33 rlvdata0318 crw-rw---- 1 oracle dba 58, 21 Aug 22 11:35 rlvdata0319 crw-rw---- 1 oracle dba 58, 22 Aug 22 11:37 rlvdata0320 crw-rw---- 1 oracle dba 58, 23 Aug 22 12:35 rlvdata0321 crw-rw---- 1 oracle dba 58, 24 Aug 22 12:37 rlvdata0322 crw-rw---- 1 oracle dba 58, 25 Aug 22 12:39 rlvdata0323 crw-rw---- 1 oracle dba 58, 26 Aug 22 12:39 rlvdata0324 crw-rw---- 1 oracle dba 58, 27 Aug 19 16:14 rlvdata0325

从查询结果可知,裸设备的属主已经是oracle了,oracle可以添加这些裸设备了,但如果裸设备的属主不是oracle而是其他用户,那么需要