用裸设备扩数据库表空间

合集下载

oracle数据库表空间扩容方法

oracle数据库表空间扩容方法

一、概述数据库管理是企业信息系统中极为重要的一环,而Oracle数据库作为业界优秀的关系型数据库管理系统,通常被广泛应用于企业级应用中。

在数据库管理中,表空间是一个很重要的概念,它用于管理数据库中的数据存储。

随着数据量的增加,表空间可能会出现空间不足的情况,因此扩容表空间变得至关重要。

本文将介绍几种扩容Oracle数据库表空间的方法。

二、从数据文件角度扩容表空间1. 增加数据文件当表空间中的数据文件即将满的时候,可以通过增加数据文件的方式来扩容表空间。

具体操作步骤如下:1) 在Oracle数据库中使用“alter tablespace 表空间名 add datafile 新数据文件名 size 新数据文件大小”命令来增加数据文件;2) 通过以上操作,可以为表空间增加数据文件,并使表空间的空间得到扩容。

2. 自动扩展在表空间创建的时候,可以选择启用自动扩展功能。

当表空间中的数据文件空间不足时,可以自动扩展表空间的空间大小。

具体操作步骤如下:1) 在创建表空间的时候,使用“autoextend on”选项来启用自动扩展功能;2) 当表空间中的数据文件空间不足时,系统会自动扩展表空间的空间大小。

三、从段角度扩容表空间1. 移动段移动段是一种有效的扩容表空间的方法。

通过移动段,可以将表或索引从原有的表空间移动到具有足够空间的表空间中,从而实现表空间的扩容。

具体操作步骤如下:1) 使用“alter table 表名 move tablespace 新表空间名”命令来将表移动到新的表空间;2) 使用“alter index 索引名 rebuild tablespace 新表空间名”命令来将索引移动到新的表空间。

2. 压缩段通过压缩段的方式,可以释放表空间中的空闲空间,从而实现表空间的扩容。

具体操作步骤如下:1) 使用“alter table 表名enable row movement”命令来启用行移动功能;2) 使用“alter table 表名shrink spacepact”命令来压缩表,释放表空间中的空闲空间。

linux下裸设备的使用

linux下裸设备的使用

linux下裸设备的使用一个裸设备(裸分区)只能有一个数据文件一个表空间可以有多个裸设备(裸分区)组成我的归纳1、裸设备定义:一块没有分区的硬盘,称为原始设备(RAW DEVICE)或者是一个分区,但是没有用EXT3,OCFS等文件系统格式化,称为原始分区(RAW PARTITION)以上两者都是裸设备2、裸设备的绑定有文件系统的分区是采用mount的方式挂载到某一个挂载点的(目录)而裸设备不能mount,只能绑定到/dev/raw/下的某一个设备名比如/dev/raw/raw13、裸设备的绑定方法有两种方法,这里介绍一种,另一种可以google搜索到修改/etc/sysconfig/rawdevices,添加以下内容,这里sdd1和sdd2是原始分区名或者原始设备(硬盘)名,raw1和raw2是/dev目录下的原始设备名,编号从raw1到raw255,也就是最多可以绑定255个裸设备/dev/raw/raw1 /dev/sdd1/dev/raw/raw2 /dev/sdd2然后修改裸设备的属主和访问权限chown oracle:dba /dev/raw/raw1chown oracle:dba /dev/raw/raw2chmod 660 /dev/raw/raw1chmod 660 /dev/raw/raw2最后使得裸设备生效,并且在机器启动的时候就自动加载执行/etc/init.d/rawdevices restart 使裸设备生效执行/sbin/chkconfig rawdevices on 保证机器启动的时候裸设备能够加载,这一步很重要4、裸设备的读写不能用cp等命令操作,写入内容用dd命令,可以参阅相关资料5、清空裸设备,相当于格式化啦bs是快的大小,block sizecount是快的数量,这两者相乘大于裸设备的容量即可dd if=/dev/zero of=/dev/raw/raw1 bs=8192 count=12800dd if=/dev/zero of=/dev/raw/raw2 bs=8192 count=12800-------另外rhel4使用udev来管理设备手动修改/dev/raw/raw1 不能永久生效要想使得权限持久生效需要修改文件/etc/udev/permissions.d/50-udev.permissions 的第113行raw/*:root:disk:0660改成raw/*racle:dba:0660重启机器如果/dev/下没有/raw/ 目录,可以自己手工建立。

db2表空间扩容

db2表空间扩容

db2表空间扩容DB2表空间扩容1 - Detect what tablespace has size issuesdb2 list tablespaces show detail2 - Check the percentage of use from the tablespacedb2 list tablespace containers for <tablespace_id> show detail3 - Calculating the size of free space neededNow you are able to calculate the percentage of use from the tablespace. To get this number, do (Used Pages / Useable Pages) * 100 and then with this percentage you can continue calculating how many pages you need to increase to obtain the acceptable amount of free pages.4 - Verifying the filesystem and the free spaceContinuing, now you should check the total amount of free space at the fileystem. Do this typingdf -k <tablespace.path>And you'll be able to verify if it's enough space to extend the tablespace. Remember you can check the page size in the output of "db2 list tablespaces show detail" command.5 - Extending the tablespaceFinally, after all checked, you can execute the command to extend the pages of that tablespace. Do this using:db2 "alter tablespace <tablespace_name> extend (all <page_numbers>)"This will extend the size of your tablespace. Be careful when using EXTEND ALL clause when the tablespace has more than one container; in cases where the tablespace has more than one container, divide the total number of pages you intent to increase by the number of total containers.Example:db2 alter "tablespace IBMDB2SAMPLEREL extend (all 1000)"Alternatively, if it's not possible to extend the actual containers, a possibility is to add new containers to the tablespace. For that, you should enter the following command:db2 "alter tablespace <tablespace_name> add (FILE '<new_container_file>' <size>)"Where size can be in pages (only using the numbers you want), in KBytes (using a K following the number), in MBytes (usinga M following the number) or in GBytes (using a G following the number). Also, please note to use single quotes around the name of the file you'll use as a new container.注意事项:(AIX)1、hacmp 单点控制的lv操作,有时候出问题,建议在A 机直接扩lv, 在hacmp 切换到B机 hacmp⾃动importvg 会把lv 信息更新的。

DB2如何调整表空间大小

DB2如何调整表空间大小

DB2如何调整表空间⼤⼩DB2如何调整表空间⼤⼩刚刚接到客户那边打的电话,程序⼀直报错,所有的业务都做不了,拷贝了⼀份应⽤服务器(weblogic)的⽇志,⽇志⾥显⽰:WARN : 2009-06-18 16:24:32,421: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: [ibm][db2][jcc][102][10040] ⾮⾃动批处理出现故障。

虽然已经提交了批处理,但是该批处理的某个成员⾄少发⽣了⼀个异常。

使⽤ getNextException() 来检索已经过批处理的特定元素的异常。

WARN : 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011ERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: Error for batch element #1: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKWARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:78}: Error for batch element #2: [ibm][db2][jcc][t4][1026][11339] 错误检查:WARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011ERROR: 2009-06-18 16:24:32,424: JDBCExceptionReporter[line:78}: Error for batch element #2: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKERROR: 2009-06-18 16:24:32,424: AbstractFlushingEventListener[line:301}: Could not synchronize database state with sessionorg.hibernate.exception.GenericJDBCException: Could not execute JDBC batch updateat org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)at mit(JDBCTransaction.java:106)at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:575)atorg.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662) at mit(AbstractPlatformTransactionManager.java:632)atmitTransactionAfterReturning(TransactionAspectSupport.java:314) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)at $Proxy803.saveApply(Unknown Source)at nct.mp.counterservice.service.CounterServiceService.applySave(CounterServiceService.java:135)at nct.mp.counterservice.ejbAction.ApplySaveEjbAction.perform(ApplySaveEjbAction.java:32)at com.lbs.sieaf.webcontroller.RequestProcessor.processRequest(RequestProcessor.java:245)at com.lbs.sieaf.webcontroller.MainServlet.doProcess(MainServlet.java:65)at com.lbs.sieaf.webcontroller.MainServlet.doPost(MainServlet.java:49)at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at com.lbs.sieaf.webcontroller.CSSaftyFilter.doFilter(CSSaftyFilter.java:167)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at nct.cp.webcontroller.EncodingFilter.doFilter(EncodingFilter.java:66)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)Caused by:com.ibm.db2.jcc.b.ni: [ibm][db2][jcc][102][10040] ⾮⾃动批处理出现故障。

裸设备总结(推荐)

裸设备总结(推荐)

Linux裸设备总结1、什么裸设备?字符设备?块设备?裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。

裸设备可以绑定一个分区,也可以绑定一个磁盘。

字符设备:对字符设备的读写不需要通过OS的buffer。

它不可被文件系统mount。

块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。

2、一个系统可以有多少个裸设备?这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux 4下做多可以绑定8192个裸设备。

但是在linux下,最多只能有255个分区,所以,如果用裸设备绑定分区,最多只能绑定255个裸设备。

如果是用lvm,则没有这个限制。

3、Linux下单个磁盘最多可以有多少个分区?15个。

3个主分区+ 1个扩展分区+ 11个逻辑分区。

建议的分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。

注意,裸设备不要绑定在扩展分区上。

4、linux下是否需要绑定裸设备?unix呢?linux下如果需要使用裸设备,则需要手工进行绑定。

unix下则不用。

因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。

而Linux中rawio的则实现了一套非绑定(unbound)的裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev /rawct用来把他们绑定到块设备上。

所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。

5、linux如何绑定裸设备?两种方式:1)命令绑定raw /dev/raw/raw[n] /dev/xxx其中n的范围是0-8191。

raw目录不存在可以创建。

执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件用命令方式绑定裸设备在系统重启后会失效。

数据库表空间不足引发的故障处理方法

数据库表空间不足引发的故障处理方法

数据库表空间不足引发的故障处理方法在数据库管理中,表空间的重要性不言而喻。

表空间是用来存储数据库中表和索引的地方,当表空间不足时,会导致数据库无法正常运行,影响业务运行和数据的完整性。

因此,及时处理表空间不足的问题至关重要。

本文将分享如何处理数据库表空间不足所引发的故障,以确保数据库的稳定运行。

一、了解表空间的概念和特性在处理表空间不足的问题之前,首先需要了解表空间的概念和特性。

表空间是由一个或多个数据文件组成的逻辑存储单元,用于存放数据库中的表、索引和其他对象。

每个表空间都有一个固定大小,根据数据库管理系统的不同,表空间的大小可以灵活调整。

表空间的管理是数据库管理员的重要任务之一,合理规划和管理表空间,可以提高数据库的性能和可靠性。

因此,在进行故障处理之前,确保对表空间有深入了解,掌握表空间的特性和基本管理方法是必不可少的。

二、监控表空间的使用情况及时了解表空间的使用情况是处理表空间不足问题的关键。

数据库管理员应该定期监控表空间的使用情况,通过数据库管理工具或查询系统视图来获取相关信息。

查询表空间的使用情况可以使用如下SQL语句:```SELECT tablespace_name, sum(bytes)/(1024*1024) AS "Total Size(MB)",sum(bytes)/(1024*1024) - sum(free_space)/(1024*1024) AS "Used Size(MB)",sum(free_space)/(1024*1024) AS "Free Size(MB)" FROM dba_free_spaceGROUP BY tablespace_name;```该语句可以列出所有表空间的总大小、已使用大小和空闲大小。

通过监控表空间的使用情况,可以及时发现空间不足的问题,避免出现故障。

三、释放不再使用的空间在监控表空间使用情况的基础上,如果发现某个表空间空间不足,应及时采取措施释放不再使用的空间。

oracle扩展表空间的三种方法

oracle扩展表空间的三种方法

oracle扩展表空间的三种方法在Oracle数据库中,扩展表空间是一种常见的管理数据库空间的操作。

当表空间的容量不足时,需要扩展表空间以满足数据库的需求。

以下将介绍三种常见的Oracle扩展表空间的方法。

1.增加数据文件增加数据文件是扩展表空间最直接和常见的方法。

数据文件是Oracle数据库中存储数据的基本单位,通过增加数据文件可以扩展表空间的容量。

以下是增加数据文件的步骤:步骤1:选择要扩展的表空间使用如下语句选择要扩展的表空间:```sqlSELECT tablespace_name FROM dba_tablespaces;```步骤2:创建数据文件使用如下语句创建数据文件:```sqlALTER TABLESPACE tablespace_name ADD DATAFILE 'file_name' SIZE size [AUTOEXTEND ON NEXT size NEXT size ...];```其中,tablespace_name是要扩展的表空间名称,file_name是新数据文件的名称,size是数据文件初始大小。

AUTOEXTEND关键字用于设置数据文件的自动增长。

可以通过NEXT关键字设置数据文件的自动增长的大小。

2.增加临时表空间临时表空间用于存储排序、连接和其他需要临时存储空间的操作。

当临时表空间的空间不足时,需要扩展临时表空间。

以下是增加临时表空间的步骤:步骤1:选择要扩展的临时表空间使用如下语句选择要扩展的临时表空间:```sqlSELECT tablespace_name FROM dba_temp_files;```步骤2:创建临时文件使用如下语句创建临时文件:```sqlALTER TABLESPACE tablespace_name ADD TEMPFILE 'file_name' SIZE size [AUTOEXTEND ON NEXT size NEXT size ...];```其中,tablespace_name是要扩展的临时表空间名称,file_name是新临时文件的名称,size是临时文件初始大小。

裸设备和文件系统

裸设备和文件系统

dd 测试文件系统肯定会比raw设备快,因为文件系统有缓冲区而raw没有,正因为如此raw设备对数据库而言性能不会比文件系统慢。
首先,如果数据库使用文件系统的话1个IO写操作需要这么一个过程:
IO write==>;database buffer==>;file system buffer ==>;array controller cache==>;hard disk
文件系统一方面是为了管理方便,另外一方面是为了最大的调度io资源.
当使用了文件系统以后会有很多好处,虽然多了ቤተ መጻሕፍቲ ባይዱ层处理,但是同样也多了很多裸设备所没有的好处,比如有自己的预读写机制,自己的缓存机制,这样也可能导致了很多时候文件系统的使用效率比裸设备好
数据库用raw设备,只是可靠性比文件系统高一些而已,并不是io次数少。
而且确实用文件系统有数据不一致的风险,虽然很多高级文件系统都有自己的日志,但这仍是一种风险。
这种情况我们也遇到过
情况是这样的:
如果你先把裸设备格式化好了,然后用dd对这这个裸设备或者文件系统测试,如果测试的的时候选择的block大小和文件系统在格式化这个裸设备时候所默认的block大小之间没有严格的比例关系就会出现这个问题.
是因为裸设备已经备格式化成了一个个block,如果用dd对这裸设备写的时候不按照文件系统block大小或者文件系统block大小的倍数写的话,那很可能就造成了文件系统block浪费,比如dd的时候用的大小是4098,比文件系统的4096多了2b,但是这2b对于已经格式话好的文件系统来说就又占用了一个新的4096的block,也就是对着文件系统写了2个block,这样算下来对这裸设备写可能要比对这文件系统写要慢.

在oracle数据库dataguard两端扩大表空间时可能出现的问题及原因探究

在oracle数据库dataguard两端扩大表空间时可能出现的问题及原因探究

在oracle数据库dataguard两端扩⼤表空间时可能出现的问题及原因探究REGION LNFO 数字地⽅我单位使⽤两台⼩机做成集群,操作系统是AIX5.3,数据库使⽤ORACLE10.2.0.3,数据⽂件采⽤裸设备,这两台⼩机和另⼀处灾备机房的⼀台⼩机组成dataguard。

DataGuard是⼀种数据库级别的HA⽅案,最主要功能是冗灾、数据保护、故障恢复等。

DataGuard是⽣产数据库的“事务⼀致性拷备”,创建时,使⽤⽣产库的物理拷备。

创建完成后,备库会通过⽣产库传输过来的归档⽇志(或重做条⽬)⾃动维护备⽤数据库。

将重做数据应⽤到备⽤库。

随着单位业务的增长,其中⼀个重要的业务表空间使⽤率已经⼤于了90%,在下班后决定扩⼤⼀下这个表空间,⾸先在primary端进⾏操作,先查看/dev下都使⽤了哪些数据⽂件,再查看vg和pv可以使⽤的空间,这些准备⼯作都就绪以后就开始⽤裸设备来创建逻辑卷mklv -t raw -y db_BSEMR_10-U oracle -G oinstall oradatavg 80 hdisk2,因为pps size是256MB,所以就是新建了⼀个20G的逻辑卷,SQL>alter tablespace PORTAL_EMR add datafile '/dev/rdb_BSEMR_10',后查询表空间SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files groupby tablespace_name,发现表空间已经扩⼤了20G,利⽤率也下降到80%,primary端的⼯作已经完成,下⾯在standby端进⾏操作,⾸先也是查看/dev下都使⽤了哪些数据⽂件,再查看vg和pv可以使⽤的空间,这些准备⼯作都就绪以后就开始⽤裸设备来创建逻辑卷mklv-t raw -y db_BSEMR_10 -U oracle -G oinstall dgvg 80hdisk8,根据dataguard的特性,不需要像primary端那样执⾏SQL> alter tablespace PORTAL_EMR add datafile '/dev/rdb_BSEMR_10',可以把standby的数据库打开⼀次,datafile就会⾃动应⽤,但在执⾏sql>alter databaserecover managed standby database cancel;时报错,ORA-在oracle数据库dataguard两端扩⼤表空间时可能出现的问题及原因探究◆⽩清⽟ 肖津安 吴 华摘要:在oracle数据库dataguard两端扩⼤表空间由于忽略了操作顺序⽽导致报错,通过⽇志找到报错的⽂件后⼿动创建,系统恢复正常。

oracle数据库表空间扩容步骤

oracle数据库表空间扩容步骤

oracle数据库表空间扩容步骤扩容Oracle数据库表空间的步骤如下:1. 检查表空间的当前使用情况:使用以下查询语句可以查看表空间的当前使用情况。

```SELECTtablespace_name,round((1 - (sum(bytes) / (maxbytes))) * 100, 2)"Used_percentage"FROMdba_data_filesGROUP BYtablespace_name,maxbytes;```2. 确定需要扩容的表空间:根据查询结果,确定需要扩容的表空间。

3. 确定扩容的方式:有两种扩容方式,分别是自动扩容和手动扩容。

- 自动扩容:在表空间的数据文件达到其最大容量时,Oracle 会自动增加数据文件的大小。

如果使用自动扩容方式,需要确认表空间的自动扩容设置是否已开启。

- 手动扩容:手动扩容需要手动添加一个新的数据文件到表空间中。

4. 自动扩容:如果使用自动扩容方式,可以通过以下命令检查自动扩容设置是否已开启。

```SELECTautoextensibleFROMdba_data_filesWHEREtablespace_name = '<表空间名称>';```如果自动扩容设置为“YES”,则表示已开启自动扩容。

如果自动扩容设置为“NO”,则需要使用手动扩容方式。

5. 手动扩容:如果使用手动扩容方式,可以通过以下命令向表空间添加一个新的数据文件。

```ALTER TABLESPACE <表空间名称> ADD DATAFILE '<数据文件路径>' SIZE <新数据文件大小>;```其中,<表空间名称>是需要扩容的表空间的名称,<数据文件路径>是新的数据文件的路径,<新数据文件大小>是新的数据文件的大小。

6. 检查扩容结果:可以使用之前的查询语句再次检查表空间的使用情况,确认扩容是否成功。

ORACLE扩表空间的方法

ORACLE扩表空间的方法

oracle扩展表空间的常用方法监控表空间的使用是DBA的日常工作之一,Oracle扩展表空间很简单,一般有扩展某个数据文件大小或增加新的数据文件两种办法。

举例说明如下。

首先我们要获取某个表空间的数据文件信息:select file_name,file_id,tablespace_name,bytes/1024/1024 fromdba_data_filesorder by file_name根据file_id扩展某个数据文件大小:alter database datafile 12 resize 13312m;要注意的是,如果使用裸设备,一般要先查看LV是否足够,否则以上扩展命令可能出错,查看方式如下:查看VG信息:ERPDB1@/home/oracle>lsvgrootvgoraclevg查看VG的LV:ERPDB1@/home/oracle>lsvg -l oraclevgoraclevg:LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINTdb_oravote raw 1 1 1 closed/syncd N/Adb_oraocr raw 1 1 1 closed/syncd N/Adb_system raw 3 3 1 open/syncd N/Adb_sysaux raw 5 5 1 open/syncd N/Adb_undotbs1 raw 3 3 1 open/syncd N/Adb_undotbs2 raw 3 3 1 open/syncd N/Adb_temp raw 46 46 1 closed/syncd N/Adb_erp_ht2 raw 56 56 1 open/syncd N/Adb_erp2 raw 72 72 1 open/syncd N/A查看VG的详细信息:ERPDB1@/home/oracle>lsvg oraclevgVOLUME GROUP: oraclevg VGIDENTIFIER: 00c65fbf00004c000000011697e0f5f9VG STATE: active PP SIZE: 256 megabyte(s)VG PERMISSION: read/write TOTAL PPs: 2328 (595968 megabytes)MAX LVs: 512 FREE PPs: 1146 (293376 megabytes)LVs: 57 USED PPs: 1182 (302592 megabytes)OPEN LVs: 39 QUORUM: 5 TOTAL PVs: 8 VG DESCRIPTORS: 8STALE PVs: 0 STALE PPs: 0 ACTIVE PVs: 8 AUTO ON: no Concurrent: Enhanced-Capable Auto-Concurrent: DisabledVG Mode: ConcurrentNode ID: 1 Active Nodes:MAX PPs per VG: 130048MAX PPs per PV: 1016 MAX PVs: 128LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: noHOT SPARE: no BBPOLICY: relocatable这里可见还有1146个可用的pp ,根据pp size能计算出VG的容量。

什么叫做裸设备

什么叫做裸设备

6.能够使用一个磁盘的第一个分区作为裸设备吗?
可以,但是不推荐。在Unix的比较旧的版本是银行,磁盘的第一个分区常常包含这个磁盘的一些信息,以及逻辑卷的一些控制信息。若这些部分被裸设备覆盖的话,磁盘就会变得不可识别,导致系统崩溃。
较新的Unix版本不会发生这样的情况,因为它们采用了更复杂的技术来管理磁盘,逻辑卷的一些信息。
3.使用裸设备的好处
因为使用裸设备避免了再经过Unix操作系统这一层,数据直接从Disk到Oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。当然,这是以磁盘的 I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。
2.如何辨别裸设备?
在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件。
字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块设备特殊文件用来同外设进行定长的包传输。字符特殊文件与外设进行I/o操作时每次只传输一个字符。而对于块设备特殊文件来说,它用了cache机制,在外设和内存之间一次可以传送一整块数据。裸设备使用字符特殊文件。在/dev 目录下,你可以看到许多这样的文件。
裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。
1.什么叫做裸设备?
裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。

oracle 表空间自动扩容原理

oracle 表空间自动扩容原理

文章标题:探秘Oracle表空间自动扩容的原理和机制一、引言在Oracle数据库管理中,表空间是非常重要的概念之一。

表空间的使用和管理直接关系到数据库的性能和稳定性。

而表空间的自动扩容功能更是为数据库管理员省去了不少麻烦。

本文将从深度和广度两个方面,探讨Oracle表空间自动扩容的原理和机制。

二、表空间自动扩容的概念和作用1. 什么是表空间自动扩容表空间自动扩容是指当表空间中的数据文件空间不足时,Oracle数据库会自动增加表空间的大小,以容纳更多的数据。

2. 表空间自动扩容的作用表空间自动扩容的作用在于,保证数据库能够持续存储和管理数据,避免因为空间不足而导致数据库服务中断或性能下降。

三、表空间自动扩容的原理和机制1. 自动扩容的触发条件当表空间中的剩余空间不足时,Oracle会根据事先设置的参数自动触发表空间的自动扩容功能。

这些参数包括MAXSIZE、NEXT、AUTOEXTENSIBLE等。

2. 自动扩容的具体实现当自动扩容被触发后,Oracle会自动增加表空间的大小,并且可以通过动态数据文件调整表空间大小,以便满足数据存储需求。

这一过程中,Oracle会记录相关的日志和告警信息,方便管理员进行监控和管理。

四、个人观点和理解表空间自动扩容是Oracle数据库管理中非常重要的一个功能,它可以避免因为空间不足而导致的数据库服务中断或性能下降,提高了数据库的稳定性和可靠性。

在实际应用中,管理员需要合理设置表空间的自动扩容参数,以适应不同的业务需求和数据增长趋势。

总结本文从深度和广度两个方面对Oracle表空间自动扩容的原理和机制进行了全面探讨。

通过对自动扩容的概念、作用和具体实现进行了详细阐述,并结合个人观点和理解,希望能够帮助读者更全面、深刻和灵活地了解表空间自动扩容的重要性和实际应用。

至此,文章写作完成,希望能够满足您的需求。

一、引言表空间自动扩容是Oracle数据库管理中一个非常重要的功能,它可以保证数据库的持续存储和管理数据,避免因空间不足而导致数据库服务中断或性能下降。

OracleRAC--在Linux中创建裸设备

OracleRAC--在Linux中创建裸设备

OracleRAC--在Linux中创建裸设备Oracle RAC--在Linux中创建裸设备裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Linux通过文件系统来读取的特殊块设备文件。

它是不被操作系统直接管理的设备,是通过字符方式访问的设备,这种设备少了操作系统这一层,I/O效率更高。

不少数据库都能通过使用裸设备作为存储介质来提高I/O效率。

缺点就是不容易被管理。

一:先对磁盘分区[root@ENMOEDU ~]# fdisk /dev/sdb #对磁盘/dev/sdb 分区Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent won't be recoverable.The number of cylinders for this disk is set to 2610.There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n #n 就代表分区Command actione extendedp primary partition (1-4)p #p 表示选择主分区,Partition number (1-4): 1 #主分区的个数1First cylinder (1-2610, default 1): 1 # 默认从第一个柱面开始Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610):Using default value 2610Command (m for help): w #写进磁盘,使分区生效,The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.二:创建裸设备方法1:目前最常用的方法[*******************]#cd/etc/udev/rules.d#配置裸设备的目录[root@ENMOEDU rules.d]# vi 60-raw.rules #它里面有例子,两种配置方法,在里面添加下面红色部分(也就是选择的第二种)[*******************]#cat60-raw.rules# Enter raw device bindings here.## An example would be:# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"# to bind /dev/raw/raw1 to /dev/sda, or# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"# to bind /dev/raw/raw2 to the device with major 8, minor 1.ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"方法2:以前红帽4版本用的的方法[*******************]#raw/dev/raw/raw1/dev/sdb1#绑定后生成一个文件/dev/raw/raw1 记录绑定的信息.如果不想要直接删除这个文件就行了重启都就失效/dev/raw/raw1: bound to major 8, minor 17[root@rac2 ~]#vi /etc/sysconfig/rawdevices --编辑文件,建立映射重启之后也能保留住raw的信息/dev/raw/raw1 /dev/sdb1[*******************]#raw-qa#查询裸设备/dev/raw/raw1: bound to major 8, minor 17[*******************]#ls-qlt/dev/raw/raw1crw------- 1 root root 162, 1 Aug 28 20:32 /dev/raw/raw1三:裸设备的使用可以直接在把Oracle数据库的表空间建立在裸设备上,来提高读写速度。

oracle中的裸设备指的是什么

oracle中的裸设备指的是什么

裸设备就是绕过文件系统直接访问的储存空间1.什么叫做裸设备?裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。

它由应用程序负责对它进行读写操作。

不经过文件系统的缓冲。

2.如何辨别裸设备?在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件。

字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块设备特殊文件用来同外设进行定长的包传输。

字符特殊文件与外设进行I/o操作时每次只传输一个字符。

而对于块设备特殊文件来说,它用了cache机制,在外设和内存之间一次可以传送一整块数据。

裸设备使用字符特殊文件。

在/dev 目录下,你可以看到许多这样的文件。

3.使用裸设备的好处因为使用裸设备避免了再经过Unix操作系统这一层,数据直接从Disk到Oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。

当然,这是以磁盘的I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。

如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。

而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于Unix维护文件系统的开销也都没有了,比如不用再维护I-node,空闲块等,这也能够导致性能的提高。

4.如何决定是否应该使用裸设备?判断是否使用裸设备要从以下方面进行考虑:首先,数据库系统本身需要已经被比较好的经过了优化。

优化是一门很有些技术的话题,很难简单地讲述。

其次,使用Unix命令来辨别是否存在磁盘读写瓶颈。

比如Unix的vmstat, sar 等命令都可以较好的进行鉴别。

如果决定采用裸设备,需要磁盘上还有空闲的分区。

否则,就要新添磁盘,或者对原有系统重新规划。

5.什么系统必须使用裸设备?如果使用了Oracle 并行服务器选项,则必须采用裸设备来存放所有的数据文件,控制文件,重做日志文件。

DB2表空间类型

DB2表空间类型

DB2表空间类型DB2 表空间类型在介绍如何将数据库管理表空间转换为⾃动存储表空间之前,我们先来回顾⼀下 DB2 表空间的各种类型以及各⾃的特点。

系统管理表空间 (System-Managed Space,SMS):这种类型的表空间由操作系统的⽂件管理系统分配和管理空间。

在 DB2 V9 之前,SMS 表空间是默认选项,如果不带任何选项创建数据库或表空间,数据库管理器会⾃动将表空间建成系统管理表空间。

创建 SMS 时,可以指定多个路径做为表空间的容器,空间的⼤⼩随数据量的变化由数据库管理器⾃动调整。

这种类型的表空间⽐较便于管理,但空间⼤⼩受到⼀定限制,性能在⼤多数情况下不如数据库管理表空间。

数据库管理的空间 (Database-Managed Space,DMS):这种表空间由 DB2 数据库管理器负责管理存储空间。

表空间容器可使⽤⽂件系统或裸设备。

在定义 DMS 表空间时,可以指定多个⽂件名以及每个⽂件的⼤⼩,数据库管理器建⽴并使⽤这些⽂件作为表空间容器。

表空间⼤⼩在创建时确定,空间不够时要⼿⼯添加容器,对于以⽂件作为容器的表空间可以指定 AUTORESIZE,从⽽在容器空间不够时由数据库管理器⾃动增加容器⼤⼩。

这种表空间性能⽐较好,但需要在维护容器⽅⾯花费⼀些⼯作量。

DMS 在需要经常关注和调整底层容器分配的场合有很⼤的灵活性。

⾃动存储表空间 (Automatic Storage Spaces):⾃动存储看起来是⼀种不同类型的表空间,但实际上是 DMS 和 SMS 的扩展。

因为数据库管理的空间 DMS 需要⽐较多的维护,在 DB2 V8.2.2 中引⼊了 DMS ⾃动存储,以简化表空间管理。

这种类型的表空间既保持了 DMS 的⾼性能⼜具有 SMS 表空间易于管理的特点,可以⼤⼤简化 DBA 的管理⼯作。

⾃动存储需要⾸先在数据库级别启⽤,在 DB2 V9 以后,⾃动存储已经成为了 DB2 的默认设置,在建⽴数据库时,DBA 可以提供⼀组路径,在建⽴表空间时,数据库管理器会在这些提供的路径中建⽴需要的容器,容器的⼤⼩根据情况由数据库管理器负责分配和管理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主题思想:物理卷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×P SIZE=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而是其他用户,那么需要
#chown oracle:dab rlvdata03* //要根据实际情况修改,千万小心
三、添加表空间我们可以登录数据库了,使用有创建或修改表空间权限的用户登录数据库(有多种方法),我们以sqlplus为例:
#su -oracle
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.5.0 - Production on Mon Aug 22 12:49:55 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL>;conn /as sysdba
Connected.
SQL>;alter tablespace ts_index add datafile
2 …/dev/rlvdata0318‟ size 4090;//size 是4090而不是4096,如果4096全部使用的话,容易出错
SQL>; T ablespace altered
可以反复以上操作,完成其它裸设备的添加,从而达到表空间扩充的目的。

但是如果以上13个逻辑卷还不能满足扩充需求,那么可以继续以下步骤
四、#lsvg datavg09 //查看卷组信息和使用情况,看是否还有足够的空间
VOLUME GROUP: datavg09 VG IDENTIFIER: 0037de1d00004c000000010
5cd3b6816
VG STATE: active PP SIZE: 64 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 2605 (166720 megabytes) MAX LVs: 256 FREE PPs: 557 (35648 megabytes)
LVs: 32 USED PPs: 2048 (131072 megabytes)
OPEN LVs: 16 QUORUM: 3
TOTAL PVs: 5 VG DESCRIPTORS: 5
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 5 AUTO ON: no
MAX PPs per PV: 1016 MAX PVs: 32
LTG size: 128 kilobyte(s) AUTO SYNC: no
HOT SPARE: no
显示信息可以看到,该卷组目前还有35648M空间供使用,则可以进行如下操作(lsvg -p vgName显示物理卷):
#mklv -y 'lvdata0331' -S 64k -t 'raw' datavg09 64 hdiskX0 hdiskX1
说明:在卷组datavg09上创建逻辑卷lvdata0331,逻辑卷的类型是raw,stripe(条带化) size 为64k,逻辑卷的lps是64
逻辑卷大小太大对会影响数据库性能,所以不宜创建过大的裸设备。

然后进行前面的…三‟节
但是如果当前所有的卷组都已使用完,没有可以用来添加裸设备的卷组,那么还要,创建卷组。

五、创建卷组
在创建之前,我们首先看一下有没有可用的物理卷
#lspv
vpath53 000b273dbe31ff50 datavg03
vpath54 000b273dbe320138 datavg03
vpath55 000b273dbe320303 datavg03
vpath56 000b273dbe320795 None
vpath57 000b273dbe320a46 None
vpath58 000b273dbe320c29 None
可以看到vpath56、vpath57、vpath58、还没有被卷组使用。

由于当前环境的存储提供是磁盘阵列,所以vpath 是在阵列上指定了大小的,在小型机系统认到的所谓的“物理卷”(其实真正的物理卷,应该是hdisk)。

#mkvg -f -y'datavg04' -s'64' '-n' vpath56 vpath57 vpath58
说明:用vpath56 vpath57 vpath58 创建卷组datavg04,并且物理分区大小是64M
卷组创建好后,重复前面的步骤即可完成。

相关文档
最新文档