背景
在前面的文章,我们了解了如何配置共享服务器,本文我们深入了解下如何配置共享服务器模式的一些细节信息,便于全面掌握共享服务器,为我们基于共享服务器配置大池奠定良好的基础。
结论
1,共享服务器模式和诸多参数有关,但参数shared_servers是必须要配置的2,共享服务器模式相关的参数有shared_servers,max_shared_servers,dispatchers,max_dispatchers,circuits
3,shared_server_sessions指定开启多少个共享服务器会话,可以把余下的SESSION资源用于专用服务器会话,因为像RMAN备份之类的不能使用共享服务器模式的会话
4,sessions源于processes,且2个参数enqueue_resources,transactions源于此2个参数,如果想调整,必须进行同步调整
5,在共享服务器模式下,建议把sessions配置为1.1*客户端的会话连接请求个数
6,v$session之server列有4个不同的值,分别为:dedicated,shared,none,pseduo,
如果共享服务器会话处理INACTIVE,则其值为NONE,如果正在ACTIVE,则其值为SHARED
7,如果要通过共享服务器模式建立通过TNSNAMES.ORA的会话,必须还要配置DISPATCHERS参数
8,配置调度器进程的原则是,一般10个客户端会话请求,对应一个调度器进程,同时还要考虑每天不同时间点业务负载的变化,进行动态调整调度器进程个数,以把资源用于其它用途
9,通过TNSNAMES.ORA连接数据库,须在此文件配置SERVER=SHARED,方可为共享服务器会话
10,关于调度器进程注册,可以通过LSNRCTL ,SERVICES进行查看
11,这个系列仍没有结束,下面的内容还在继续,力争把这块知识搞清晰
测试
1,与共享服务器模式相关的一些参数
a,shared_server 指定初始开启的共享服务器进程个数,且是开启服务器进程的最小个数,它是开启共享服务器进程的必须要配置的参数
b,max_shared_servers 指定可以同时运行的最大共享服务器进程的个数
c,shared_server_sessions 指定同时可以运行的共享服务器会话的个数,配置这个参数的目的,就是可以为专有服务器会话预留空闲会话资源
d,dispatchers 配置调度器进程
e,max_dispatchers 指定可以同时运行最大多少个调度器进程,此参数可以忽略配置。这个主要用于适应将来负载增加,可以根据并发连接的请求
动态调整开启多少个调度器进程。
g,circuits指定为来自网络的出入会话请求,可以产生多少个虚拟环路(概念是有些抽象,下面再详细熟悉这个概念的真正含义)
2,通过实例验证下上述的概念,加深理解
3,开启2个共享服务器进程
SQL> show parameter shared_servers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 2
shared_servers integer 2
---可见开启2个共享服务器进程,共享服务器以S打头,后附以数字后缀
SQL> host ps -ef|grep -i --color s00
ora10g 3840 1 0 23:00 ? 00:00:00 ora_s000_ora10g
ora10g 3842 1 0 23:00 ? 00:00:00 ora_s001_ora10g
4,只要配置shared_servers为0,即可禁用共享服务器
SQL> alter system set shared_servers=0;
System altered.
SQL> show parameter shared_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 2
shared_server_sessions integer 0
shared_servers integer 0
SQL>
[ora10g@seconary ~]$ ps -ef|grep -i --color s00
ora10g 5731 5233 0 00:10 pts/3 00:00:00 grep -i --color s00
[ora10g@seconary ~]$
5, ---shared_server_sessions默认值为空,我们下来主要测试下此参数与sessions参数的关系
SQL> show parameter shared_server_sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_server_sessions integer
----因为shared_server_sessions与sessions参数相关,所以查看sessions配置与processes的配置
先看看官方对于这2个参数的含义是什么
processes参数
A,默认值为100,它是一个静态参数,需要重启修改方可生效
B,RAC每个实例可以采用不同的配置
C,指定ORACLE可以同时创建多少个进程
D,到底要创建多少个进程,取决于所有的应用用户进程有多少个,比如像锁的个数和JOB QUEUE进程的个数以及并行执行产生的进程,把这些因素全要考虑进去
E,SESSIONS以及TRANSACDTIONS的默认值是源于此参数的,所以,如果你修改了此参数,一定要同时调整SESSIONS和TRANSACTIONS
也就是SESSIONS以及TRANSANCTIOS不会同时进行动态调整,需要你手工调整
sessions参数
A,默认值为(1.5*processes)+22
B,静态参数,修改需重启库
C,指定可以最大创建多少个会话
D,具体创建多少个会话取决于:同时在线的并会用户会话是多少,以及后后进程的个数,再加上大约10%左右的递归会话
E,由于ENQUEUE_RESOURCES以及TRANSACTIONS参数的默认值源于此参数,所以,如果你增加了此参数的值,也应该调整此2参数的值
F,从10G R2开始,参数ENQUEUE_RESOURCE已经废弃不用
G,在共享服务器模式下,注意啊,PROCESSES的值比较小(因为只用少量的共享服务器进程个数以及调度器进程个数即可以支持大量的客户端的会话请求)
所以,ORACLE建议把SESSIONS参数配置为最大客户端连接请求个数*1.1
也就是说在共享服务器模式下,sessions的大小要小于专有服务器模式的sessions
看过了概念,再看看上述相关参数的实际配置
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 170
---查看processes配置
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 150
--鉴于上述参数值过在,为了测试,我们调小上述参数的值各为processes=25,sessions=30
[ora10g@seconary ~]$ ps -ef|grep ora_|grep -v grep|wc -l
19
SQL> alter system set processes=25 scope=spfile;
System altered.
SQL> alter system set sessions=30 scope=spfile;
System altered.
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 1157627904 bytes
Fixed Size 2095800 bytes
Variable Size 352322888 bytes
Database Buffers 771751936 bytes
Redo Buffers 31457280 bytes
Database mounted.
Database opened.
可见sessions有个最小的值,即使你指定一个值
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 32
shared_server_sessions integer
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 2
processes integer 25
SQL>
SQL> show parameter shared_server_sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_server_sessions integer
SQL>
--server列可以区分会话是采用专有服务器模式还是共享服务器模式
SQL> select distinct server from v$session;
SERVER
---------
DEDICATED
--总的sessions=32,如果我们配置shared_server_sessions=14,我想你再建立2个专有服务器就会报错,
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 17
SQL> alter system set shared_server_sessions=14;
System altered.
shared_server_sessions为动态参数
SQL> show parameter shared_server_sessions;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_server_sessions integer 14
--新建专有服务器会话一直到20
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 20
--设置共享服务器会话为10,这样只余下2个会话可用于建立专有服务器模式
SQL> alter system set shared_server_sessions=10;
System altered.
--新的专有服务器会话就不能建立了
[ora10g@seconary ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.5.0 - Production on Tue Sep 22 23:59:34 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected.
--减少共享服务器会话的个数从10变成9,这时应该可以建立一个专有服务器会话,但事实还是不能建立,直到我把此参数变成0,也不成
SQL> alter system set shared_server_sessions=9;
System altered.
--换个角度,肯定是我哪里理解不对或配置不对,共享服务器模式,肯定是要通过tnsnames.ora
(还产生一个问题,如果参数原来没有值,如何在变更参数值,还原为无值情况呢,此问题先放这儿)
SQL> show parameter cir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
circuits integer
SQL>
--启动监听器
[ora10g@seconary ~]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 23-SEP-2015 00:14:26
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date 23-SEP-2015 00:14:03
Uptime 0 days 0 hr. 0 min. 23 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /home/ora10g/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secondary.redhat.com)(PORT=1521)))
Services Summary...
Service "ora10g" has 1 instance(s).
--查看配置tnsnames.ora
[ora10g@seconary ~]$ cd /home/ora10g/product/10.2.0/db_1/network/admin
[ora10g@seconary admin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /home/ora10g/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORA10G =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10g)
)
)
未通过TNSNAMES.ORA建立会话前
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 19
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:16:18 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> host
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:16:35 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
--通过TNSNAMES.ORA建立会话后,可见仍没有采用共享服务器模式
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 21
--肯定是哪里的参数没有配置完全或正确,想到是上述关闭了共享服务器进程以及配置可以建立的共享服务器会话为0,调整其2个参数的值
SQL> alter system set shared_servers=2;
System altered.
SQL> alter system set shared_server_sessions=5;
System altered.
可见已经启用了调器度进程及共享服务器进程
SQL> host ps -ef|grep -i --color s00
ora10g 5977 1 0 00:18 ? 00:00:00 ora_s000_ora10g
ora10g 6031 3779 0 00:20 pts/1 00:00:00 /bin/bash -c ps -ef|grep -i --color s00
SQL> host ps -ef|grep -i --color d00
ora10g 4832 1 0 Sep22 ? 00:00:00 ora_d000_ora10g
ora10g 6039 3779 0 00:20 pts/1 00:00:00 /bin/bash -c ps -ef|grep -i --color d00
SQL>
再次通过TNSNAMES.ORA建立会话报错了
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:20:59 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
ERROR:
ORA-12516: TNS:listener could not find available handler with matching protocol
stack
Enter user-name:
查看报错好像是说要在监听中注册调度器信息
SQL> host oerr ora 12516
12516, 00000, "TNS:listener could not find available handler with matching protocol stack"
// *Cause: None of the known and available service handlers for the given
// SERVICE_NAME support the client's protocol stack: transport, session,
// and presentation protocols.
// *Action: Check to make sure that the service handlers (e.g. dispatchers)
// for the given SERVICE_NAME are registered with the listener, are accepting
// connections, and that they are properly configured to support the desired
// protocols.
从监听器的注册信息来看,服务service ora10g没有看到调度器信息注册进来
[ora10g@seconary ~]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 23-SEP-2015 00:23:35
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> services
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "ora10g" has 1 instance(s).
Handler(s):
"DEDICATED" established:2 refused:0 state:ready
LOCAL SERVER
Service "ora10gXDB" has 1 instance(s).
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: seconary, pid: 4832>
(ADDRESS=(PROTOCOL=tcp)(HOST=secondary.redhat.com)(PORT=54385))
Service "ora10g_XPT" has 1 instance(s).
Handler(s):
"DEDICATED" established:2 refused:0 state:ready
LOCAL SERVER
The command completed successfully
所以肯定是调度器参数配置不正确,调整其配置即可
SQL> show parameter dispa
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=ora10g
XDB)
max_dispatchers integer 2
SQL> alter system set dispatchers='(protocol=tcp)(service=ora10g)';
System altered.
SQL> show parameter dispa
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (protocol=tcp)(service=ora10g)
SQL> alter system register;
System altered.
SQL> exit
你看这下服务ora10g里面有调度器信息了
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[ora10g@seconary ~]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 23-SEP-2015 00:26:29
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> services
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "ora10g" has 1 instance(s).
Handler(s):
"DEDICATED" established:2 refused:0 state:ready
LOCAL SERVER
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: seconary, pid: 4832>
(ADDRESS=(PROTOCOL=tcp)(HOST=secondary.redhat.com)(PORT=54385))
再次通过TNSNAMES.ORA连接即可成功
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:27:18 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> select count(*) from v$session;
COUNT(*)
----------
22
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 21
NONE 1
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:28:18 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 21
NONE 3
如果你建立TNSNAME.ORA就会报错了,会报ORA-00018,表明已经超过了可以建立的共享服务器会话的个数
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 23 00:29:27 2015
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded
6,从上述的v$session的server列,发现有值dedicated,none,我们来学习下这个列的几种取值,经查官方手册
有4个不同的取值
dedicated
shared
pseudo
none
即使通过TNSNAMES.ORA连接过来的会话,SERVER列为NONE,所以我想肯定与TNSNAMES.ORA配置有关,修改此文件,添加选项server
ORA10G =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora10g)
(server=shared)
)
)
再次通过TNSNAMES.ORA连接数据库,还是显示SERVER列为NONE
尝试重启监听试下,发现仍然没有用
lsnrtl stop
lsnrctl start
alter system register
经过BAIDU,发现如下文章:
http://blog.itpub.net/756652/viewspace-242505
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 20
NONE 4
如果共享服务器构建的会话正在工作,而非空闲,则对应哪个会话会由NONE变成shared
SQL> select count(*) from dba_objects,dba_objects;
SQL> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 20
NONE 3
SHARED 1
从会话状态列status也可以区分出来,就是说inactive时,共享服务器会话为none
如果为inactive,共享服务器会话为shared,所以这里有个体会,ORACLE的知识真是错综复杂
有时要解决一个问题,相关的知识点全要掌握,而且这个信息在官方手册也没有体现出来
需要你自己去思考
SQL> select server,status,count(*) from v$session group by server,status;
SERVER STATUS COUNT(*)
--------- -------- ----------
SHARED ACTIVE 1
DEDICATED INACTIVE 3
NONE INACTIVE 3
DEDICATED ACTIVE 17
7,我们学习如何配置共享服务器进程
A,为了启动共享服务器,必须配置1个共享服务器进程及1个调度器进程;
B,如果你没有显式配置调度器进程,数据库仍旧会启动1个调度器进程
C,为了考虑向前的兼容性,如果以PFILE启动数据库时,没有配置shared_server参数,但是配置了dispatchers,也会开启默认1个共享服务器,即shared_server=1
但是,如果SHARED_SERERS以及DISPATCHERS皆未配置,就不能开启共享服务器模式
D,在大多数据库配置环境中,每10个客户端会话,可以配置1个共享服务器进程;对于OLTP,每当客户端请求次数很低,或者对于数据库服务器的使用比率很低,可能连接到数据库服务器的个数就会很高;
相反的情况是,每当客户端请求次数很高,可能连接到数据库服务器的个数就很低。
E,如果你了解数据库的负载特征,可以最优配置参数SHARED_SERVERS
有个真实的例子:
比如你的数据库是一个电信级的数据库,最大有1000个应用要连接到数据库,这样你就可以根据C的原则,配置SHARED_SERVERS=100;
但是因为数据库一天的工作负载是有变化的,可能到了晚上只有200个应用要连接到数据库,此时可以配置SHARED_SERVRER=20
F,如果你减少SHARED_SERVER值,会由PMON回收处于INACTIVE状态的共享服务器进程,直到你由SHARED_SERVER指定的值
G,控制或限制共享服务器进程个数的原因:
G1,还要把一些比如CPU,内存资源用于其它专有服务器进程,比如:当时还在跑批应用
G2,如果本启共享服务器进程过多,也会产生严重的换页现象,引发性能不佳
G3,用于调试分析所用,比如:配置不同的MAX_SHARED_SERVERS值,从很小值到一个更大的值,目的就是看到多少值可以稳定支持特定用户个数的连接与响应,现象就是响应没有延迟
8,如何保护共享内存结构
这个与参数CIRCUITS有关,此参数无默认值,用于指定在共享内存可以最大创建多少个虚拟链路,如果未指定此参数,则按需创建,受限于DISPACHERS参数以及系统的资源,一般不建议指定其值
SQL> show parameter cir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
circuits integer
--circuits参数为动态参数
SQL> alter system set circuits=10;
System altered.
SQL> show parameter cir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
circuits integer 10
SQL>
9,如何配置调度器dispatchers
--官方说如果不显式指定dispatchers,仅指定shared_servers,数据库会创建默认的仅通讯协议的调度器,但无通讯地址
SQL> show parameter shared_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 2
shared_server_sessions integer 7
shared_servers integer 2
SQL>
SQL>
SQL>
SQL> show parameter dispa
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (protocol=tcp)(service=ora10g)
max_dispatchers integer 2
SQL> host ps -ef|grep -i --color d00
ora10g 4832 1 0 Sep22 ? 00:00:00 ora_d000_ora10g
ora10g 10452 6658 0 03:36 pts/1 00:00:00 /bin/bash -c ps -ef|grep -i --color d00
SQL> host ps -ef|grep -i --color s00
ora10g 5977 1 1 00:18 ? 00:03:20 ora_s000_ora10g
ora10g 6423 1 0 00:33 ? 00:00:00 ora_s001_ora10g
ora10g 10508 6658 0 03:39 pts/1 00:00:00 /bin/bash -c ps -ef|grep -i --color s00
--等同于配置dispatchers="(PROTOCOL=tcp)"
SQL> alter system set dispatchers='';
System altered.
SQL> show parameter dispa
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string
max_dispatchers integer 2
可见虽然没有配置dispatchers,但仍会启一个调度器进程
SQL> host ps -ef|grep -i --color d00
ora10g 4832 1 0 Sep22 ? 00:00:00 ora_d000_ora10g
但从监听服务来看,状态为BLOCKED,即不能接受新的连接请求
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
ERROR:
ORA-12520: TNS:listener could not find available handler for requested type of
server
LSNRCTL> services
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "ora10g" has 1 instance(s).
Handler(s):
"D000" established:0 refused:0 current:4 max:1022 state:blocked
DISPATCHER <machine: seconary, pid: 4832>
(ADDRESS=(PROTOCOL=tcp)(HOST=secondary.redhat.com)(PORT=54385))
恢复调度器参数配置后,即可正常连接数据库
SQL> alter system set dispatchers='(protocol=tcp)(service=ora10g)';
System altered.
[ora10g@seconary admin]$ sqlplus scott/system@ora10g
个人简介
8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院
河北廊坊新奥集团公司
项目经验:
中国电信3G项目AAA系统数据库部署及优化
中国联通4G数据库性能分析与优化
中国联通4G数据库性能分析与优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
国家电网上海灾备项目4 node rac+adg
贵州移动crm及客服数据库性能优化项目
贵州移动crm及客服务数据库sql审核项目
深圳穆迪软件有限公司数据库性能优化项目
贵州移动crm及客服数据库性能优化项目
贵州移动crm及客服务数据库sql审核项目
深圳穆迪软件有限公司数据库性能优化项目
联系方式:
手机:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
itpub博客名称:wisdomone1 http://blog.itpub.net/9240380/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1807316/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-1807316/