oracle RAC的进程们
GSD global services daemon (GSD)
与rac的管理工具dbca srvctl
oem进行交互,用来完成实例的启动关闭等管理任务。
为了保证这些管理工具运行正常必须在所有的节点上先start
gsd,并且一个GSD进程支持在
一个节点的多个rac.gsd进程位于$ORACLE_HOME/bin目录下,其log文件
为$oracle_home
/srvm/log/gsdaemon.log
例如:
假设使用oem工具来启动一个实例,oem把该
任务传递给相应的智能引擎,该智能引擎生成
一个包含SRVCTL命令的脚本文件,GSD进程读取该脚本文件并且执行该脚本,最后GSD把
执
行结果返回给智能引擎,近而智能引擎返回给OEM.
又例如假设使用srvctl工具关闭所有的实例,GSD进程接受来自SRVCTL工具发出的请
求,并
在本地节点上执行该请求,然后把执行结果返回给SRVCTL会话。
LMON:GLOBAL ENQUEUE SERVICE
MONITORLMON
主要监测群集内的全局队列和全局资源,管理实例和处理异常并相应的群集队列进行恢复操作。
LMD:GLOBAL
ENQUEUE SERVICE DAEMONLMD进程
主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例
的资源请
求。每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例
具有相应的权利使用该资源。一个实例(master)的共享内存中存
在一个特殊的队列,该队
列纪录来自其他远程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求
指向master实例的
LMD,当master实例的LMD进程受到该请求后,在共享内存中的特殊队列
中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状
态,并通知请求资源的
LMD进程该资源队列可以使用了,如果资源队列正在被其他实例使用或者当前无效,则
LMD进程通知正在使用中的实例
的LMD进程应该释放该资源,等资源释放变得有效时,
MASTER实例的LMD进程更新该资源队列的状态并通知请求资源实例的LMD进程该资源
队
列可以使用了。另外LMD进程也负责队列的死锁问题。。。
LMSn:GLOBAL CACHE SERVICE PROCESS(n
0~9)
LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块
镜像。LMS进程跨集群管理数据库的请求,
并保证在所有实例的BUFFER CACHE中一个
数据块的镜像只能出现一次。LMS进程靠着在实例中传递消息来协调数据块的访问,当
一
个实例请求数据块时,该实例的LMD进程发出一个数据块资源的请求,该请求只向
MASTER数据块的实例的LMD进程,MASTER实例的LMD
进程
相关文档:
作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表;
语法:
MERGE INTO [your table-name] [rename your table here]
USING ( [write your query here] )[rename your query-sql and using just like a table]
ON ([conditional expression here] AND [...]...)
WHEN MATHED THEN [here ......
具体步骤就不多说了 ,要导出的SQLSERVER表叫 LDJCUS,主键 Uid (int 自动增长列),导入到Oracle总报错:对象名无效 ,去掉主键列就可以,不知道为什么?难道自动增长的主键列就不能导入到Oracle中???疑惑。。。。 ......
下面是ORACLE行列转换通用存储过程:
1、
Function Fun_Split_Str(p_Str Varchar2, p_Division Varchar2, p_Seq Int)
Return Varchar2 Is
v_First Int;
v_Last Int;
Begin
If p_Seq < 1 Then
&nbs ......