真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle線程怎么設置,oracle修改線程數(shù)

如何啟動與關閉Oracle 10g的服務或線程

從Oracle10g開始,Oracle極大的增強了OEM工具,并通過服務器端進行EM工具全面展現(xiàn)。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,寧城企業(yè)網(wǎng)站建設,寧城品牌網(wǎng)站建設,網(wǎng)站定制,寧城網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,寧城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

在10g中,客戶端可以不必安裝任何Oracle客戶端工具,僅憑瀏覽器就可以調(diào)用強大的EM工具。

在Server端,可以通過如下命令啟動EM工具控制臺:

emctl start dbconsole

以下是啟動過程:

[oracle@danaly ~]$ emctl start dbconsole

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Starting Oracle Enterprise Manager 10g Database Control .......................... started.

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

Logs are generated in directory /opt/oracle/product/10.2.0/.cn_danaly/sysman/log

啟動之后我們就可以通過在瀏覽器端輸入以下url訪問:

同樣停止OEM可以輸入如下命令:

emctl stop dbconsole

以下是停止過程:

[oracle@danaly ~]$ emctl stop dbconsole

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Stopping Oracle Enterprise Manager 10g Database Control ...... Stopped.

也可以直接鍵入emctl查看emctl支持的選項:

[oracle@danaly ~]$ emctl

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Invalid arguments

Unknown command option

Usage::

Oracle Enterprise Manager 10g Database Control commands:

emctl start| stop| status| setpasswd dbconsole

emctl secure

emctl set ssl test|off|on em

emctl set ldap

emctl blackout options can be listed by typing "emctl blackout"

emctl config options can be listed by typing "emctl config"

emctl secure options can be listed by typing "emctl secure"

emctl ilint options can be listed by typing "emctl ilint"

emctl deploy options can be listed by typing "emctl deploy"

oracle中在編寫存儲過程啟動多線程的問題?

樓上holly_866指出的方向是對的, 但是拼寫錯誤。。

ORACLE的多線程體現(xiàn)在DML上 在操作時, 如果見到/* +*/ (平時寫備注、評論塊的/**/符號中有加號, 那么則表明了使用Oracle Hint. /*+ parallel(表名,并發(fā)數(shù))*/ (有時候?qū)懽鰽ppend parallel,或者有時候直接寫Append) .

這里的并發(fā)數(shù)可以省略, 也可以自己規(guī)定。 如果是省略了, 那么它的設置是DBA完成的。 參數(shù)可以在V$parameter這個view里找到。

如果單純從開發(fā)的角度看:

ORACLE多線程可以提高某些語句查詢的速度(不是一定的,取決于你的核,和服務器, 我原本有一些材料可以圖示進程數(shù)和速度的關系,可惜一時找不到, 如果需要可以再聯(lián)系)。具體使用時, 做幾個測試 看看速率提高多少。比如我以前做數(shù)據(jù)倉庫時, 一個測試要用大概27分鐘, 2進程大概是23分鐘。 4進程開提高到了快22(21分50多秒)分鐘。 再提高進程數(shù)其實作用就遞減了。

從數(shù)據(jù)庫整體來看:

多線程并不是優(yōu)化了你的查詢速率, 而是使用了更多數(shù)據(jù)庫的資源(其他用戶或者進程的資源)換來你的語句速率的提高。 聯(lián)系一下你的DBA, 因為很有可能你用了多進程后,從DBA的EM上會發(fā)現(xiàn)你資源在某時間段內(nèi)用的很高,甚至會給出警告。 找DBA給你調(diào)一下進程數(shù),或者給你建議。 還是同樣的上次數(shù)據(jù)倉庫的例子。 我用8進程時, DBA和我一起在看EM, 出現(xiàn)了一些資源占用太多的情況, 那么他要么就要調(diào)整空間,要么就要討論下是否值得為了短短的幾分鐘而降低數(shù)據(jù)庫的其他運行效率。 如果非要需要, 那么看是否可以將這樣的數(shù)據(jù)更新放在晚上,或者數(shù)據(jù)庫比較空閑的時間段。

上面講的都是概念, 如果你想看詳細一點的運算方法,可以找書看, 我這里的資料可能需要整理,也不方便, 建議自己找一下。 不需要看的太多, 一般了解則可。

怎樣使用OCI編寫多線程的ORACLE應用軟件

void* OracleProcess(GPS_DATA GpsRec) // 數(shù)據(jù)庫數(shù)據(jù)處理

{

interval = 0;

struct HashItem* pHash;

pHash = inithashtable(MAX_REC2);

char sql[384] = {0};

char temp[256] = {0};

char tName[10] = {0}; // 表名字

int i,k;

int j = TotalRec RATE;

double distance;

for(i=0; i j; i++)

{

sprintf(temp,"%s%f%f%f%d",gps_last[i].tid,gps_last[i].lon,gps_last[i].lat,gps_last[i].speed,gps_last[i].udate);

InsertHash(temp, pHash, MAX_REC2); // 插入最后GPS信息到hash

memset(temp,0x00,256);

}

for(i = 0; i TotalRec; i++)

{

for(k=0; kj; k++) // 查詢車機是否在冊

if(strcmp(GpsRec[i].tid,tid[k]) == 0)

break;

if(k j)

{

if(GpsRec[i].udate != 0.00)

{

distance = InfoUpdate(GpsRec,i); // 最新GPS數(shù)據(jù)更新

sprintf(temp,"%s%f%f%f%d",GpsRec[i].tid,GpsRec[i].lon,GpsRec[i].lat,GpsRec[i].speed,GpsRec[i].udate);

if(GetHashTablePos(temp, pHash, MAX_REC2) == -1) // 查找hash是否存在

{

if (distance 0.0001)

{

sprintf(tName,"GPS_%d_Y",tf[k]);

InsertHash(temp, pHash, MAX_REC2); // 插入

sprintf(sql,"insert into %s (id,tm_id,lon,lat, speed, utc_time, udate,mileage,DIRECTION,DISTANCE) values (seq_gps.nextVal,'%s','%f','%f','%f','%d','%d','%f','%d','%f','%d')",

tName,GpsRec[i].tid,GpsRec[i].lon,GpsRec[i].lat,GpsRec[i].speed,GpsRec[i].utime,GpsRec[i].udate,GpsRec[i].mileage,GpsRec[i].dir,distance,interval);

printf("%s\n",sql);

oci_excu(oracle_env,(text *)sql,0); // 插入數(shù)據(jù)

memset(tName,0x00,10);

}

}

memset(sql,0x00,384);

memset(temp,0x00,256);

}

}

}

memset(GpsRec,0x00,sizeof(GpsRec));

free(pHash);

pthread_exit(NULL);

}

void TcpProcess(int tfd) // 處理TCP連接上的事務

{

struct timeval ntime;

int index = 0,times,ret;

int rlen = 0,rflag = 0;

char recvbuf[513] = {0};

bzero(recvbuf,513);

while(1)

{

ret = rlen = read(tfd,recvbuf,512);

if(rlen = 0)

break;

if((rlen%32) == 0) // 32長度為標準TCP信息

{

times = 0;

ret = 5;

while(ret--)

{

if(tflag[tfd] == tfd) // 已經(jīng)存在的socket

{

LOVENIX *info = (LOVENIX *)malloc(sizeof(LOVENIX));

memset(info,0x00,sizeof(LOVENIX));

if(recvbuf[times] == 0x58 || recvbuf[times] == 0x59)

ProtocolAnalysisLovenixTcp(recvbuf[times],info);

else if(recvbuf[times] == 0x24)

ProtocolAnalysisLovenixUdp(recvbuf[times],info);

sprintf(info-tid,"%s",seq[tfd]); // 合成車輛ID

DataProcess(info); // 處理GPS數(shù)據(jù)

free(info);

gettimeofday(ntime, NULL);

cntime[tfd] = ntime.tv_sec; // 更新時間

times += 32;

}

}

}

else if(rlen 32)

{

if(!rflag)

{

if((index = RegLovenix(tfd,recvbuf)) -1)

{

sprintf(seq[tfd],"%s",tid[index]); // 將對應的socket設備ID保存

gettimeofday(ntime, NULL);

sfd[tfd] = tfd;

cntime[tfd] = ntime.tv_sec;

tflag[tfd] = tfd;

rflag = 1;

}

}

}

if(rlen 512); // 已經(jīng)讀完

break;

memset(recvbuf,0x00,rlen);

}

}

void *TcpServer(void *arg)

{

int port = (unsigned int) arg;

int efd,i;

struct timeval ntime;

int listener, nfds, n, listen_opt = 1, lisnum;

struct sockaddr_in my_addr, their_addr;

socklen_t len = sizeof(their_addr);

lisnum = MAXLISTEN;

for(i=0; iMAX_REC; i++)

{

sfd[i] = 0;

tflag[i] = 0;

}

if ((listener = socket(PF_INET, SOCK_STREAM, 0)) == -1) // 開啟 socket 監(jiān)聽

{

lprintf(lfd, FATAL, "TCP Socket error!\n");

exit(1);

}

else

lprintf(lfd, INFO, "TCP socket creat susscess!\n");

setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, (void *) listen_opt,(int) sizeof(listen_opt)); // 設置端口多重邦定

setnonblocking(listener);

bzero(my_addr, sizeof(my_addr));

my_addr.sin_family = PF_INET;

my_addr.sin_port = htons(port);

my_addr.sin_addr.s_addr = INADDR_ANY;

if (bind(listener, (struct sockaddr *) my_addr, sizeof(struct sockaddr)) == -1)

{

lprintf(lfd, FATAL, "TCP bind error!\n");

exit(1);

}

else

lprintf(lfd, INFO, "TCP bind susscess!\n");

if (listen(listener, lisnum) == -1)

{

lprintf(lfd, FATAL, "TCP listen error!\n");

exit(1);

}

else

lprintf(lfd, INFO, "TCP listen susscess!\n");

kdpfd = epoll_create(MAXEPOLLSIZE); // 創(chuàng)建 epoll句柄,把監(jiān)聽socket加入到epoll集合里

ev.events = EPOLLIN | EPOLLET; // 注冊epoll 事件

ev.data.fd = listener;

if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, listener, ev) 0)

lprintf(lfd, FATAL, "EPOLL_CTL_ADD error!\n");

while (1)

{

sem_wait(sem_tcp); // 等待 sem_TCP

sem_wait(sem_tp); // 將tp值減一

nfds = epoll_wait(kdpfd, events, MAXEPOLLSIZE, 1); // 等待有事件發(fā)生

if (nfds == -1)

lprintf(lfd, FATAL,"EPOLL_WAIT error!\n");

for (n = 0; n nfds; ++n) // 處理epoll所有事件

{

if (events[n].data.fd == listener) // 如果是連接事件

{

if ((efd = accept(listener, (struct sockaddr *) their_addr,len)) 0)

{

lprintf(lfd, FATAL, "accept error!\n");

continue;

}

else

lprintf(lfd, INFO, "Client from :%s\tSocket ID:%d\n", inet_ntoa(their_addr.sin_addr) ,efd);

setnonblocking(efd); // 設置新連接為非阻塞模式

ev.events = EPOLLIN | EPOLLET; // 注冊新連接

ev.data.fd = efd;

if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, efd, ev) 0) // 將新連接加入EPOLL的監(jiān)聽隊列

lprintf(lfd, FATAL, "EPOLL_CTL_ADD error!\n");

else

{

gettimeofday(ntime, NULL);

cntime[efd] = ntime.tv_sec;

sfd[efd] = efd;

}

}

else if (events[n].events EPOLLIN)

tpool_add_work(pool, TcpProcess, (void*)events[n].data.fd); // 讀取分析TCP信息

else

{

close(events[n].data.fd);

epoll_ctl(kdpfd, EPOLL_CTL_DEL, events[n].data.fd, ev);

}

}

sem_post(sem_cm);

sem_post(sem_udp);

}

close(listener);

}

int DataProcess(LOVENIX *info) // 處理GPS數(shù)據(jù)

{

if(sflag == 0 (CacheRec != TotalRec)) // 緩存1可用且沒有滿

{

gps_cache[CacheRec].lat = info-lat;

gps_cache[CacheRec].mileage = info-mileage;

gps_cache[CacheRec].lon = info-lon;

gps_cache[CacheRec].speed = atod(info-speed, strlen(info-speed))*0.514444444*3.6;

gps_cache[CacheRec].udate = atoi(info-udate);

gps_cache[CacheRec].utime = atoi(info-utime);

gps_cache[CacheRec].dir = atoi(info-dir);

sprintf(gps_cache[CacheRec].tid ,"%s",info-tid);

CacheRec++;

// printf("CacheRec %d\tTotalRec %d \t sflag:%d\n",CacheRec,TotalRec,sflag);

if(CacheRec == TotalRec)

{

sflag = 1;

pthread_attr_init(attr); // 初始化屬性值,均設為默認值

pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM);

pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED); // 設置線程為分離屬性

if (pthread_create(thread, attr,(void*) OracleProcess,(void*)gps_cache)) // 創(chuàng)建數(shù)據(jù)處理線程

lprintf(lfd, FATAL, "oracle pthread_creat error!\n");

CacheRec = 0;

}

}

else if(sflag == 1 (Cache1Rec != TotalRec)) // 緩存2可用且沒有滿

{

gps_cache1[Cache1Rec].mileage = info-mileage;

gps_cache1[Cache1Rec].lat = info-lat;

gps_cache1[Cache1Rec].lon = info-lon;

gps_cache1[Cache1Rec].speed = atod(info-speed, strlen(info-speed))*0.514444444*3.6;

gps_cache1[Cache1Rec].udate = atoi(info-udate);

gps_cache1[Cache1Rec].utime = atoi(info-utime);

gps_cache1[Cache1Rec].dir = atoi(info-dir);

sprintf(gps_cache1[Cache1Rec].tid ,"%s",info-tid);

Cache1Rec++;

if(Cache1Rec == TotalRec)

{

sflag = 0;

pthread_attr_init(attr); // 初始化屬性值,均設為默認值

pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM);

pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED); // 設置線程為分離屬性

if (pthread_create(thread, attr,(void*) OracleProcess,(void*)gps_cache1)) // 創(chuàng)建數(shù)據(jù)處理線程

lprintf(lfd, FATAL, "oracle pthread_creat error!\n");

Cache1Rec = 0;

}

}

else

{

lprintf(lfd, FATAL, "No cache to use!\n");

return (0);

}

return (1);

}


分享標題:oracle線程怎么設置,oracle修改線程數(shù)
本文來源:http://weahome.cn/article/hdosoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部