新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在UNIX或者LINUX中可以比较方便的管理ORACLE运行的进程,但在WINDOWS中ORACLE的每个会话是采用线程的机制进行管理,所以通过普通的任务管理器不能查看到具体的ORACLE用户线程。
创新互联建站主营共青城网站建设的网络公司,主营网站建设方案,成都app软件开发,共青城h5微信小程序开发搭建,共青城网站营销推广欢迎共青城等地区企业咨询
当然,通过专用的线程管理工具是可以看到的,如WINDOWS附加工具箱中的Qslice(线程分析器)就可以。
windows里所有oracle事务统一由一个oracle.exe进程管理,pmon、smon等表现为oracle.exe内的线程。
linux系统里pmon、smon都是独立的进程。
线程是进程的组成部分,进程中的资源由多个线程共享。你可以把它们想象成:
进程是老大,手上有的是钞票、棍棒;
线程是他的小弟们,身无分文;
老大提供棍棒给小弟们出去办事,办事需要钱的时候由老大分配,小弟们抢来的钞票归老大统一支配。
楼上holly_866指出的方向是对的, 但是拼写错误。。
ORACLE的多线程体现在DML上 在操作时, 如果见到/* +*/ (平时写备注、评论块的/**/符号中有加号, 那么则表明了使用Oracle Hint. /*+ parallel(表名,并发数)*/ (有时候写作Append parallel,或者有时候直接写Append) .
这里的并发数可以省略, 也可以自己规定。 如果是省略了, 那么它的设置是DBA完成的。 参数可以在V$parameter这个view里找到。
如果单纯从开发的角度看:
ORACLE多线程可以提高某些语句查询的速度(不是一定的,取决于你的核,和服务器, 我原本有一些材料可以图示进程数和速度的关系,可惜一时找不到, 如果需要可以再联系)。具体使用时, 做几个测试 看看速率提高多少。比如我以前做数据仓库时, 一个测试要用大概27分钟, 2进程大概是23分钟。 4进程开提高到了快22(21分50多秒)分钟。 再提高进程数其实作用就递减了。
从数据库整体来看:
多线程并不是优化了你的查询速率, 而是使用了更多数据库的资源(其他用户或者进程的资源)换来你的语句速率的提高。 联系一下你的DBA, 因为很有可能你用了多进程后,从DBA的EM上会发现你资源在某时间段内用的很高,甚至会给出警告。 找DBA给你调一下进程数,或者给你建议。 还是同样的上次数据仓库的例子。 我用8进程时, DBA和我一起在看EM, 出现了一些资源占用太多的情况, 那么他要么就要调整空间,要么就要讨论下是否值得为了短短的几分钟而降低数据库的其他运行效率。 如果非要需要, 那么看是否可以将这样的数据更新放在晚上,或者数据库比较空闲的时间段。
上面讲的都是概念, 如果你想看详细一点的运算方法,可以找书看, 我这里的资料可能需要整理,也不方便, 建议自己找一下。 不需要看的太多, 一般了解则可。
查看ORACLE最大进程数:
SQL select count(*) from v$session #连接数
SQL Select count(*) from v$session where status='ACTIVE' #并发连接数
SQL show parameter processes #最大连接
SQL alter system set processes = value scope = spfile;重启数据库 #修改连接
unix 1个用户session 对应一个操作系统 process
而 windows体现在线程
------------------------------------------------------------------------------
修改ORACLE最大进程数:
使用sys,以sysdba权限登录:
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL alter system set processes=300 scope = spfile;
系统已更改。
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL create pfile from spfile;
文件已创建。
重启数据库,
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 300