配置Oracle内存

配置Oracle内存
配置Oracle内存

对oracle的内存(SGA和PGA)进行调整,优化数据库性

一、示例:

SGA:

共享池:200MB

缓冲区高速缓存:24MB

大型池:9MB

Java池:32MB

SAG总容量:264.933

SAG的最大大小:305.069

PGA:

总记PGA目标:240MB

分配的当前PGA:8914KB

分配的最大PGA(自启动以来)9081KB

高速缓存命中百分比:100%

PGA和SGA的和应小于系统内存总量前去操作系统和其他应用程序所需内存后得到的值。

二、名词解释:

SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;

系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,

主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)

共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息

缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能

大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境

Java池:ava Pool为Java命令的语法分析提供服务

PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。

三、分析与调整:

1、系统全局域:

SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/2到1/3,当然,如果服务器上只有oracle的话,

可以分配的更大一些,如果还有其他服务,如IIS等,那就要分的小一些。

1、共享池:

修改共享池的大小,ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

查看共享SQL区的使用率:

select(sum(pins-reloads))/sum(pins) "Library cache" from

v$librarycache;--动态性能表

这个使用率应该在90%以上,否则需要增加共享池的大小。

查看数据字典缓冲区的使用率:

select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;--动态性能表

这个使用率也应该在90%以上,否则需要增加共享池的大小。

2、缓冲区高速缓存:

它的大小要根据数据量来决定:

SGA=((db_block_buffers * block

size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB 查看数据库数据缓冲区的使用情况:

SELECT name,value FROM v$sysstat order by name WHERE name IN(''DB BLOCK GETS'',''CONSISTENT GETS'',''PHYSICAL READS'');

计算出来数据缓冲区的使用命中率=1-(physical reads/(db block

gets+consistent gets)),这个命中率应该在90%以上,否则需要

增加数据缓冲区的大小。

select sum(pins) "请求存取数",sum(reloads) "不命中数

",sum(reloads)/sum(pins) from v$librarycache

其中,pins,显示在库高速缓存中执行的次数;reload,显示在执行阶段库高速缓存不命中的数目,一般 sum(reloads)/sum(pins)的

值应接近于零.如果大于1%就应该增加shared_pool_size的值, 来提高数据字典高速缓存可用的内存数量,减少不命中数.

通过动态性能表v$rowcache来查询数据字典高速缓存的活动:

select sum(gets) "请求存取数",sum(getmisses) "不命中数" from v$rowcache

其中,gets,显示请求相应项的总数; getmisses,显示造成高速缓存不命中的数据请求数.

Hit ratio与wait events:

select value from $pgastat where name =''cache hit percentage''

Hit ratio与wait events是此消彼涨,在执行类似于

select col1,col2,.. from tab1 a where exists (

select 1 from tab2 where a.col3 = b.col3

)

where ....

的语句的时候,如果tab1的记录很多的话,你会发现系统的hit ratio会有很大的提高,wait events是否会改观呢.

3、日志缓冲区

SELECT name, value FROM v$sysstat WHERE name IN (''redo entries'',''redo log space requests'')查看日志缓冲区的使用情况。

查询出的结果可以计算出日志缓冲区的申请失败率:

申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。

3、大型池:

可以减轻共享池的负担

可以为备份、恢复等操作来使用

不使用LRU算法来管理

其大小由数据库的‘共享模式/db模式’如果是共享模式的话,要分配的大一些指定Large Pool的大小,ALTER SYSTEM SET LARGE_POOL_SIZE=64M

3、Java池:

在安装和使用Java的情况下使用

如何估算PGA,SGA的大小,配置数据库服务器的内存

ORACLE给的建议是: OLTP系统 PGA=(Total Memory)*80%*20%。DSS系统PGA=(Total Memory)*80%*50%。

ORACLE建议一个数据库服务器,分80%的内存给数据库,20%的内存给操作系统,那怎么给一个数据库服务器配内存呢?

SQL> select * from v$pgastat;

NAME VALUE UNIT

---------------------------------------------------------------- ----------

------------

aggregate PGA target parameter 104857600 bytes

-----这个值等于参数PGA_AGGREGATE_TARGET的值,如果此值为0,表示禁用了PGA自动管理。

aggregate PGA auto target 75220992 bytes

-----表示PGA还能提供多少内存给自动运行模式,通常这个值接近

pga_aggregate_target-total pga inuse.

global memory bound 20971520 bytes

-----工作区执行的最大值,如果这个值小于1M,马上增加PGA大小

total PGA inuse 30167040 bytes

-----当前分配PGA的总大小,这个值有可能大于PGA,如果PGA设置太小.这个值接近select sum(pga_used_mem) from v$process.

total PGA allocated 52124672 bytes

-----工作区花费的总大小

maximum PGA allocated 67066880 bytes

total freeable PGA memory 0 bytes ----没有了空闲的PGA

process count 23 ----当前一个有23个process

max processes count 25

PGA memory freed back to OS 0 bytes

total PGA used for auto workareas 8891392 bytes

maximum PGA used for auto workareas 22263808 bytes

total PGA used for manual workareas 0 bytes ---为0自动管理

maximum PGA used for manual workareas 0 bytes ---为0

自动管理

over allocation count 0

如果PGA设置太小,导致PGA有时大于PGA_AGGREGATE_TARGET的值,此处为0,说明PGA 没有扩展大于TARGET的值,如果此值出现过,那么增加PGA大小。

bytes processed 124434432 bytes

extra bytes read/written 0 bytes

cache hit percentage 100 percent ---命中率为100%,如果太小增加PGA

recompute count (total) 6651

19 rows selected

SQL> select max(pga_used_mem)/1024/1024 M from v$process; ----当前一个process 消耗最大的内存

M

----------

9.12815189

SQL> select min(pga_used_mem)/1024/1024 M from v$process where pga_used_mem>0; ---process消耗最少内存

M

----------

0.19186878

SQL> select max(pga_used_mem)/1024/1024 M from v$process ; ----process曾经消耗的最大内存

M

----------

9.12815189

SQL> select sum(pga_used_mem)/1024/1024 from v$process; ----当前process一共消耗的PGA

SUM(PGA_USED_MEM)/1024/1024

---------------------------

28.8192501068115

如何设置PGA呢?我们可以在压力测试阶段,模拟一下系统的运行,然后运行

select (select sum(pga_used_mem)/1024/1024 from v$process) /(select count(*) from v$process) from dual;得到一个process大约占用了多少的内存,然后估算系统一共会有多少连接,比如一共有500个连接,

那么Sessions=1.1*process +5=500,那么processes=450,再乘以一个process需要消耗的内存,就能大约估算出PGA需要设置多大。

最好将PGA设置的值比计算出的值大一点,PGA值设定好后,就可以根据系统的性质,如果系统为OLTOP,那么总的内存可以设置为 PGA/0.16,最后也能估算出SGA的大小,建议还是多配点内存,反正便宜。

下面摘抄eygle的关于一个process能够分配的最大内存(串行操作)的规则:

10gR1之前,对于串行操作(非并行)一个process能够分配的最大的内存为

min(5%pga_aggregate_target,100m)

10gR2之后,对于串行操作(非并行)一个process能够分配的最大内存有如下规则:

如果pga_aggregate_target<=500m,那么最大的内存为20%*pga_aggregate_target.

如果500m

如果1000m2.5G,那么最大内存为2.5G.

SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ

2 FROM SYS.x$ksppi x, SYS.x$ksppcv y

3 WHERE x.inst_id = USERENV ('Instance')

4 AND y.inst_id = USERENV ('Instance')

5 AND x.indx = y.indx

6 AND x.ksppinm LIKE '%&par%'

7 /

NAME VALUE

DESCRIB

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

_smm_max_size 20480

maximum work area size in auto mode (serial)

SQL> show parameter pga

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 100M

此处我的一个process能够分配的最大内存为20M,因为我的PGA=100M,符合上面的规则。隐含参数_smm_max_size表示一个process能够分配最大的memory.

买了piner的《oracle高可用环境》一书,正好趁这段时间学习一下。

把看到的东西总结一下发表于此,今天先发第一章关于SGA与PGA的内容。

以后会陆续将总结在此发表,与大家共享。

SGA与PGA的结构如下图:

SGA:

查看SGA:

Sqlp> show sga

或 select * from v$sga;

Total System Global Area 289406976 bytes

Fixed Size 1248600 bytes

Variable Size 176161448 bytes

Database Buffers 109051904 bytes

Redo Buffers 2945024 bytes

Fixed Size:包括了数据库与实例的控制信息、状态信息、字典信息等,启动时就被固定在SGA中,不会改变。

Variable Size:包括了shard pool、large pool、java pool、stream pool、游标区和其他结构

Database Buffers:数据库中数据块缓冲的地方,是SGA中最大的地方,决定数据库性能Redo Buffers:提供REDO缓冲的地方,在OLAP中不需要太大

V$sgastat记录了SGA的一些统计信息

V$sga_dynamic_components 保存SGA中可以手动调整的区域的一些调整记录

Shard pool:

Shard_pool_size决定其大小,10g以后自动管理

Shard_pool中数据字典和控制区结构用户无法直接控制,与用户有关的只有sql缓冲区(library cache)。

将经常访问的过程或包用DBMS_SHARED_POOL.KEEP存储过程将该包pin在共享池中。

手工清除共享池的内容:alter system flush shard_pool;

共享池相关的几个常用的视图:

V$sqlarea 记录了所有sql的统计信息,包括执行次数、物理读、逻辑读、耗费时间等

V$sqltext_with_newline 完全显示sql语句,通过hash_value来标示语句,piece排序

V$sql_plan保存了sql的执行计划,通过工具查看

V$shared_pool_advice 对共享池的预测,可以做调整SGA的参考

Data buffer:

在OLTP系统中要求data buffer 的命中率在95%以上

select sum(pins) "execution",sum(pinhits) "hits",

((sum(pinhits)/sum(pins))*100) "pinhitration",

sum(reloads) "misses",((sum(pins)/(sum(pins)

+sum(reloads)))*100) "relhitratio"

from V$librarycache

PINS NUMBER Number of times a PIN was requested for objects of this namespace PINHITS NUMBER Number of times all of the metadata pieces of the library object were found in memory

RELOADS NUMBER Any PIN of an object that is not the first PIN performed since the

object handle was created, and which requires loading the object from disk

Oracle把从data buffer中获得的数据库叫cache hit,把从磁盘获得的脚cache miss

数据缓冲区中的数据块通过脏列表(dirty list)和LRU列表(LRU list)来管理。

Data buffer可细分为:default pool、keep pool、recycle pool对应的参数为db_cache_size、db_keep_cache_size 、db_recycle_size分别表示缓冲区大小

从9i开始oracle支持不同块大小的表空间,相应的可以为不同块大小的表空间指定不同块大小的数据缓冲区,不同块大小的数据缓冲区可以用相应的db_nk_cache_size来指定,其中 n可以是2、4、6、16或32

V$db_cache_advice 对数据缓冲区的预测,可以做调整data buffer的参考

V$bh、 x$bh记录了数据块在data buffer中缓冲的情况,通过这个视图可以找系统中的热点块。通过下面语句找系统中top 10 热点快所在的热点对象:

Select /*+ rule*/ owner,object_name from dba_objects

Where data_object_id in

(select obj from

(select obj from x$bh order by tch desc)

Where rownum<11);

PGA:

用来保存于用户进程相关的内存段。

从9i开始使用PGA自动管理,pga_aggregate_target参数指定session一共使用的最大PGA 内存的上限。 Workarea_size_policy参数用于开关PGA内存自动管理功能,auto/manual

在OLTP环境中,自动PGA 管理只要设置到一定的值,如2G左右就能满足系统的要求。

自动内存管理:

从9i开始,sga_max_size参数设置SGA 的内存大小,不能动态修改

从10g开始,指定了sga_target参数后,所有的SGA组件如:shared pool、 data buffer、large pool都不用手工指定了,Oracle会自动管理。这一特性就是自动共享内存管理ASMM。如果设置了sga_target=0,就自动关闭自动共享内存管理功能。Sga_target大小不能超过sga_max_size的大小。

手动管理SGA:

Alter system set sga_target=2000m;

Alter system set db_cache_size=1000m;

Alter system set shared_pool=200m;

Alter system set sga_target=0---------关闭自动共享内存管理ASMM

11G以后sga+pga整个内存可以自动管理AMM,相关参数

memory_max_target memory_target.设置好这两个参数后就不用关心SGA和PGA了11g手动内存管理:

Alter system set memory_target=3000m;

Alter system set sga_target=2000m;

Alter system set pga_aggregate_target=1000m;

Alter system set memory_target=0;---------关闭自动内存管理AMM

SGA+PGA最好不要超过总内存的70%

oracle实例内存解析

一、名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。 (3)缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。 (4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。 (5)Java池:Java Pool为Java命令的语法分析提供服务。 (6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。 二、分析与调整 (1)系统全局域: SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。 a.共享池Shared Pool: 查看共享池大小Sql代码 SQL>show parameter shared_pool_size 查看共享SQL区的使用率: Sql代码 select(sum(pins-reloads))/sum(pins)"Library cache"from v$librarycache; --动态性能表 LIBRARY命中率应该在90%以上,否则需要增加共享池的大小。

基于Oracle的OLTP与OLAP数据库优化差异之内存设计

基于Oracle的OLTP与OLAP数据库优化差异之内存设计要进行数据库优化,首先应该弄清数据库类型及其特点。从数据处理角度分类,数据库可分为两大类:联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing),OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易,电信业务等。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 两类系统处理的数据量不同,技术的使用也是不一样的,在OLTP系统中,oracle、db2等是主流数据库产品,数据量在几个TB甚至更小。在OLAP系统中,除了传统的数据库外,有越来越多的其他数据库产品出现,如sysbase IQ,GP,国产数据库GBase 8a,达梦7等,数据量大多在几十TB甚至更高,数据处理主要集中在查询统计分析、大数据量的导入导出等。在这里,我们主要讨论的还是最通用的ORACLE数据库的两类系统的优化思路和方式的差异。 数据库具体是OLTP还是OLAP取决于你的业务类型。OLTP和OLAP两类系统对数据库要求截然不同。除了系统本身自有的特点之外,在技术方面也存在巨大的差别,所带来的优化技术和理念也不太一样。 OLTP主要是交易型数据库,其事务特征为高并发而数据量小,大部分情况都要求瞬间出结果,系统要求的实时性、稳定性、安全性较高。这类数据库的系统瓶颈主要在CPU和内存上,在优化思路上,更加关注CPU的利用率;各种命中率指标,譬如SHARED POOL, BUFFER CACHE的命中率;SQL语句绑定变量等。由于数据量相对比较小,因此OLTP大部分都是集中式的。 OLAP主要是分析型数据库,并发量比较小,但单个sql消耗巨大,大部分查询需要处理海量数据,用户对响应时间的要求远不如OLTP用户。由于数据量巨大,这类数据库的系统瓶颈主要在磁盘io上,一些传统的优化指标和手段,如SHARED POOL, BUFFER CACHE 的命中率等对OLAP型数据库意义不大,而分区,并行操作,压缩,物化视图,全文索引等技术可能都会在OLAP中体现。OLAP库基本都是上TB的,有的是几百TB,甚至PB,因此很多OLAP库可能都分成了N个库,以便于分布式处理。OLAP一般都是采用星星模式或者雪花模式的。 下面从内存设计的优化角度具体分析一下这两类系统优化手段的差异: 内存设计通常是通过调整ORACLE内存参数来实现的。oracle的内存可分为SGA(shared global area)共享全局区和PGA(program global area)进程全局区两部分。OLTP系统由于处理的事务为高并发且数据量小,SGA比PGA更为重要;OLAP系统处理的事务数据量大且并发量比较小,大部分查询可能运行一次可能很久不会在运行,SQL的重用意义不大,很多命中率指标对于OLAP也影响较小处理,因此SGA相对次要,而较多大数据的排序,HASH操作都需要在PGA完成,PGA大小直接决定了处理效率。 尽管从oracle 10g开始,oracle已经减少了对内存命中率的关注,转而通过工作时间(CPU时间或服务时间)和等待工作时所消耗的时间(等待时间)来分析系统的性能,但对一个OLTP库来说,库缓存命中率(Library hit)和数据缓冲区命中率(buffer hit)仍是极重要的指标。OLTP系统是一个SQL执行非常密集的系统,Library hit命中率低说明共享池里很多SQL不能重用,需要重新解析,这会大大增加CPU负荷,降低系统性能,影响SQL 执行效率。使用绑定变量是减少硬解析,提高库缓存命中率的有效手段。

Oracle数据库实例及其相关概念

Oracle数据库实例及其相关概念2010-11-24 00:00 出处:中国IT实验室作者:佚名 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 用数据库安全策略防止权限升级攻击 C++虚函数的显式声明 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 1)数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等); 2)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,成为全局区(SGA)。 一、数据库、表空间、数据文件 1.数据库 数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。 数据库的数据存储在表中。数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。数据以行(我们通常称为记录)的方式存储在表中。表之间可以相互关联。以上就是关系模型数据库的一个最简单的描述。

当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。关于OO型数据库,以后利用专门的篇幅来讨论。一般情况下我们的讨论都基于关系模型。 2.表空间、文件 无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。这些逻辑划分称作表空间。 表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。在Oracle7.2以后,数据文件创建可以改变大小。创建新的表空间需要创建新的数据文件。数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。 如果数据库存储在多个表空间中,可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割。在规划和协调数据库I/O请求的方法中,上述的数据分割是一种很重要的方法。 3.Oracle数据库的存储结构分为逻辑存储结构和物理存储结构: 1)逻辑存储结构:用于描述Oracle内部组织和管理数据的方式; 2)物理存储结构:用于描述Oracle外部即操作系统中组织和管理数据的方式。 二、Oracle数据库实例

2020年(Oracle管理)Oracle SQL性能优化方法

(Oracle管理)Oracle SQL性能优化方法

OracleSQL性能优化方法探讨 Oracle性能优化方法(SQL篇)1 1综述2 2表分区的应用2 3访问Table的方式3 4共享SQL语句3 5选择最有效率的表名顺序5 6WHERE子句中的连接顺序.6 7SELECT子句中避免使用’*’6 8减少访问数据库的次数6 9使用DECODE函数来减少处理时间7 10整合简单,无关联的数据库访问8 11删除重复记录8 12用TRUNCATE替代DELETE9 13尽量多使用COMMIT9 14计算记录条数9 15用Where子句替换HAVING子句9 16减少对表的查询10 17通过内部函数提高SQL效率.11 18使用表的别名(Alias)12 19用EXISTS替代IN12 20用NOT EXISTS替代NOT IN13 21识别低效执行的SQL语句13

22使用TKPROF 工具来查询SQL性能状态14 23用EXPLAIN PLAN 分析SQL语句14 24实时批量的处理16

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要经过反反复复的过程。在数据库建立时,就能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积累经验,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用问题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来说明对数据库性能如何进行优化。 2表分区的应用 对于海量数据的表,可以考虑建立分区以提高操作效率。建立分区一般以关键字为分区的标志,也可以以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时可以进行说明: createtableTABLENAME() partitionbyrange(PutOutNo) (partitionPART1valueslessthan(200312319999) partitionPART2valueslessthan(200412319999)

Oracle内存全面分析

Oracle 内存内存全面全面全面分析分析 作者作者::fuyuncat 来源来源::https://www.360docs.net/doc/4e13029840.html, 作者简介 黄玮,男,99年开始从事DBA 工作,有多年的水利、军工、电信及航 运行业大型数据库Oracle 开发、设计和维护经验。 曾供职于南方某著名电信设备制造商——H 公司。期间,作为DB 组 长,负责设计、开发和维护彩铃业务的数据库系统。目前,H 公司的彩铃系 统是世界上终端用户最多的彩铃系统。最终用户数过亿。 目前供职于某世界著名物流公司,负责公司的电子物流系统的数据库开 发、维护工作。 msn: fuyuncat@https://www.360docs.net/doc/4e13029840.html, Email :fuyuncat@https://www.360docs.net/doc/4e13029840.html, Oracle 的内存配置与oracle 性能息息相关。而且关于内存的错误(如4030、4031错 误)都是十分令人头疼的问题。可以说,关于内存的配置,是最影响Oracle 性能的配 置。内存还直接影响到其他两个重要资源的消耗:CPU 和IO。 首先,看看Oracle 内存存储的主要内容是什么: ? 程序代码(PLSQL、Java); ? 关于已经连接的会话的信息,包括当前所有活动和非活动会话; ? 程序运行时必须的相关信息,例如查询计划; ? Oracle 进程之间共享的信息和相互交流的信息,例如锁; ? 那些被永久存储在外围存储介质上,被cache 在内存中的数据(如redo log 条 目,数据块)。 此外,需要记住的一点是,Oracle 的内存是与实例对应的。也就是说,一个实例就有 一个独立的内存结构。 先从Oracle 内存的组成架构介绍。 1. Oracle 的内存架构组成 Oracle 的内存,从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享 部分(主要是PGA 和UGA)。而这两部分内存里面,根据功能不同,还分为不同内存池 (Pool)和内存区(Area)。下面就是Oracle 内存构成框架图:

oracle实例内存详解

一、名词解释 (1)SGA:SystemGlobal Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Librarycache(共享SQL区)和Datadictionarycache(数据字典缓冲区)。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。 (3)缓冲区高速缓存:DatabaseBufferCache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。 (4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。 (5)Java池:Java Pool为Java命令的语法分析提供服务。 (6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。 二、分析与调整 (1)系统全局域: SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。 a.共享池Shared Pool: 查看共享池大小Sql代码 SQL>show parameter shared_pool_size 查看共享SQL区的使用率: Sql代码 select(sum(pins-reloads))/sum(pins)"Library cache"from v$librarycache; --动态性能表 LIBRARY命中率应该在90%以上,否则需要增加共享池的大小。 查看数据字典缓冲区的使用率:

oracle内存pga+sga设置方法

11g 中新增MEMORY_MAX_TARGET 参数,此参数一出现就如在10g 中第一次出现SGA_MAX_SIZE 参数一样给人以耳目一新的感觉。memory_max_target 是设定Oracle能占OS多大的内存空间,一个是Oracle SGA 区最大能占多大内存空间。无疑在11g Oracle 又向自动管理内存更进一步。 10g 的sga_max_size 是动态分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,只是根据Oracle 运行状况来重新分配SGA 各内存块的大小。PGA在10g 中需要单独设定. 11g MEMORY_MAX_TARGET 参数包含两部分内存,一个 System global area (SGA),另一个 system global area(PGA)。很显然在11g 中可已经将PGA 和SGA 一 起动态管理了。 下面来看看在11g 中Memory_target 设置和不设置对SGA/PGA 的影响: A:如果Memory_target 设置为非0 值 (下面有四种情况来对SGA 和PGA 的大小进行分配) 1:sga_target 和 pga_aggregate_target 已经设置大小如果Oracle 中已经设置了参数sga_target 和pga_aggregate_target,则这两个参数将各自被分配为最小值最为它们的目标值。 Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小 和 memory_max_size 一致。 2:sga_target 设置大小, pga_aggregate_target 没有设置大小那么pga_aggregate_target初始化值=memory_target-sga_target 3:sga_target 没有设置大小, pga_aggregate_target 设置大小那么sga_target 初始化值=memory_target-pga_aggregate_target 4:sga_target 和 pga_aggregate_target 都没有设置大小 Oracle 11g 中对这种sga_target 和pga_aggregate_target 都没有设定大小的情况下,Oracle将对这两个值没有最小值和默认值。 Oracle 将根据数据库运行状况进行分配大小。 但在数据库启动是会有一个固定比例来分配: sga_target =memory_target *60% pga_aggregate_target=memory_target *40% B:如果Memory_target 没有设置或=0 (在11g 中默认为0) 11g 中默认为0 则初始状态下取消了Memory_target 的作用,完全和10g 在内存管理上一致,完全向下兼容。 (也有三种情况来对SGA 和PGA 的大小进行分配)

Oracle 内存分配与调整.

Oracle 内存分配与调整 一、前言 对于oracle 的内存的管理,截止到9iR2,都是相当重要的环节,管理不善,将可能给数据库带来严重的性能问题。下面我们将一步一步就内存管理的各个方面进行探讨。 二、概述 oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是SGA 和PGA(process global area or private global area 。对于SGA 区域内的内存来说,是共享的全局的,在UNIX 上,必须为oracle 设置共享内存段(可以是一个或者多个,因为oracle 在UNIX 上是多进程;而在WINDOWS 上oracle 是单进程(多个线程,所以不用设置共享内存段。PGA 是属于进程(线程私有的区域。在oracle 使用共享服务器模式下(MTS,PGA 中的一部分,也就是UGA 会被放入共享内存 large_pool_size 中。对于SGA 部分,我们通过sqlplus 中查询可以看到: SQL> select * from v$sga; NAME V ALUE Fixed Size 454032 Variable Size 109051904 Database Buffers 385875968 Redo Buffers 667648 其中: Fixed Size:

oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA 各部分组件的信息,可以看作引导建立SGA 的区域。Variable Size: 包含了shared_pool_size 、java_pool_size 、large_pool_size 等内存设置Database Buffers: 指数据缓冲区,在8i 中包含db_block_buffer*db_block_size 、 buffer_pool_keep 、buffer_pool_recycle 三部分内存。在9i 中包含db_cache_size 、 db_keep_cache_size 、db_recycle_cache_size 、db_nk_cache_size 。 Redo Buffers: 指日志缓冲区,log_buffer 。在这里要额外说明一点的是,对于v$parameter 、 v$sgastat 、v$sga 查询值可能不一样。v$parameter 里面的值,是指用户在初始化参 数文件里面设置的值,v$sgastat 是oracle 实际分配的日志缓冲区大小(因为缓冲区的分配值实际上是离散的,也不是以block 为最小单位进行分配的, v$sga 里面查询的值,是在oracle 分配了日志缓冲区后,为了保护日志缓冲区,设置了一些保护页,通常我们会发现保护页大小大约是11k(不同环境可能不一样。参考如下内容 SQL> select substr(name,1,10 name,substr(value,1,10 value 2 from v$parameter where name = 'log_buffer'; NAME V ALUE log_buffer 524288 SQL> select * from v$sgastat ; POOL NAME BYTES fixed_sga 454032

ORACLE内存调整建议

ABC公司Oracle数据库参数调整建议 1.Oracle参数initdb.ora (修改建议) 目前系统现在分析: (1)Windows 2003可以显示50G内存,但操作系统是32位,最多默认支持4G,用户进程支持2G,Oracle可能支持1.7G内存; (2)不清楚是否对操作系统做过支持大内存的调整;从下表的参数分析,可能没有修改; (3)不清楚此系统Windows是否允许在虚拟环境(Virtual Machine),故保守起见,我们的建议是:把内存往小里调整。 根据我们的经验,对Oracle数据库调整如下: 总内存控制在1.5G SGA控制在800M PGA使用700M testdb.__db_cache_size=469762048 testdb.__java_pool_size=8388608 testdb.__large_pool_size=8388608 testdb.__oracle_base='D:\app\Administrator'#ORACLE_BASE set from environment testdb.__pga_aggregate_target= 734003200 #700M #671088640 testdb.__sga_target=838860800 #800M #1249902592 testdb.__shared_io_pool_size=0 testdb.__shared_pool_size= 335544320 #320M #738197504 testdb.__streams_pool_size=8388608 *.audit_file_dest='D:\app\Administrator\admin\xbrldb\adump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.control_files='E:\data\xbrldb\control01.ctl','D:\app\Administrator\flash_recovery_ area\xbrldb\control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='xbrldb' *.db_recovery_file_dest='D:\app\Administrator\flash_recovery_area' *.db_recovery_file_dest_size=21474836480 *.diagnostic_dest='D:\app\Administrator' *.dispatchers='(PROTOCOL=TCP) (SERVICE=xbrldbXDB)' *.fast_start_mttr_target=30 *.job_queue_processes=1000 testdb.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(H OST=10.24.58.100)(PORT=1531))))' *.log_archive_format='ARC%S_%R.%T' *.memory_target= 1610612736 #1.5G#1916796928

一分钟查一个案例带你看看Oracle数据库到底有多牛逼性能难题

一分钟查一个案例带你看看Oracle数据库到底有多牛逼 性能难题 问题来了 电话响了,是一位证券客户 DBA 的来电,看来,问题没过两天,又出现了。 接起电话,果不其然。 “小y,前天那个问题又重现了。重启后恢复正常,这次抓到了hangAnalyze,不过领导在身后一直催,所以没来得及抓取 systemstate dump 就重启了。你尽快帮忙分析下吧,hanganalyze 的 trace 文件 已经转到你邮箱了。” 就在 2 天前,该客户找到小 y, 他们有一套比较重要的系统出现了数据库无法登陆的情况,导致业务中断,重启后业务恢复,但原因未明,搞的他们压力很大。 可惜的是,他们是事后找过来,由于客户现场保护意识不足,最后也只能是巧妇难为无米之炊了… 总的来说,小 y 还算是比较熟悉证券行业的。 毕竟,小 y 多年来一直在银行、证券、航空等客户提供数据库专家支持服务,这其中就包括了北京 排名前 6 的所有证券公司。 简而言之,证券行业的要求就是快速恢复,快速恢复业务大于一切。 原因很简单,股价瞬息万变,作为股民,如果当时无法出售或者购买股票,甚至可能引发官司。所以,证券核心交易系统如果中断时间超过 5 分钟,则可以算得上是严重故障了,一旦被投诉,则可能会 被证监会通报,届时业务可能被降级,影响到证券公司的经营和收益。 结合这个特点,小 y 为客户制定了应急预案,看来收集 systemstate dump 是来不及了,只能先 收集 hangAnalyze, 时间来得及的话则可以继续收集 systemstate dump。收集 hangAnalyze 的命令 很简单,照敲就是了,没什么技术含量。 $sqlplus –prelim “/as sysdba” SQL>oradebug setmypid SQL>oradebug hanganalyze 3 .. 此处等上一会 .. SQL>oradebug hanganalyze 3 SQL>oradebug tracefile_name

Oracle数据库实例的内存和进程结构

Oracle数据库实例的内存和进程结构 更新: 2010-04-27来源: 互联网字体:【大中小】 内存结构 在Oracle数据库系统中内存结构主要分为系统全局区(SGA)和程序全局区(PGA)。 SGA随着数据库实例的启动向操作系统申请分配一块内存结构,随着数据库实例的关闭释放,每一个Oracle数据库实例有且只有一个SGA。 PGA随着Oracle服务进程启动的时候申请分配的一块内存结构。如果在共享服务结构中PGA存在SGA 中。 下图展示Oracle的内存结构,在后面我们将用文字详细的表述各个部件。 系统全局区(SGA) 重要提示,提高SGA的大小可以在一定程度上提高Oracle数据库系统的性能,但你设置SGA的值如果不能锁定在内存物理页上,有些部分可能被交换到系统的交换文件中。这样你的Oracle数据库系统将变慢。 系统全局区是一组包含数据和控制信息的共享内存结构,允许Oracle服务的众多后台进程同时访问或修改其中的数据,所以有些时候也被称为―全局共享区‖,参数文件中的SGA_MAX_SIZE指定SGA动态大小。※共享池SharedPool ※数据高速缓存DatabaseBufferCache ※重做日志缓存RedoLogBufferCache ※ Java池(可选)JavaPool ※大缓冲池(可选)LagerPool 共享池 共享池存储了最近多数使用的执行SQL语句和最近使用的数据定义。它包含库高速缓存器和数据字典缓存器这两个与性能相关的内存结构。共享池的大小可以通过初始化参数文件(通常为init.ora)中的SHARED_POOL_SIZE决定。共享池是活动非常频繁的内存结构,会产生大量的内存碎片,所以你要确保它尽可能足够大。 库高速缓存器,他又包含共享SQL区和共享PL/SQL区两个组件区。为了提高SQL语句的性能,在提交SQL语句或PL/SQL程序块时Oracle服务器将先利用最近最少使用(LRU)算法检查库高速缓存中是否存在相同的SQL语句或PL/SQL程序块,若有则使用原有的分析树和执行路径。 数据字典缓存器,它收集最近使用的数据库中的数据定义信息。它包含数据文件、表、索引、列、用户、访问权限、其他数据库对象等信息。在分析阶段决定数据库对象的可访问信息。利用数据字典缓存器有效的改善了响应时间。它的大小由共享池的大小决定。 数据高速缓存 它存储数据文件中数据块的拷贝。利用这种结构使数据的更新操作性能大大的提高。数据高速缓存中的数据交换同样采用最近最少使用算法(LRU)。它的大小主要受到DB_BLOCK_SIZE决定。数据高速缓存它由DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、 DB_RECYCLE_CACHE_SIZE这些独立的子缓存器构成,同时它能动态的增长或收缩。 重做日志缓存

修改Oracle 11g 内存

修改Oracle 11g 内存 分类:Oracle Database 2011-12-16 18:49 910人阅读评论(0) 收藏举报oracleintegersystemsqlbic https://www.360docs.net/doc/4e13029840.html,/tswisdom/article/details/7078477 [oracle@bi11g bin]$ ./sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Fri Dec 1618:39:36 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL> conn / as sysdba Connected. SQL> show parameter memory NAME TYPE VALUE ------------------------------------ ----------------------------------------- hi_shared_memory_address integer 0 memory_max_target big integer 1584M memory_target big integer 1584M shared_memory_address integer 0 SQL> alter system set memory_target = 512M scope=spfile 2 ; System altered. SQL> alter system set memory_max_target =1024Mscope=spfile 2 ; System altered. SQL> show parameter memory NAME TYPE VALUE ------------------------------------ ----------------------------------------- hi_shared_memory_address integer 0

oracle12c 内存数据库(IN-MEMORY)使用手册

启动Oracle数据库12c的第1版(12.1.0.2),在内存中的列存储(IM列存储)是存储表和分区的副本进行快速扫描优化的特殊柱状格式可选,静态SGA池。在IM列存储不更换缓存,但作为一个补充,使这两个存储区可存储不同格式相同的数据。默认情况下,仅使用DDL 对象指定的inmemory的候选人将填充在IM列存储。 柱状格式只存在于内存中。图14-8显示了存储在IM列存储SH模式三个表:客户,产品和销售。在IM列存储通过柱,而不是行存储数据。该数据库保持柱状数据缓冲区高速缓存事务一致性。 本节包含了以下主题: 在IM列存储的好处 双存储格式:纵栏和行 在内存中的列存储的人口 在内存列压缩 扫描优化的IM列存储 在IM列存储的好处 在IM列存储使得数据库进行扫描,联接和聚合时相比,它使用的磁盘格式完全快得多。特别是,对于IM列存储是很有用的: 扫描行数和应用使用运营商,如=过滤器,<,>,和IN 查询列的子集在表中,例如,选择5 100的列 加快加入通过将小维表谓词到过滤器上的一个大的事实表 业务应用,即席分析查询和数据仓库工作负载受益最大。执行使用索引查找短事务纯OLTP 数据库中受益较少. 在IM列存储还具有以下优点: 所有现有的数据库功能都支持,包括高可用性功能(参见“高可用性概述”)。 没有应用程序的改变是必需的。 优化器会自动柱状格式的优势。 配置简单。 该INMEMORY_SIZE初始化参数指定的内存预留供IM列存储的使用量。DDL语句指定表空间,表,分区或列被读入IM列存储。 压缩优化的查询性能。 这些压缩技术通过使会话读取更多的数据到内存中增加有效的内存带宽。 更少的索引,物化视图和OLAP多维数据集是必需的。

配置Oracle内存

对oracle的内存(SGA和PGA)进行调整,优化数据库性 一、示例: SGA: 共享池:200MB 缓冲区高速缓存:24MB 大型池:9MB Java池:32MB SAG总容量:264.933 SAG的最大大小:305.069 PGA: 总记PGA目标:240MB 分配的当前PGA:8914KB 分配的最大PGA(自启动以来)9081KB 高速缓存命中百分比:100% PGA和SGA的和应小于系统内存总量前去操作系统和其他应用程序所需内存后得到的值。 二、名词解释: SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配; 系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义, 主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区) 共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息 缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能 大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境

Java池:ava Pool为Java命令的语法分析提供服务 PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。 三、分析与调整: 1、系统全局域: SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/2到1/3,当然,如果服务器上只有oracle的话, 可以分配的更大一些,如果还有其他服务,如IIS等,那就要分的小一些。 1、共享池: 修改共享池的大小,ALTER SYSTEM SET SHARED_POOL_SIZE = 64M; 查看共享SQL区的使用率: select(sum(pins-reloads))/sum(pins) "Library cache" from v$librarycache;--动态性能表 这个使用率应该在90%以上,否则需要增加共享池的大小。 查看数据字典缓冲区的使用率: select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;--动态性能表 这个使用率也应该在90%以上,否则需要增加共享池的大小。 2、缓冲区高速缓存: 它的大小要根据数据量来决定: SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB 查看数据库数据缓冲区的使用情况: SELECT name,value FROM v$sysstat order by name WHERE name IN(''DB BLOCK GETS'',''CONSISTENT GETS'',''PHYSICAL READS''); 计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要 增加数据缓冲区的大小。

全面分析Oracle数据库的内存配置

Oracle内存全面分析(1) 作者:fuyuncat 来源:https://www.360docs.net/doc/4e13029840.html, Oracle的内存配置与oracle性能息息相关。而且关于内存的错误(如4030、4031错误)都是十分令人头疼的问题。可以说,关于内存的配置,是最影响Oracle性能的配置。内存还直接影响到其他两个重要资源的消耗:CPU 和IO。 首先,看看Oracle内存存储的主要内容是什么: ?程序代码(PLSQL、Java); ?关于已经连接的会话的信息,包括当前所有活动和非活动会话; ?程序运行时必须的相关信息,例如查询计划; ?Oracle进程之间共享的信息和相互交流的信息,例如锁; ?那些被永久存储在外围存储介质上,被cache在内存中的数据(如redo log条目,数据块)。 此外,需要记住的一点是,Oracle的内存是与实例对应的。也就是说,一个实例就有一个独立的内存结构。 先从Oracle内存的组成架构介绍。

1.Oracle的内存架构组成 Oracle的内存,从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA 和UGA)。而这两部分内存里面,根据功能不同,还分为不同内存池(Pool)和内存区(Area)。下面就是Oracle内存构成框架图: SGA Share Pool Buffer Cache Redo Log Buffer Java Pool Stream Pool(10g)Large Pool PGA*n Bitmap merge area Sort Area Hash Area UGA*n CUA*n 下面分别介绍这两块内存区。 1.1.SGA(System Global Area) SGA(System Global Area 系统全局区域)是一组包含一个Oracle实例的数据和控制信息的共享内存结构。这句话可以说是SGA的定义。虽然简单,但其中阐述了SGA几个很重要的特性:1、SGA的构成——数据和控制信息,我们下面会详细介绍;2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence控制);3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA,尽管SGA来自

ORACLE SID 实例名 数据库名 讲解

详解:oracle10G 数据库名、实例名、ORACLE_SID 【转载】 数据库名、实例名、数据库域名、全局数据库名、服务名, 这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。 一、数据库名 什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下: DB_NAME=myorcl ... 在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME 的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。 数据库名的作用 数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。 有很多Oracle安装文件目录是与数据库名相关的,如: winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\... Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/... pfile: winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora 跟踪文件目录: winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/... 另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。 同样,修改数据库结构的语句alter database,当然也要指出要修改的数据库的名称。 如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount 方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。 还有在备份或恢复数据库时,都需要用到数据库名。 总之,数据库名很重要,要准确理解它的作用。 查询当前数据名 方法一:select name from v$database; 方法二:show parameter db 方法三:查看参数文件。 修改数据库名 前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:

oracle 11g数据库ASM磁盘组存储空间扩容实施

oracle 11g数据库ASM磁盘组存储空间扩容实施任务概述 XX系统存放oracle数据文件的DATA磁盘组空间因为开发方新上线业务,造成原有数据库表空间较为紧张,应业务开发方要求,为了适应未来的数据增长 要求,需要扩容。 此方案为数据库扩容常规标准步骤,无需专门测试,但是,在数据库存储扩容前,为防止变更操作带来的风险,需要对数据库数据作备份,以防万一出现问题时做回退恢复。 在实施存储扩容变更操作时,由于是底层磁盘阵列和操作系统的标准化操作,为了防止操作失误,必须一人操作,另一人在旁监督检查,并且分步确认,步 步把关,确保万无一失。 1.1. 实施任务 DATA磁盘组扩容: 在DS5300存储RAID10组中划分新的2个300G的LUN并添加到DATA 磁盘组给XX集群数据库使用,RAID10组剩余的空间可以留给以后扩容或其他用途使用。 1.2. 环境简介 系统名称:XX系统;主机:两台IBM P750小型机;操作系统:AIX 6.1; 存储:1套IBM DS5300;数据库:ORACLE RAC 11.2.0.3.0; 1.3. 实施时间 2014年11月。 1.4. 实施人员 略 2. 实施方案 2.1. 实施内容 原有数据库需要作数据作RMAN备份; 连接到存储DS5300划分LUN,并加载到主机; 主机扫描识别,修改属性及权限;

ASM存储DATA磁盘组增加disk扩容; 检查数据库和应用。 2.2. 实施步骤 2.3. 实施风险控制 在数据库存储扩容前,为防止变更操作风险,需要对数据库数据作备份,以防万一。 在实施存储扩容变更操作时,由于是底层磁盘阵列和操作系统的标准化操作,为了防止操作失误,必须一人操作,另一人在旁监督检查,并且分步确认,步 步把关,确保万无一失。 3. 详细实施步骤 3.1. RMAN备份 在数据库服务器节点2上通过RMAN对数据库做全备份,历时约60分钟。 具体步骤如下: 以root用户创建备份用的目录,并更改所有者等; #mkdir -p /backup/20131122 #chown -R oracle:dba /backup/ 以oracle用户创建rman备份用的脚本,并赋权限: #su - oracle $cd /backup/20131122

相关文档
最新文档