__9_1--修改Oracle的processes和sessions参数和Linux的信号量配置,可预防ORA-12516
oracle查看process和session
aq_tm_processes integer 1
db_writer_processes integer 1
RACLE查看并修改最大连接数
2010-07-22 13:40:09| 分类: 数据库 |字号 订阅
1. 查看processes和sessions参数
SQL> show parameter processes
NAME TYPE VALUE
系统已更改。
SQL> alter system set sessions=555 scope=spfile;
系统已更改。
3. 修改processes和sessions值必须重启oracle服务器才能生效
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions=(1.1*process+5)
查询数据库当前进程的连接数:
select count(*) from v$process;
查看数据库当前会话的连接数:
select count(*) from v$session;
查看数据库的并发连接数:
job_queue_processes integer 10
[专题]Oraclesession表和process表字段描述
[专题]Oracle session表和process表字段描述Oracle session表和process表字段描述Oracle 动态性能表 v$session & v$process1、v$sessionSADDR: session addressSID: session identifier,常用于连接其它列。
SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。
AUDSID: audit session id。
可以通过audsid查询当前session的sid。
select sid from v$session where audsid=userenv('sessionid');PADDR: process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id。
USER#: session's user id。
等于dba_users中的user_id。
Oracle内部进程的user#为0。
USERNAME: session's username。
等于dba_users中的username。
Oracle内部进程的username为空。
COMMAND: session正在执行的SQL Id。
1代表create table,3代表select。
TADDR: 当前的transaction address。
可以用来关联v$transaction的addr字段。
LOCKWAIT: 可以通过这个字段查询出当前正在等待的锁的相关信息。
sid & lockwait与v$lock中的sid & kaddr相对应。
STATUS: 用来判断session状态。
Active:正执行SQL语句。
Inactive:等待操作。
Killed:被标注为删除。
SERVER: server type (dedicated or shared)SCHEMA#: schema user id。
Oracle数据库参数优化
千里之行,始于足下。
Oracle数据库参数优化Oracle数据库参数优化是指通过调整数据库的配置参数,提高数据库的性能和稳定性。
下面是一些常见的Oracle数据库参数优化技巧:1. SGA参数优化:- 调整sga_target参数以控制SGA的大小。
SGA包括数据库缓冲区、共享池、重做日志缓冲区等,适当调整SGA的大小可以减少IO操作,提高数据库性能。
- 调整db_cache_size参数以增大数据库缓冲区的大小,提高数据块的访问速度。
- 调整shared_pool_size参数以增大共享池的大小,提高SQL语句的解析和执行效率。
2. PGA参数优化:- 调整pga_aggregate_target参数以控制PGA的大小。
PGA是用于处理SQL查询和排序的内存区域,适当调整PGA的大小可以减少磁盘IO操作,提高查询和排序的性能。
3. Redo日志参数优化:- 调整log_buffer参数以增大重做日志缓冲区的大小,减少频繁的重做日志刷新操作,提高数据库的写入性能。
- 调整log_checkpoint_timeout参数以控制重做日志刷新的频率,避免过于频繁的刷新。
4. 并行处理参数优化:- 调整parallel_max_servers参数以增大并行处理的资源限制,提高并行查询和并行DML操作的性能。
第1页/共2页锲而不舍,金石可镂。
- 调整parallel_min_servers参数以设置最小的并行处理资源数,避免并行操作的启动延迟。
5. SQL优化:- 使用合适的索引和优化的SQL语句,优化查询的执行计划。
- 使用绑定变量而不是直接将参数传递到SQL语句中,避免SQL重解析,提高性能。
6. 服务器参数优化:- 调整processes参数以增加数据库的并发连接数。
- 调整sessions参数以控制数据库的最大会话数。
- 调整open_cursors参数以增大打开游标的数量,避免游标溢出。
以上是一些常见的Oracle数据库参数优化技巧,但具体的优化策略需要根据实际情况进行调整,可以参考Oracle官方文档和专业的DBA建议。
Oracle_processes修改注意事项
Oracle数据库进程数的修改ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:sessions=(1.1*process+5)当你设置不同processes值时候,shared_pool中的processes池,大小也会随之变化select * from v$sgastat where pool='shared pool' and name='processes';目前我所见到的生产环境中的库,大点的话,一般processes在3000左右就够用了,当然你的环境要是超大型oltp类型的,那么另说了,总的来说就是要根据你业务情况来了。
另外,你可以通过下面语句看看历史会话数的峰值是多少,来判断是否需要调整processes。
select sessions_current,sessions_highwater from v$license;下面我们用两种方法修改PROCESS的最大值一、通过Oracle Enterprise Manager Console在图形化管理器中修改以系统管理员的身份登入,进入界面数据库的例程- 配置- 一般信息- 所有初始化参数,修改processes的值二、在SQLPLUS中修改以DBA权限登录,修改PROCESS的值(SESSION的值会跟着改);创建pfile;重新启动数据库。
输入的SQL命令如下,回显信息省略了SQL> connect sys/sys as sysdbaSQL> alter system set processes=1000 scope = spfile;SQL> create pfile from spfile;SQL> shutdown immediate;SQL> startup;参考下面案例:首先介绍查看数据库设置信息的SQL语句:SQL> select count(*) from v$session --#连接数SQL> Select count(*) from v$session where status='ACTIVE'--#并发连接数select sessions_current,sessions_highwater from v$license;SQL> show parameter processes --最大连接SQL> show parameter spfile -- 查看当前正在使用的spfile1、使用sys,以sysdba权限登录:2、SQL> show parameter processes; -- 查看一下设置3、show parameter spfile -- 查看当前正在使用的spfile ,如果没有,则执行第四步4、创建spfileSQL>create spfile from pfile;SQL>shutdown immediate;SQL>startup;5、SQL> alter system set processes=1000 scope = spfile; --修改processes6、修改成功之后,关闭数据库,并重启SQL>shutdown immediate;SQL>startup;7、然后SQL>show parameter processes -- 可以查看是否修改成功了1.select count(*) from v$session;select count(*) from v$process;查看当前总会话数和进程数,这两个视图就是跟会话及进程有关的重要视图啦,信息都是从这里面取的。
Oracle的session和process的区别与分析
Oracle的session和process的区别与分析session 和process的区别:连接connects,会话sessions和进程pocesses的关系每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。
session 和process的关系,tom在他的书里写的很清楚了一个process可以有0个,1个或者多个session一个session也可以存在这个或者那个process中oracle中session跟process的研究使用方法:首先看看v$session跟v$process中主要的字段属性:v$session(sid,serial#,paddr,username,status,machine,terminal,sql_hash_value,sql_addr ess,,,)v$process(addr,spid,,,)可看到v$session中的paddr跟v$process中的addr对应,也即会话session在数据库主机上对应进程的进程地址.这里我们要先定位该session正在执行的sql语句,此时我们可以查询如下的语句:select sql_textfrom v$sqltext_with_newlineswhere (hash_value,address) in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;若需手工kill一个session,可采用"alter system kill session 'sid,serial#' immediate",此时session的状态会标记为killed,该session对应进程地址指向相同的虚拟地址,见如下的查询:SQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2BADB28 INACTIVE245 14374 C0000000B2BAB748 INACTIVESQL> alter system kill session '234,14409' immediate;System alteredSQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2C750B8 KILLED245 14374 C0000000B2BAB748 INACTIVESQL> alter system kill session '245,14374' immediate;System alteredSQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2C750B8 KILLED245 14374 C0000000B2C750B8 KILLEDSQL>我们知道很多时候被kill掉的session并不能马上释放资源,我们需要从os上kill掉对应的进程,但由于session的paddr被修改为虚拟地址了,导致无法关联v$process,找不到进程的spid进程号.此时我们可以执行如下查询:SQL> SELECT ername,s.status,2 x.ADDR,x.KSLLAPSC,x.KSLLAPSN,x.KSLLASPO,x.KSLLID1R,x.KSLLRTYP,3 decode(bitand (x.ksuprflg,2),0,null,1)4 FROM x$ksupr x,v$session s5 WHERE s.paddr(+)=x.addr6 and bitand(ksspaflg,1)!=07 and s.status is null;USERNAME STATUS ADDR KSLLAPSC KSLLAPSN KSLLASPO KSLLID1R KSLLRTYP DECODE(BITAND(X.KSUPRFLG,2),0,------------------------------ -------- ---------------- ---------- ---------- ------------ ---------- --------------------------------------C0000000B2B58D08 0 0 0C0000000B2BA4688 298 9 4669 0C0000000B2BAB748 1 16 4675 197 EVC0000000B2BADB28 1 16 4675 197 EVSQL>或查询如下的语句:SQL> select p.addr from v$process p where pid <> 12 minus3 select s.paddr from v$session s;ADDR----------------C0000000B2BA4688C0000000B2BAB748C0000000B2BADB28SQL>从查询结果中可发现被kill掉的session对应的进程地址.然后通过进程地址来查询对应的进程号,见如下的查询:SQL> select spid from v$process where addr in('C0000000B2BAB748','C0000000B2BADB28');SPID------------13013 13015。
Oracle性能调优——基本参数调整
Oracle性能调整(一)——基本参数调整一、操作系统参数交换区是Oracle的一项基本的要求。
可以根据Oracle的发行要求来确定。
一般交换区大小的要求是该服务器内存的2倍至4倍之间,建议是内存的4倍Note2:oracle 文件设置当服务器平台已完成操作系统的安装后,就应该开始认真的考虑下面的问题:A、是否采用裸设备实际应用的生产系统基本都是采用裸设备,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。
B、安装点的考虑Oracle的安装点就是指数据文件、日志文件和控制文件的安置路径,为了使系统在以后运行性能达到优化,建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上。
最好将数据文件、日志文件和控制文件分别存放在不同的路径。
C、SYSTEM表空间对应数据文件在自定义安装会话中,建议你根据需要设置system表空间所对应的数据文件的大小。
一般要设置比默认值的2倍。
该数据文件的大小最好是在300MB至500MB间。
因为数据文件太小不利于系统的运行。
D、临时表空间对应的数据文件临时表空间对应的数据文件可以根据将来系统存放的应用的处理情况来定。
比如系统将来可能要经常进程排序处理,则需要设置较大的临时表空间,也可能需要再建立新的临时表空间。
这里建议临时表空间的数据文件在100MB至300MB左右。
E、回滚段表空间对应的数据文件回滚表空间都是系统管理,初始值也是根据系统事务量预估计的值,实际到运行阶段如果系统常出现ORA-01555错误的时候,可能就需要增加回滚表空间的大小。
F、日志文件的大小日志文件的大小对于Oracle系统的运行也是相当重要。
默认值是太小。
实际根据事务繁忙预估计日志大小,没有固定的具体值范围,建议重做日志切换时间不能过短也不能过长,一般在20-40分钟左右。
该参数可以在系统运行期间根据数据库系统日志切换时间重新调整,控制文件的大小。
G、数据库块的大小如果你的应用系统是OLTP的话,可以采用较小的数据库块。
oracle process参数
oracle process参数Oracle Process参数是指在Oracle数据库中,管理和控制进程和线程的一组参数。
利用这些参数,可以调整Oracle数据库的性能和资源管理,以便满足不同的应用程序需要。
在Oracle数据库中,每个进程或线程都由一个特定的进程参数集控制。
这些参数可以控制内存使用、CPU利用率、I/O使用和网络性能等方面。
此外,Oracle Process参数还可以影响数据库的安全性、可靠性和可维护性。
首先,一个关键的Oracle Process参数是sga_max_size。
该参数定义了包含系统全局区(SGA)的内存池的最大大小。
SGA是Oracle中的内存组件,它存储了共享的数据字典缓存区、共享SQL池以及其他重要的数据结构。
在调整SGA大小时,需要平衡内存使用、数据库负载和系统性能之间的关系。
如果SGA太小,数据库性能可能会受到影响;如果SGA太大,可能会导致系统内存不足和其他问题。
另一个重要的进程参数是processes。
这个数字定义了Oracle数据库系统中可以运行的并发进程的最大数量。
通常,processes参数的值应该根据系统硬件资源和数据库工作负载来配置。
如果系统使用的进程数过多,可能导致内存不足和性能下降;另一方面,如果进程数太少,可能会限制数据库并发性能和可扩展性。
还有一些其他的Oracle Process参数,如db_file_multiblock_read_count、db_block_size、max_data_files 等等。
这些参数可以帮助实现数据库性能调优,可用性管理和安全性控制等目标。
例如,db_file_multiblock_read_count参数定义一次I/O操作中读取的数据块数量。
可以增加此值以提高数据传输速度和减少I/O延迟。
而max_data_files定义了一个数据库中的最大数据文件数量,可以避免过度利用磁盘空间和系统资源。
修改Oracle数据库进程数及会话数
修改Orac le数据库进程数及会话数1.通过SQ LPlus修改Ora cle的s essio ns和pr ocess es的关系是s essio ns=1.1*pro cesse s + 5使用sys,以sysd ba权限登录:SQL> show para meter proc esses;NAMETYPEVALUE-------- aq_tm_pr ocess es in teger 1db_write r_pro cesse s int eger1job_q ueue_proce ssesinteg er 10l og_ar chive_max_proce ssesinteg er 1pr ocess es in teger 150SQ L> al ter s ystem setpr ocess es=400 sco pe =spfil e;系统已更改。
SQL> sho w par amete r pro cesse s;NAM E TYP EVALUE--------------------------------aq_t m_pro cesse sinteg er 1d b_wri ter_p roces ses i ntege r 1 job_queu e_pro cesse s int eger10log_archi ve_ma x_pro cesse s int eger1proce ssesinteg er 150SQL>creat e pfi le fr om sp file;注:ses sions是个派生值注:sess ions是个派生值,由proc esses的值决定,公式ses sions=1.1*proce ss +52.通过修改o racle配置文件进行修改修改SPFIL EORCL.ORA文件中的pr ocess es 的值。
oracle调整方案
oracle调整方案Oracle 调整方案概述:在使用 Oracle 数据库的过程中,为了提高性能和优化查询效率,调整数据库配置和参数设置是一个重要的工作。
本文将介绍一些常见的Oracle 数据库调整方案,帮助您优化数据库性能。
一、硬件配置调整1. 增加内存:增加数据库服务器的内存可以提高数据库的性能,特别是在处理大量并发查询和高负载的情况下。
2. 增加硬盘容量:如果数据库的数据量持续增长,可以考虑增加硬盘容量,以确保数据库有足够的空间存储数据。
3. 使用高速磁盘:使用高速磁盘,如固态硬盘(SSD),可以提高数据库的读写速度和响应时间。
二、数据库参数调整1. SGA(System Global Area)调整:SGA 是 Oracle 数据库的内存区域,包括共享池、数据库缓冲区等。
可以通过调整 SGA 参数的大小来提高数据库的性能。
2. PGA(Program Global Area)调整:PGA 是每个连接到数据库的进程所使用的内存区域,可以通过调整 PGA 参数的大小来优化 SQL 查询性能。
3. 调整日志缓冲区大小:适当增加日志缓冲区的大小可以提高数据库的写入性能,特别是在大批量写入数据的情况下。
4. 调整查询优化器参数:Oracle 使用查询优化器来生成最优的执行计划。
通过调整一些查询优化器参数,如 optimizer_mode、optimizer_index_cost_adj 等,可以提高查询效率。
三、索引调整1. 分析索引的使用情况:使用 Oracle 提供的分析工具,如 Explain Plan,可以分析查询语句的执行计划和索引的使用情况。
根据分析结果,可以考虑删除不使用或者很少使用的索引,减少索引维护的开销。
2. 创建合适的索引:对于经常用于查询的列,可以创建合适的索引,提高查询性能。
但是要注意索引的数量和大小,过多或过大的索引会增加数据库的开销。
3. 索引压缩:对于大型表的索引,可以考虑使用 Oracle 提供的索引压缩功能,减少索引的大小,提高查询性能。
Linux内核参数及Oracle相关参数调整
Linux内核参数及Oracle相关参数调整修改内核参数的⽅法RedHat向管理员提供了⾮常好的⽅法,使我们可以在系统运⾏时更改内核参数,⽽不需要重新引导系统。
这是通过/proc虚拟⽂件系统实现的。
/proc/sys⽬录下存放着⼤多数的内核参数,并且设计成可以在系统运⾏的同时进⾏更改。
更改⽅法有两种:⽅法⼀:修改/proc/sys⽬录下的相应⽂件,⽐如:/proc/sys/net/ipv4/ip_forward,修改后⽴刻可⽤,不⽤重启系统,但重启系统,会恢复到默认值。
⽅法⼆:修改/etc/sysctl.conf ⽂件,该⽂件中以(变量=值)的形式设置内核参数,修改后,不能⽴刻⽣效,需要执⾏/sbin/sysctl –p 命令,使配置⽂件⽣效。
注意: /etc/sysctl.conf和/proc/sys下的⽂件其实都对应着⼀个参数,它们之间的对应关系,有简单规则:将/proc/sys中的⽂件转换成sysctl中的变量的规则:1.去掉前⾯部分/proc/sys2.将⽂件名中的斜杠变为点这两条规则可以将/proc/sys中的任⼀⽂件名转换成sysctl中的变量名。
例如:/proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward/proc/sys/kernel/hostname =》 kernel.hostname可以使⽤下⾯命令查询所有可修改的变量名例⼦:以打开内核的转发功能。
IP转发是指允许系统对来源和⽬的地都不是本机的数据包通过⽹络,RedHat默认屏蔽此功能,在需要⽤本机作为路由器、NAT等情况下需要开启此功能。
⽅法⼀:修改/proc下内核参数⽂件内容直接修改内核参数ip_forward对应在/proc下的⽂件/proc/sys/net/ipv4/ip_forward。
⽤下⾯命令查看ip_forward⽂件内容:# cat /proc/sys/net/ipv4/ip_forward该⽂件默认值0是禁⽌ip转发,修改为1即开启ip转发功能。
Oracle的session和process的区别与分析
Oracle的session和process的区别与分析session 和process的区别:连接connects,会话sessions和进程pocesses的关系每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。
session 和process的关系,tom在他的书里写的很清楚了一个process可以有0个,1个或者多个session一个session也可以存在这个或者那个process中oracle中session跟process的研究使用方法:首先看看v$session跟v$process中主要的字段属性:v$session(sid,serial#,paddr,username,status,machine,terminal,sql_hash_value,sql_addr ess,,,)v$process(addr,spid,,,)可看到v$session中的paddr跟v$process中的addr对应,也即会话session在数据库主机上对应进程的进程地址.这里我们要先定位该session正在执行的sql语句,此时我们可以查询如下的语句:select sql_textfrom v$sqltext_with_newlineswhere (hash_value,address) in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;若需手工kill一个session,可采用"alter system kill session 'sid,serial#' immediate",此时session的状态会标记为killed,该session对应进程地址指向相同的虚拟地址,见如下的查询:SQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2BADB28 INACTIVE245 14374 C0000000B2BAB748 INACTIVESQL> alter system kill session '234,14409' immediate;System alteredSQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2C750B8 KILLED245 14374 C0000000B2BAB748 INACTIVESQL> alter system kill session '245,14374' immediate;System alteredSQL> select sid,serial#,paddr,status from v$session where username='SHIYIHAI';SID SERIAL# PADDR STATUS---------- ---------- ---------------- --------234 14409 C0000000B2C750B8 KILLED245 14374 C0000000B2C750B8 KILLEDSQL>我们知道很多时候被kill掉的session并不能马上释放资源,我们需要从os上kill掉对应的进程,但由于session的paddr被修改为虚拟地址了,导致无法关联v$process,找不到进程的spid进程号.此时我们可以执行如下查询:SQL> SELECT ername,s.status,2 x.ADDR,x.KSLLAPSC,x.KSLLAPSN,x.KSLLASPO,x.KSLLID1R,x.KSLLRTYP,3 decode(bitand (x.ksuprflg,2),0,null,1)4 FROM x$ksupr x,v$session s5 WHERE s.paddr(+)=x.addr6 and bitand(ksspaflg,1)!=07 and s.status is null;USERNAME STATUS ADDR KSLLAPSC KSLLAPSN KSLLASPO KSLLID1R KSLLRTYP DECODE(BITAND(X.KSUPRFLG,2),0,------------------------------ -------- ---------------- ---------- ---------- ------------ ---------- --------------------------------------C0000000B2B58D08 0 0 0C0000000B2BA4688 298 9 4669 0C0000000B2BAB748 1 16 4675 197 EVC0000000B2BADB28 1 16 4675 197 EVSQL>或查询如下的语句:SQL> select p.addr from v$process p where pid <> 12 minus3 select s.paddr from v$session s;ADDR----------------C0000000B2BA4688C0000000B2BAB748C0000000B2BADB28SQL>从查询结果中可发现被kill掉的session对应的进程地址.然后通过进程地址来查询对应的进程号,见如下的查询:SQL> select spid from v$process where addr in('C0000000B2BAB748','C0000000B2BADB28');SPID------------13013 13015。
ORACLE数据库的参数调整(精)
ORACLE数据库的参数调整概述ORACLE数据库参数主要包括磁盘I/O,回滚段、RODO日志、SGA参数,适当调整ORACLE数据库的参数可以提高系统性能,但不恰当的调整也会降低系统的性能。
ORACLE数据库的参数,一部分可以通过执行SQL语句或ORACLE的工具DBA STUDIO调整,另外一部分则必须通过修改服务器上ORACLE的安装目录下的文件INIT.ORA来调整,INIT.ORA文件一般放在ORACLE安装目录\admin\ORACLE服务名\pfile下。
优化数据库磁盘I/O使用分布I/O减少磁盘竞争●将数据文件和redo log文件分开●减少与ORACLE无关的磁盘I/O避免动态空间管理如果数据库操作引起数据增加并超出了分配的表空间,ORACLE会自动扩展表空间,动态扩展会降低系统性能。
确定一段比较长的时期内数据的最大大小;选择存储参数值,使ORACLE分配足够大的分区,避免频繁自动扩展;调整Checkpoints一个checkpoint是ORACLE自动执行的一种操作,当检查点操作时,数据库中的所有缓冲区会写回磁盘,所有数据库的控制文件被更新。
Checkpoint频繁发生会加快数据库的恢复,但是增加了I/O次数,会降低系统的性能。
修改INIT.ORA文件中的参数LOG_CHECKPOINT_TIMEOUT和LOG_CHECKPOINT_INTERVAL ,增大这两个参数会减少I/O次数,提高系统性能。
调整LGWR和DBWn I/O调整LGWR I/O每次I/O写的大小依赖于LOG缓冲区的大小,该大小由LOG BUFFER 所设置,缓冲区太大会延迟写操作,太小可能导致频繁的小的I/O操作。
如果I/O操作的平均大小很大,那么LOG文件就会成为瓶颈,可以使用STRIPE REDO LOG文件避免这个问题。
调整INIT.ORA中的参数LOG_BUFFER以调节LOG缓冲区大小,把REDO LOG文件分为几个文件,放在不同的磁盘上。
Oracle系统参数调整和优化原则(精)
Oracle 系统参数调整和优化原则(来自时代朝阳数据库技术中心)粗略来讲,系统调整一般反映在下列方面:∙Shared Pool and Library Cache Performance Tuning(共享池和Library Cache):Oracle将SQL语句、存储包、对象信息和很多其他的项目保存在SGA中一个叫共享池(shared pool)的地方。
这个可共享的区域由一个成熟的高速缓存和堆管理器管理。
它有3个基本的问题要克服:o内存分配的单元不是个常量。
从池中分配的内存单元可能是从几个字节到几千个字节。
o在用户完成工作时,不是所有的内存都能够释放出来,因为共享池的目标是使信息最大程度的共享。
o没有一个象其他常规的高速缓存的文件做后备的存储那样磁盘空间供整页的导出。
只有可重新创建的信息可以从Cache中丢弃,在他被再次需要的时候再重新创建。
共享池调整的技巧有:o刷(Flush)共享池可以使小块的内存合并为大块的内存。
当共享池的碎片过多时,这能够暂时恢复性能。
刷共享池可以使用语句:alter system flush shared_pool;o注意执行这个语句将会造成性能的暂时尖峰,因为对象都要重新加载。
所以应当在数据库的负载不是很大的情况下进行。
o确保联机事务处理(OLTP)应用使用绑定变量(bind variables). 这一点对于决策支持系统(DSS)并不重要。
o确保library cache 的命中率> 95%o增大共享池并不总能解决命中率过多的问题。
∙Buffer Cache Performance Tuning(数据库缓存调整):数据库缓存保持了从磁盘上读去的数据块的备份。
因为缓存通常受到内存约束的限制,不是磁盘上所有的数据都可以放到缓存里。
当缓存满了的时候,后来的缓存不中使得Oracle 将已经在缓存中的数据写到磁盘上。
后续的对写到磁盘上的数据的访问还会造成缓存不中。
从缓存调整的角度看,应力求避免以下的问题:o'缓存的最近最少使用(LRN)链'('cache buffers LRU chain' )的加锁竞争o'平均写队列'("Average Write Queue" )长度过大o过多时间花在等待‘写完毕等待上’("write complete waits" )o过多时间花在等待‘缓冲释放等待’上("free buffer waits" )∙Latch Contention加锁(插销)竞争:插销加锁是SGA中保护共享数据结构的低层的串行化机制。
oracle processes参数
oracle processes参数
Oracle数据库中的processes参数是用来控制数据库实例的最大并发连接数的。
这个参数指定了可以同时连接到数据库的最大会话数量。
具体来说,processes参数控制了以下几个方面:
1. 连接数:processes参数决定了可以同时连接到数据库的最大会话数量。
每个会话都需要一个后台进程来处理,所以这个参数也相当于限制了数据库实例的最大后台进程数量。
2. 并发操作:每个会话可以执行多个并发操作。
但是由于资源限制,数据库可能无法同时处理所有的并发操作,所以processes参数也可以影响到数据库的并发能力。
可以使用alter system命令来修改processes参数的值,如下所示:
ALTER SYSTEM SET processes=100;
需要注意的是,修改processes参数的值可能需要重新启动数据库实例才能生效。
另外,增加processes参数的值也会增加数据库的内存消耗和CPU负载,所以需要根据硬件配置和数据库的需求来合理调整该参数。
修改oracleprocesses参数过大导致oracle启动不了解决方法
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 241769832 bytes
ORACLE 例程已经启动。
Total System Global Area 136911732 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
aq_tm_processes integer 1
db_writer_processes integer 2
job_queue_processes integer 10
数据库装载完毕。
数据库已经打开。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- --------
修改oracle processes参数过大导致oracle启动不了解决方法
由于系统偶尔会出现数据库连接异常,页面中已经有了数据库的关连接.后来发现oracle maximum(150) of processes的错误.
数据库装载完毕。
数据库已经打开。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SEMMNS参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。
SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010
select 1000*1.5+22 from dual;
--登录后台 sqlplus
alter system set processes=1000 scope=spfile;
alter system set sessions=1522 scope=spfile;
参数需求完成之后, 需要重启数据库才能生效, 此刻先不要重启, 等修改好操作系统内核中的信号量参数后再重启
select value from v$parameter where name = 'processes'; 取得进程数的上限。
select count(*) from v$session;
*/
--修改步骤
--1.查看当前正在运行的系统中的进程数和会话数
select count(*) from v$process;
使用命令 # ipcs -ls 看设置的信号量参数是否生效
/*
说明:
kernel.sem = 250 32000 100 128
SEMMSL SEMMNS SEMOPM SEMMNI
如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置
或者在 sqlplus 中这么看:
show parameter processes
show parameter sessions
--3. 修改数据库的 processes 和 session
--原则上是进程数量控制了client的连接数量 ,会话数应该大于进程数 ,
oracle11g R2之前:推荐公式 session数=process数*1.1+5
show parameter processes
show parameter sessions
select count(*) from v$session;
--2.查看数据库的配置的 processes值 和 sessions值
select value
from v$parameter where name = 'processes';
select value
from v$parameter where name = 'sessions';
oracle11g R2 推荐公式: 11gR2 Default value Derived: (1.5 * PROCESSES) + 22
对于oracle11g R2:
设置:
processes = 1000
则:sessions =1522;
SEMMSL :用于控制每个信号集的最大信号数量。
Oracle 建议将 SEMMSL 设置为 init.ora 文件(用于 Linux 系统中的所有数据库)中的最大 PROCESS 实例参数的设置值再加上 10 。此外, Oracle 建议将 SEMMSL 的值设置为不少于 100 。
SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数。
本篇文章来源于 Linux公社网站() 原文链接:/Linux/2011-11/48245.htm
上面的4个数据分别对应:SEMMSL、SEMMNS、SEMOPM、SEMMNI这四个核心参数,具体含义和配置如下。
SEMMNI议将 SEMMNI 的值设置为不少于 100 。
本篇文章来源于 Linux公社网站() 原文链接:/Linux/2011-11/48245.htm
[root@ebsse oracle]# cat /proc/sys/kernel/sem
5010 641280 5010 128
如需启动时自动应用,可在/etc/sysctl.conf增加或修改老配置为:
kernel.sem = 5010 641280 5010 128
修改好之后, 执行sysctl -p 使得内核参数生效
SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。
Oracle 建议将 SEMOPM 的值设置为不少于 100 。
/*
1.问题分析
oracle服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误'
问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小。
select count(*) from v$process; 取得数据库目前的进程数
--4. 修改操作系统中内核信号量参数
root登录
vi /etc/sysctl.conf
更改当前SEMAPHORES参数设置
[oracle@ebsse oracle]$ su
Password:
[root@ebsse oracle]# echo "5010 641280 5010 128" > /proc/sys/kernel/sem
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。
使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或 (SEMMSL * SEMMNI)
*/
--5. RHEL的内核参数修改完成,并且执行sysctl -p 之后, 重启数据库
sqlplus /nolog
conn /as sysdba
shutdown immediate
start
数据库启动成功之后, 看上面修改的processes 和 sessions 参数是否生效了