EBS DBA指南笔记(二)
第三章 监控和诊断
本章涵盖以下几个主题:监测的方法,数据库的监测,apache的监测,forms的监测,并发管理器的监测,服务器的监测,网络的监测,其它的一些监测和诊断方法。
1.监测的方法:主要启用脚本来监测。
2.数据库的监测:alert.log日志非常重要。数据库的监听日志位于$TND_ADMIN目录下,如果监听遇到故障,我们可以在listener.ora设置追踪级别。如:
TRACE_LEVEL_[LISTENER] = [OFF | USER | ADMIN | SUPPORT]
TRACE_FILE_[LISTENER] = [trace file name]
TRACE_DIRECTORY_[LISTENER] = [path to directory]
TRACE_TIMESTAMP_[LISTENER] = [ON or TRUE | OFF or FALSE]
这里的LISTENER为监听器名称。 当我们遇到oracle的网络问题时,我们可以作以下设置来诊断故障:TRACE_LEVEL_[LISTENER] = ADMIN 在oracle support下我们也可以将这个值设置为SUPPORT。
3.查询占用CPU高的会话:
select ss.sid,ss.value CPU ,se.username,se.program
from v$sesstat ss, v$session se
where ss.statistic# in
(select statistic#
from v$statname
where name = 'CPU used by this session')
and se.sid=ss.sid
and ss.sid>6 -- disregard background processes
order by CPU;
解决会话高CPU占用率的方法:布置应用补丁,重写查询语句,收集统计信息,重建index。当我们在应用层取消了这个会话,我们还应该在DB,OS级确认这个会话进程是否消失了。
在EBS系统中会有很多JDBC thin client connections。oracle建议周期性的重启apache来断开这些连接。
4.查询持续时间长的会话:
#This script is used to monitor long running sessions
#Threshold is the number of days a session may be active
#in the database. For example, for an 36 hour threshold use 1.5.
THRESHOLD=$1
LOGFILE=/u01/oradev/DBA_TEST_SCRIPTS/long_running_$ORACLE_SID.log
sqlplus -s apps/apps << EOF
set heading off
spool $LOGFILE
select distinct '$ORACLE_SID - Long Running Sessions above
Threshold.'
from v\$session db_session,
v\$process process,
v\$session_wait wait
where process.addr = db_session.paddr
and db_session.sid = wait.sid
and type='USER'
and db_session.username is not null
and db_session.username not in ('SYS', 'SYSTEM')
and db_session.program not like 'JDBC%'
and logon_time<(sysdate - $THRESHOLD);
-- add data to logfile
select db_session.username,
db_session.osuser,
db_session.sid,
db_session.serial#
db_session.terminal,
wait.event,
db_session.program,
db_session.status,
to_char(logon_time,'dd-mm-yy hh:mi am') "LOGON"
from v\$session db_session,
v\$process process,
v\$session_wait wait
where process.addr = db_session.paddr
and db_session.sid = wait.sid
and type='USER'
and db_session.username is not null
and db_session.username not in ('SYS', 'SYSTEM')
and db_session.program not like 'JDBC%'
and logon_time<(sysdate - $THRESHOLD)
order by logon_time;
spool off
exit
EOF
RETURN_CODE=`grep "Threshold" $LOGFILE | wc -l`
if [ $RETURN_CODE -eq 0 ]
then
exit 0
else
exit 1
fi
对于EBS系统来讲,只要iAS一启动,JDBC thin client sessions就会存在,而且会自动根据应用增加。持续时间较长的session如果没有什么用处,可以考虑将它kill掉。
5.查找blocking session:blocking session锁定了一些资源而这些资源又是其它session需要的。我们可以查询v$lock这个视图,条件设置为:block>0.
6.存储的一些监控:表空间,数据文件,段的一些限制。注意单个文件的大小是受操作系统限制的,我们可以修改OS的参数来改变这种限制。查询表空间的剩余空间可以用dba_free_space这个数据字典。查询段的使用情况用dba_segments。
几条关于表空间的语句:
The following statement will alter a datafile to automatically extend:
alter tablespace [tablespace_name]
datafile '[path/datafile_name]' autoextend;
The following statement will alter a datafile to extend to a given size:
alter tablespace [tablespace_name]
datafile '[path/datafile_name]' size [size]M;
The following statement will add a datafile to the tablespace:
alter tablespace [tablespace_name] add
datafile '[path/datafile_name]' size [size]M;
在表空间建立的时候,尽可能设置uniform extents,pct_increase=0,这样有利于被删除的对象占用的extents,段被重用的效率增加。
改变段存储参数的命令:alter [object_type] [object_name] storage (maxextents [number]) example:SQL>alter table FND_USERS storage (maxextents 500);
SQL>alter table FND_USERS storage (maxextents UNLIMITED);
7.Apache服务器的监控和诊断:
apache日志的路径:$IAS_ORACLE_HOME/Apache/Apache/logs(有些版本是$APACHE_TOP); $IAS_ORACLE_HOME/Apache/Jserv/logs/jvm
当遇到问题时,我们需要开启debug的级别来获得更详细的日志信息,debug级别的打开可以用以下方法:
1. Set LogLevel to DEBUG in $IAS_ORACLE_HOME/Apache/Apache/conf/httpd.conf.
2. Set ApJservLogLevel to DEBUG in $IAS_ORACLE_HOME/Apache/Jserv/etc/jserv.conf.
3. Make the following changes to $IAS_ORACLE_HOME/Apache/Jserv/etc/jserv.properties:
• Add wrapper.bin.parameters=-Djbo.debugoutput=console
• Set log=true
• Set log.channel=true
• Set log.channel.info=true
• Set log.channel.debug=true
我们也可以指定debug_output参数来指定debug信息输出的位置。这个参数所在的文件在$IAS_ORACLE_HOME/Apache/Jserv/etc/ssp_init.txt中。
一定要记住在诊断完问题后要关闭debug开关,以免引起性能问题。
apache状态的检查:$APPLCSF/admin/scripts/*_hostname/adapcctl.sh status
验证iAS的配置可以用AOL/J工具来进行测试。5.10的版本可以用OAM。更多AOL/J的信息可以参考metalink文档:275875.1
http://erptest.nj.chervon.com:8020/OA_HTML/jsp/fnd/aoljtest.jsp --这时验证的URL,需要你输入一些信息,比如apps密码,数据库名,监听器端口等。进去后可以点击Enter AOL/J Setup Test按钮进入另外一个界面,这个界面可以验证dbc文件设置,web agent设置,servlet设置,x server设置等等。我们也可以通过OAM进入这个页面。
测试java servlet配置:可以用以下格式的URL来测试:http://erptest.nj.chervon.com:8020/oa_servlets/oracle.apps.fnd.test.HelloWorldServlet
监控jvm pool:5.10之前的版本可以用这个URL来监控:http://erptest.nj.chervon.com:8020/servlets/OAAppModPoolMonitor ;5.10开始不支持这个URL,取代它的是全局诊断按钮或OAM。使用全局诊断按钮时需要设置profile FND:diagnostic 为yes。OAM的路径为:site map -》monitoring -》JServ Usage
8.forms的监控和诊断:可以使用OAM,具体路径为:Site Map -> Monitoring -> Current Activity 可以看到forms session的一些详细信息。forms 的dump文件命名格式:f60webmx_dump_xxxx xxxx表示进程号。文件所在的路径:$COMMON_TOP/admin/log/*_hostname/f60webmx_dump_xxxx
9.并发管理器的监控。
监控并发管理器日志文件:log和out的路径:$APPLLOG,$APPLOUT
查看正在运行的并发请求:OAM或$FND_TOP/sql/afcmrrq.sql(这个脚本要用apps帐户在admin node上执行)
监测暂挂的并发请求:OAM或脚本(查询fnd_concurrent_requests)
取消正在运行的并发请求:我们可以在应用中取消,但有时候在数据库级的session还没有结束。这时你运行$FND_TOP/sql/afcmrrq.sql已经看不到这个请求。怎么处理这种情况?我们可以根据请求号来查询它的DB级的SID,脚本如下:然后kill这个session。我们也可以通过OAM来处理。
select r.request_id "Request ID",
s.sid "Session ID" ,
g.concurrent_program_name "Concurrent Program"
from applsys.fnd_concurrent_requests r,
applsys.fnd_concurrent_queues_tl qt,
applsys.fnd_concurrent_queues q,
applsys.fnd_concurrent_processes p,
applsys.fnd_concurrent_programs g,
v$session s
where r.controlling_manager=p.concurrent_process_id
and q.application_id=p.queue_application_id
and q.concurrent_queue_id=p.concurrent_queue_id
and qt.application_id=q.application_id
and qt.concurrent_queue_id=q.concurrent_queue_id
and r.phase_code='R'
and qt.language in ('US')
and p.session_id=s.audsid
and g.concurrent_program_id = r.concurrent_program_id
and r.request_id = &request_id
监测并发请求的运行时间:如果运行时间较长的并发请求阻碍了运行时间较短的并发请求,就要考虑增加并发管理器的数量了。长时间运行的并发请求DBA也需要关注,看看它是否正常。OAM可以很好的查询出哪些请求占用了较长时间,哪些请求占用的时间短。
10.服务器的监控和诊断。
CPU,内存,文件系统的监控。这里主要是UNIX系统管理员的任务。
11.网络的监控。
两个有用的命令:ping,tracert。 以系统管理员的身份进系统,应用-》网络测试 这个工具也可以测试网络。
12.其它关于监控和诊断的主题。
监控profile的改变:打patch的过程会有新的属性值覆盖旧的属性值或增加新的属性值。有些用户或管理员也会修改profile,但往往没有意识到这些修改对系统所带来的影响。DBA对这些就需要关注。下面这个脚本是用来监控profile改变的,我们可以定义一个阀值比如7天,来查看7内修改过的profile。
#Script used to monitor for application profile changes
#Threshold is the number of days to query for profile changes
#For example, if you set it to 7, all profile changes that
#have occurred in the past 7 days will be displayed.
THRESHOLD=$1
LOGFILE=/tmp/profile_changes_$ORACLE_SID.txt
sqlplus -s apps/apps << EOF
set heading off
spool $LOGFILE
select '$ORACLE_SID - Profile Changes Past '||
'Threshold of $THRESHOLD days - '||count(1)
from fnd_profile_option_values
where last_update_date > (sysdate-$THRESHOLD)
having count(1) > $THRESHOLD
union
select 'no rows'
from fnd_profile_option_values
where last_update_date <= (sysdate-$THRESHOLD)
having count(1) <= $THRESHOLD;
spool off
exit
EOF
RETURN_CODE=`grep "Threshold" $LOGFILE | wc -l`
if [ $RETURN_CODE -eq 0 ]
then
exit 0
else
exit 1
fi
我们可以通过fnd_profile_option_values,fnd_profile_options,fnd_user这三个表来确定被修改的profile属性是什么以及是被谁修改的。其中fnd_user的user_id=fnd_profile_option_values的LEVEL_VALUE。OAM提供了更好的图形查看方法。
解决JInitiator的问题:当客户端运行forms程序出问题时,可以尝试清空JAR cache。在控制面板里可以找到JInitiator的图标。我们也可以打开java的控制台来显示一些有用的信息。如果清空JAR缓存还不能解决问题,可能需要重新安装JInitiator。
13.监控与诊断的最佳实践
DBA需要主动,多了解系统的架构和EBS的工作原理,这样在遇到问题的时候才会快速定位。另外,需要对系统周期性的监测,防止问题的发生。
第四章 性能优化
1.性能优化的步骤。
收集信息-》指定优化步骤。
定位性能问题,DBA可以以问答的形式,收集一些信息。
问:性能问题是会经常性的重现还是没有任何规律?
问:性能问题是否只在某一场合(实例,情况)出现?
问:在同一网段的所有应用用户是否都遇到了性能问题?
问:性能问题的发生是否在指定的时间段发生?
问:是不是整个应用的性能都在下降?
问:是不是只有单个模块的性能在下降?
问:是不是只有单个用户遇到性能问题?
根据以上的问题发现问题并制定优化步骤,优化步骤以文档的方式体现。调优的过程也要求记录下来,如果以后遇到同样的性能问题可以作参考。
2.性能调优的工具。
性能调优可以分四大块:数据库,服务器,应用,用户。
数据库的调优:9i性能数据收集的工具有statspack。10g有AWR,ADDM. 在做statspack的时候有些阀值是可以调节的,EBS系统推荐以下这些阀值:
sql>exec statspack.snapshot ( -
>i_snap_level => 6, -
>i_executions_th => 1000, -
>i_parse_calls_th => 1000, -
>i_disk_reads_th => 10000, -
>i_buffer_gets_th => 100000, -
>i_sharable_mem_th => 1048576, -
>i_version_count_th => 20, -
>i_all_init => 'TRUE' -
>)
注意,做statspack的时候timed_statistics参数应该是TRUE。
分析statspack报表:这里不多讲了。
在10g里使用ASH(active session history):MMNL后台进程负责写session数据到内存,然后每隔一小时将内存的数据写到表。我们可以通过$ORACLE_HOME/rdbms/admin/ashrpt.sh这个脚本来查看ASH所搜集到的信息。我们也可以将ASH缓冲的内容DUMP到trac文件,语句如下:SQL>alter session set events 'immediate trace name ashdump level 10';
在10g里使用AWR(automatic workload repository):AWR通过MMON后台进程每隔60分钟收集性能数据,性能数据默认在系统保留一周。他不仅仅是statspack的代替,他还收集一些OS的信息。我们可以在v$OSSTAT这张视图看到。AWR收集的性能数据存放在sys的schema下,表空间为:SYSAUX。大约有100张表来存放这些信息,表的通用名为:DBA_HIST_%。通过EM我们也可方便的管理AWR,同时我们也可以使用DBMS_WORKLOAD_REPOSITORY包来管理。比如要修改快照间隔为两个小时一次,数据保留的时间为10天。可用以下方法:
sql>exec dbms_workload_repository.modify_snapshot_settings ( -
>interval => 120, -
>retention => 14400)
我们还可以创建快照的基线(baseline of snapshot)来比较不同基线的差别,从而确认性能问题。举个创建的例子:
sql>exec dbms_workload_repository.create_baseline( -
>start_snap_id => 1, -
>end_snap_id => 2, -
>baseline_name => 'Test')
最后我们可以运行awrrpt.sql来获得性能报告,这个脚本需要两个快照。sql>@$ORACLE_HOME/rdbms/admin/awrrpt.sql 这个报告可以人工分析也可以用oracle 10g提供的ADDM自动分析。
在10g使用ADDM(automatic database diagnostic monitoring):用ADDM来分析AWR收集的性能数据。addmrpt.sql这个脚本将产生一个ADDM报告。这个脚本的使用跟生成statspack报告有点相似,都需要输入开始和结束的AWR快照。而且如果期间数据库DOWN了,那分析出来的数据也就无效了。当然我们也可以手工的分析和产生这些报告,只要你有ADVISOR的权限使用DBMS_ADVISOR package。跟ADDM相关的视图有这样的通用名:DBA_ADVISOR_%。最后为了能让ADDM工作,我们需要在初始化参数里设置statistics_level=typic
or all。oracle推荐在进行数据库诊断的时候最好设置成all。
3.服务器的调优
top;sar;vmstat;ps
4.应用层的调优
应用层的调优主要包括以下几大组件:FORMS,APACHE SERVER,JSERV,CONCURRENT MANAGER.
FROMS调优:在服务器查看forms的进程:#ps -ef|grep f60webmx|grep PROD --假设PROD为instance。如果forms进程属于服务器top几的进程,我们就应该对他进行观察。可以进OAM界面进行查看,如果是无用的进程我们可以kill掉它或者是重新启动form server。当死连接存在服务器上的时候,froms的性能问题就显现出来了。我们可以设置FORMS60_TIMEOUT这个参数来控制死连接,这个参数的单位是分钟。还有个参数在做FORMS性能诊断的时候会用到:FORMS_CATCHTERM.将它的值设置为1表示将forms的错误dump到FORMS_TRACE_PATH这个目录下。它在context
file对应的值如下:
Context File Parameter Environment Variable Recommended Value
s_f60time FORMS60_TIMEOUT 10
s_f60catchterm FORMS60_CATCHTERM unset or 1
有时候EBS用户想取消forms的查询,这可以通过FND: Enable cancel query这个profile option来设置。如果没有设置想取消forms的查询就只能kill form session,如果值为yes,将弹出一个对话框,让用户选择取消。启用这个功能将会消耗client,middle-tier,db的一些CPU资源。跟这个功能有关的一些参数如下:
Environment Variable Value Description
FORMS60_LOV_INITIAL 1000–32000 Number of milliseconds until the
cancel query button appears to the user.
FORMS60_LOV_MINIMUM 1000–32000 Value in milliseconds between polling of the client from the
middle tier to check whether the query cancel dialog box should be
popped. Recommended values are 1000–5000
FORMS60_LOV_WEIGHT 0–32000 Value used to assist in determining network latency, in order
to adjust the polling period.
这三个参数必须设置在$APPL_TOP/<SID>.env里面。如果你使用了Forms Servlet Listener,也可以设置在formservlet.ini文件里。
举例:export FORMS60_LOV_INITIAL=32000
export FORMS60_LOV_MINIMUM=5000
export FORMS60_LOV_WEIGHT=0
要想参数生效记得重启forms server。为避免被autocfg覆盖,请添加到context file里。
在formservlet.properties文件里MAXBLOCKTIME的值必须大于maximum query polling interval的值。默认值是1000ms。特别是使用Forms Servlet Listener的时候这是必须的,否则会占用大量的CPU,引起性能下降。
apache的调优:LogLevel=warn SSLLogLevel=warn这时建议的设置,详细的日志记录会导致性能下降。缓存一些非HTML的对象也有助于apache性能的提升。如果使用了autocfg缓存的指令会自动设置。或者你也可以在httpd.conf文件或apps.conf文件里设置。例如:
# enable caching for OA_HTML/cabo/jsLibs
#
<Directory substitute_path_to_OA_HTML/cabo/jsLibs>
ExpiresActive On
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
</Directory>
JServ的调优:JServ进程是httpd进程的子进程,它的日志级别也应该和apache保持一致,以下是推荐值:
jserv.conf:
ApJServLogLevel warn
jserv.properties:
Log=false
Log.channel.info=false
Log.channel.debug=false
Log.channel.warning=true
ssp_init.txt:
Debug_switch=OFF
FND: View Object Max Fetch Size这个配置文件可以限制HTML应用返回给用户的行数。如果这个值大于200,JServ的内存将会耗尽。如果200这个值对你来说不够,那么可以在应用层设置这个配置文件大于200。
zone.properties文件里的session.timeout参数如果值大于30MIN,将导致性能的下降。根据用户最低接受需求合理的设置这个值。
如果JServ日志或浏览器报:out of memory 说明jvm的内存使用已达到了极限,我们需要调整jvm heap memory 这个值在jserv.properties里面,如下所示:wrapper.bin.parameters=-mx(new_size)m
zone.properties文件里的autoreload.classes默认值是true应该改成false以提高性能。
在重启apache或删除缓存的时候,缓存的东西需要重构,这也将导致性能下降。我们可以在zone.properties里设置以下参数来缓存经常使用的类:
#servlets.startup=oracle.apps.fnd.framework.OAStartupServlet --默认是注释的,可以解除注释。
JDK版本的提升往往会带来性能的提升。
修改了以上参数记住在context file里也修改,以免autocfg的覆盖。
并发管理器的调优:job的调度很重要,要避免在业务高峰期跑一些运行时间较长的请求。如果性能问题跟某个特定的并发管理器有关而且与之相关的CPU占用率很高,说明你系统的ICM sleep time的值设置的较低,关于设置的信息可以查看metalink Note 178925.1
用户的调优:Help ➤Diagnostics Menu ➤Client System Analyzer.
可以查看客户端的详细信息。
5.trace file:产生和分析跟踪trace文件是性能调优的重要手段。
生成forms的trace file:确认一些配置文件的设置:Hide Diagnostics menu entry=no;Utilities: Diagnostics=yes。登录应用选择Help ➤Diagnostic ➤Trace ➤Trace with Binds and Waits menu option.
Help ➤Diagnostics➤Trace ➤Unlimited Trace File Size --这个选项在10.5.2的版本找不到。这样就打开了FORMS的跟踪文件,跟踪文件会在db的udump下产生。
生成自己的trace file: profile-》system 选择user并输入自己的用户名,然后设置FND: Diagnostics=yes。然后用这个用户登录,设置trace级别就可以了。然后使问题重现,这样就会产生trace文件了。
6.分析trace文件:分析工具tkprof,trcanlzr。
tkprof:$tkprof <raw trace file name> <output filename> explain=apps/<apps password>
数据库的初始化参数_user_files_public可以设置trace文件的访问权限除了instance owner外其它的用户也可以访问并使用tkprof分析它。
trcanlzr:跟tkprof一样,但产生的报告是HTML形式的。这个工具需要从oracle support那下载,并进行安装。具体请参考MetaLink Note 224270.1
7.10g里分析SQL语句:
SQL Tuning Advisor:SQL调优专家,进入EM可以看到。我们也可以用DBMS_SQLTUNE package来手工进行。举个例子:
sql>exec dbms_sqltune.create_tuning_task( -
>sql_text => 'select * from emp where emp_id=101', -
>user_name => 'SCOTT', -
>scope => 'COMPREHENSIVE', -
>time_limit => 60, -
>task_name => 'tune_emp', -
>description => 'Task to tune a query on the EMP table')
sql>exec dbms_sqltune.execute_tuning_task (task_name => 'tune_emp')
sql>select dbms_sqltune.report_tuning_task('tune_emp') from dual;
SQL Access Advisor:SQL Tuning Advisor用来调整单个SQL,处理多个SQL的使用用这个工具。一组被调优的查询语句被称为SQL Tuning Set。除了进EM使用这个工具,也可以手工执行。
8.性能调整的其它一些选项:参考书146页。
9.普通的性能问题:一些预防性的维护工作没有做好往往会导致性能问题。这其中包括统计数据的收集,编译无效对象。通常用户使用一项新的功能的时候,如果没有做压力测试直接在生产上使用往往会导致性能问题。
10.性能调整的最佳实践
一些patches和最新版本的technology stack往往会提高应用的性能。MetaLink Note 244040.1专门介绍oracle推荐的能使性能提高的一些patches。建议看看。
EBS DBA指南笔记(二)的更多相关文章
- EBS DBA指南笔记(一)
第一章 ORACLE APPLICATIONS 的组件与架构 1.ebs组件的几大构成:客户端,form server,web server,concurrent processor,数据库.每个组 ...
- EBS DBA指南笔记(三)
第五章 patching patch的作用:解决应用代码的问题:安装新的特征:更新technology stack组件.打patch不是一个简单的过程,但我们也没必要深究里面每个细节. EBS的p ...
- Http权威指南笔记(二) Http状态码大全
100~199—信息状态码 200~299—成功状态码 客户端发请求时,这些请求通常都是成功的. 300~399—重定向状态码 重定向状态码告知客户端使用代替位置来访问他们所感兴趣的资源. 400~4 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Oracle EBS R12经验谈(二)
作者: jianping.ni 时间: 2009-2-13 12:52 标题: Oracle EBS R12经验谈(二) OAF页面:银行帐户开户人LOV值列表无值 在输入 应付超 ...
- Go指南 - 笔记
Go指南 - 笔记 标签(空格分隔): Go Go指南 一.基础 1.包 每个Go程序都是由包构成的. 程序从main包开始运行. 包名与导入路径的最后一个元素一致 2.导入 分组导入:使用圆括号组合 ...
- MLlib1.6指南笔记
MLlib1.6指南笔记 http://spark.apache.org/docs/latest/mllib-guide.html spark.mllib RDD之上的原始API spark.ml M ...
- 纯JS实现KeyboardNav(学习笔记)二
纯JS实现KeyboardNav(学习笔记)二 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 这篇主要是添加css,优化js编写逻辑和代码排版 GitHub项目源码 ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
随机推荐
- js登录,回车登录
$(document).ready(function(){ $("#loginBtn").click(doLoginEvent); loadCookies(); //回车登录 do ...
- IOS JavaScriptCore介绍
本文主要转自:https://www.jianshu.com/p/cdaf9bc3d65d http://blog.csdn.net/u011993697/article/details/515772 ...
- Mysql--开篇&目录
Mysql 现在是互联网公司中使用得非常广泛的数据库产品了,开源.免费.小巧.易用等诸多特性奠定了其夯实的基础.自己从事 JavaWeb 也有一段时间了,工作中也是用的 Mysql,也会涉及到分析.慢 ...
- 查询优化--小表驱动大表(In,Exists区别)
Mysql 系列文章主页 =============== 本文将以真实例子来讲解小表驱动大表(In,Exists区别) 1 准备数据 1.1 创建表.函数.存储过程 参照 这篇(调用函数和存储过程批 ...
- localeCompare() 方法实现中文的拼音排序
google了很多次才发现在国外网站上有提示如何比较中文,原文地址:http://www.webdeveloper.com/forum/showthread.php?t=9365 前提:使用Unico ...
- exp和imp的工作原理
--1.exp和imp的输入都是名字和值对: 如:exp parameter_name=value 或exp parameter_name=(value1,value2,value3..) --2.e ...
- python中修改字符串的几种方法
在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符.因此改变一个字符串的元素需要新建一个新的字符串.常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用join组 ...
- Linux下使用MD5加密BASE64加密
这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...
- Linux块设备加密之dm-crypt分析
相关的分析工作一年前就做完了,一直懒得写下来.现在觉得还是写下来,以来怕自己忘记了,二来可以给大家分享一下自己的研究经验. 这篇文章算是<Device Mapper代码分析>的后续篇,因为 ...
- Linux文件格式化与相关处理及sed工具
http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...