darda oracle tfa_OSW - feiyun8616 - 博客园
OSWatcher 工具
下载文档 :Metalink Doc ID 301137.1
Oswatcher 主要用于监控主机资源,如CPU,内存,网络以及私有网络等.其中私有网络需要单独配置.
需要说明的执行OSWatcher用户需要常见OS 命令 的执行权限.
如下所述.
OSW will need access to the OS utilities: top, vmstat, iostat, mpstat, netstat,and andtraceroute.These OS utilities need to be install on the system prior to running OSW. Execute permission on these utilities need to be granted to the user of OSW.
支持的平台有:
AIX
Tru 64
Solaris
HP-UNIX
Linux
tar zxvf 解压osw安装文件*.tar.gz
osw相应的脚本工具
l 运行Oswatcher
开始运行osw
运行OSWatcher.sh脚本,这个脚本包括两个参数
参数1:快照时间间隔,单位为秒
参数2:快照记录保持的时间,单位为小时
如,用nohup在后台运行osw:
nohup
sh OSWatcher.sh 10 36 &
l 查看osw运行数据
osw运行后在osw的安装目录中会创建archive目录,目录中包括IOSTAT/VMWAT/TOP/等数据
l 中止Oswatcher
使用stopOSW.sh脚本
例1
表示60s 搜集1次,保存10小时
./startOSW.sh 60 10
例2
默认是30s搜集1次,保存24小时
./startOSW.sh
例3
默认60s搜集1次,保存10小时
nohup ./startOSW.sh 60 10
&
l 配置私有网络监控
如果需要监控私有网络,可以使用Exampleprivate.net 的参考,建立private.net ,并且给予执行权限,并且使用下面的内容拷内进去,之后运行Oswatcher 即可 . 不同操作系统的建立方法不一样.参见如下:
chmod 777 private.net
d
######################################################################
#Solaris Example
######################################################################
echo "zzz
***"`date`
traceroute -r -F node1
traceroute -r -F node2
######################################################################
#HP Example
######################################################################
echo "zzz
***"`date`
traceroute -r -F node1
traceroute -r -F node2
######################################################################
#Linux Example
######################################################################
echo "zzz
***"`date`
traceroute -r -F node1
traceroute -r -F node2
######################################################################
#Tru64 Example
######################################################################
echo "zzz
***"`date`
traceroute -r -f node1
traceroute -r -f node2
######################################################################
#AIX Example
######################################################################
echo "zzz
***"`date`
traceroute -r node1
traceroute -r node2
######################################################################
# DO NOT DELETE THE FOLLOWING
LINE!!!!!!!!!!!!!!!!!!!!!
#
######################################################################
rm locks/lock.file
可以使用下面命令收集间隔1小时OSWatcher 日志。
#cd
/opt/oracle.oswatcher/osw/archive
###for linux
#find . -name "*12.09.14.1[6-7]*" -exec zip /tmp/osw_`hostname`_120914_1617.zip {} \;
<
###for aix “” |“” 的 stdout 放在第二句的 最后 {}
find . -name "*18.09.11.0[0-2]*" |xargs tar -cvUf /tmp/osw_`hostname`_180911_0002.tar
#find . -name "*12.09.14.1[6-7]*" |xargs tar crvf /tmp/osw_`hostname`_120914_1617.tar
<
###hp
find . -name "*18.09.1[0-6].*" |xargs tar -cvf /tmp/osw_`hostname`_180911_0002.tar
find . -name "*18.09.1[0-6].*" |xargs tar -rvf /tmp/osw_`hostname`_180911_0002.tar
############解析OSW
五、启动OSWg.jar,以便调用图形界面
将路径切换到osw目录下:$cd /home/oracle/osw
然后执行以下语句:$java -jar OSWg.jar -i /home/oracle/osw/archive --这里要找到archive目录
--一般建议分析1个小时OSW 即可,太多时间,图标不准
注意:
1.在执行过程中,要想退出图形界面,要按Q键来退出;
2.若要想退出osw(即startOSW.sh),停止OSW 服务,通过stopOSW.sh来完成../stopOSW.sh 或者 ./stopOWSbb.sh
#############设置OSW 自动启动脚本。(if 判断后台启动 的 cron)
1.vi OSW_init.sh
##default 30s 搜集1次, keep 360 or 120小时
#!/bin/ksh
#Program : OSW_init.sh
#Author :
#Document : This is the main program,checks OSW stat staus
#
SYSTEM=`uname -s` #;qH!2YWwO5M3@`PM
SCRIPTLOC=/orabak/oswbb/oswbb
export SCRIPTLOC
db_stat=`ps -ef | grep pmon | grep -v grep| cut -f3 -d_ |wc -l`
if [ $db_stat -eq 0 ];then
exit 1
fi
if [ $SYSTEM = "Linux" ] ; then
echo "Linux"
osw_stat=`ps -ef|grep OSW|grep -v grep| wc -l`
osw_chk=`expr $osw_stat`
if [ $osw_chk -eq 3 ]
then
cd $SCRIPTLOC
$SCRIPTLOC/OSWatcher.sh 30 360
fi
elif [ $SYSTEM = "HP-UX" ] ; then
echo "HP-UNIX"
`ps -ef|grep OSW|grep -v grep >/tmp/2.log`
osw_stat=`ps -ef|grep OSW|grep -v grep| wc -l`
osw_chk=`expr $osw_stat`
if [ $osw_chk -eq 2 ]
then
cd $SCRIPTLOC
$SCRIPTLOC/OSWatcher.sh 30 360
fi
else
echo "Unix"
`ps -ef|grep OSW|grep -v grep >/tmp/2.log`
osw_stat=`ps -ef|grep OSW|grep -v grep| wc -l`
osw_chk=`expr $osw_stat`
if [ $osw_chk -eq 1 ]
then
cd $SCRIPTLOC
$SCRIPTLOC/OSWatcher.sh 30 360
fi
fi
echo "OSW exec result $?\n" >> /tmp/osw/osw.log
exit 0
#######
2.
chmod 770 /orabak/oswbb/oswbb/OSW_init.sh
3.crontab -e
38 14 * * * sh /orabak/oswbb/oswbb/OSW_init.sh
###38 14 * * * sh /orabak/oswbb/oswbb/OSW_init.sh 2>&1
notice :
check if log is ok , file is under /orabak/oswbb/oswbb/archive/oswtop/*.dat
########
###########sample :
31 16 * * * sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log
unix AIX: 使用cron fork 出一个OSW进程
[root@nbutest1:/]# ps -ef|grep OSW
root 11862018 19202296 0 Nov 30 - 0:32 /bin/sh ./OSWatcherFM.sh 360 /oradata/oswbb/oswbb/archive 《— 第三级子进程
root 12910804 21889042 0 16:02:00 pts/5 0:00 grep OSW
root 19202296 29818988 0 Nov 30 - 1:14 /bin/sh /oradata/oswbb/oswbb/OSWatcher.sh 30 360
root 29818988 6815964 0 Nov 30 - 0:00 sh /oradata/oswbb/oswbb/OSW_init.sh
[root@nbutest1:/]# ps -ef|grep 6815964
root 6815964 1 0 Sep 15 - 0:53 /usr/sbin/cron
root 29818988 6815964 0 Nov 30 - 0:00 sh /oradata/oswbb/oswbb/OSW_init.sh
root 32833782 21889042 0 16:03:07 pts/5 0:00 grep 6815964
linux: 使用cron fork 出3个OWS进程
[root@nbutest:/orabak/oswbb/oswbb]# more /tmp/2.log
root 10127 10126 0 16:26 ? 00:00:00 /bin/sh -c sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log
root 10128 10127 0 16:26 ? 00:00:00 sh /orabak/oswbb/oswbb/OSW_init.sh
root 10136 10128 0 16:26 ? 00:00:00 sh /orabak/oswbb/oswbb/OSW_init.sh
[root@nbutest:/orabak/oswbb/oswbb]# ps -ef|grep 10126
root 10126 5076 0 16:26 ? 00:00:00 crond
unix HP-UNIX 使用cron fork 出2个OSW进程
[root@nbutest2:/]# more /tmp/2.log
root 20751 6990 2 16:31:00 ? 0:00 sh -c sh /orabak/oswbb/oswbb/OSW_init.sh > /tmp/1.log
root 20752 20751 0 16:31:00 ? 0:00 sh /orabak/oswbb/oswbb/OSW_init.sh
####201912 更新 TFA 自动初始化 OSW
https://blogs.oracle.com/database4cn/tfa
https://www.cnblogs.com/DataArt/p/10018773.html
通过检查发现,11G RAC PSU 201810 后的 和12C RAC,会自动集成TFA 运行在系统上.
存储目录是放在GI_HOME目录下,默认是每30秒执行一次,保留时间为48小时(2天)
所以新版本rac 11G PSU 201810或者12c rac 不需要部署OSW_init.sh.
配置信息如下:
[root@pDBdb02:/home/root]# /DB/DB/grid/11.2.0/bin/tfactl
tfactl> toolstatus
.----------------------------------------.
| External Support Tools |
+-----------+--------------+-------------+
| Host | Tool | Status |
+-----------+--------------+-------------+
| pDBdb02 | alertsummary | DEPLOYED |
| pDBdb02 | exachk | DEPLOYED |
| pDBdb02 | ls | DEPLOYED |
| pDBdb02 | pstack | DEPLOYED |
| pDBdb02 | orachk | DEPLOYED |
| pDBdb02 | sqlt | DEPLOYED |
| pDBdb02 | grep | DEPLOYED |
| pDBdb02 | summary | DEPLOYED |
| pDBdb02 | prw | NOT RUNNING |
| pDBdb02 | vi | DEPLOYED |
| pDBdb02 | tail | DEPLOYED |
| pDBdb02 | param | DEPLOYED |
| pDBdb02 | dbglevel | DEPLOYED |
| pDBdb02 | darda | DEPLOYED |
| pDBdb02 | history | DEPLOYED |
| pDBdb02 | oratop | DEPLOYED |
| pDBdb02 | oswbb | RUNNING |
| pDBdb02 | dbperf | DEPLOYED |
| pDBdb02 | changes | DEPLOYED |
| pDBdb02 | events | DEPLOYED |
| pDBdb02 | ps | DEPLOYED |
| pDBdb02 | srdc | DEPLOYED |
'-----------+--------------+-------------'
tfactl>
进程信息如下:
[grid@pDBdb02:/home/grid]$ ps -ef|grep OSW
grid 10551620 1 0 Nov 16 - 3:32 /bin/sh ./OSWatcher.sh 30 48 NONE /DB/DB/app/grid/tfa/repository/suptools/pDBdb02/oswbb/grid/archive
grid 9306984 10551620 0 Nov 16 - 1:55 /bin/sh ./OSWatcherFM.sh 48 /DB/DB/app/grid/tfa/repository/suptools/pDBdb02/oswbb/grid/archive
############部署OSW
### tar 的使用 http://www.cnblogs.com/feiyun8616/p/6180056.html
######the script is used to for deploy osw,it will prompt the password and yes
######保留时间360hours, 每隔30second 收集一次
cd /orabak
mkdir oswbb
--scp root@10.200.210.187:/backup/dba/oswbb810.tar /orabak/oswbb
ftp -v -n 10.200.210.187 << END
user root 123456
binary
hash
prompt
cd /orabak/oswbb
lcd /backup/dba/
get osw*.tar
bye
END
cd oswbb
tar xvf *.tar
cd oswbb
mkdir /tmp/osw
nohup /orabak/oswbb/oswbb/OSWatcher.sh 30 360 &
notice:
when tar xvf *.tar ,it will report below info, please ignore
tar: Read 6874 bytes from oswbb810.tar
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
###########paackage and ansylst osw data
method 1:
##########step 1 collect osw data in source
###below parameter is for yy(t1),mm(t2),dd(t3),T(t4),T(T5) ,就是17年11月20日22到23点
export t1=17
export t2=11
export t3=20
export t4=0
export t5="2-3"
export db=esb
mkdir /tmp/dba
cd /orabak/oswbb/oswbb/archive
###view 2017 11/20 2点到3点 osw 日志 , linux zip
#find . -name "*17.11.20.2[2-3]*" -exec zip \
#/tmp/osw_`hostname`_171120_0203.zip {} \;
for linux
find . -name "*$t1.$t2.$t3.$t4[$t5]*"|xargs tar -crvf /tmp/dba/osw_`hostname`_`date '+%y%m%d'`.tar
###for every day data
####find . -name "*$t1.$t2.*.$t4[$t5]*"|xargs tar -crvf /tmp/dba/osw_`hostname`_`date '+%y%m%d'`.tar
gzip /tmp/dba/osw_`hostname`_`date '+%y%m%d'`.tar
####step 2: upload data to 10.200.210.187 /orabak/oswbb/archive/anaylst
ftp -v -n 10.200.210.187 << END
user root 123456
binary
hash
prompt
cd /orabak/oswbb/archive/analyst
lcd /tmp/dba
mput osw*.tar.gz
bye
END
rm /tmp/dba/*.tar.gz
method 2:
cd /orabak/oswbb/oswbb/archive
scp -rp * root@10.200.210.187:/tmp/dba
##promtp password
########## running in yumserver step 3 use vncserver passwd:123456
method 1:
cd /tmp
gunzip /orabak/oswbb/archive/analyst/*.tar.gz
tar xvf /orabak/oswbb/archive/analyst/*.tar
cd /orabak/oswbb
java -jar oswbba.jar -i /tmp
rm -rf /tmp/osw*
rm -f /orabak/oswbb/archive/analyst/*.tar
method 2:
java -jar /orabak/oswbb/oswbba.jar -i /tmp/dba
rm -rf /tmp/dba/*
####分析 :
选项 D 生成 文件 到 当前 目录 下
选项A 分析并生成 一个 analyst.txt 的文件
###dashboard 文件怎么看
sample 1:
图中PM 指的是从这个点开始 是下午 ,也就是上午和下午的分界线。
sample 2:
查看idle 进程应该反过来看看。也就是灰色部分是idle 部分。
sample 3:
查看 dashborad/index.html
Linux DBS: 4 VCPUS: 8 SNAPS: 30
(cpu 8核,30 second /per )
##### anlyst.txt 怎么看
-》 ############################################################################
# Section 3: System General Findings
#
# This section lists all general findings that require attention. Each
# finding has a status along with a subsystem. Further advice may also
# available regarding the finding.
#
-》CPU UTILIZATION: The following snaps recorded cpu utilization of 100% busy:
SnapTime
-》
#######################################################################################
# Section 8.3: PS for (Processes with CPU > 0) When System Idle CPU < 30% Ordered By Time
# In this section list all processes captured in the oswbb logs with process cpu consumption
# > 0 and system idle cpu < 30%
#
-》
Section 8.5: Top RSS Processes Increasing Memory Per Snapshot
->>
CPU UTILIZATION: The following snaps recorded ROOT processes using high percent cpu:
-->>
# Section 8.2: PS for Processes With Status = D, T or W Ordered By Time
# In this section list all processes captured in the oswbb logs which have a
# status of D, T or W
#
###EXPLAIN:
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的
R、S、D、T、Z、X 六种状态做个说明。
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
#####
##
附录:
/etc/inittab文件中每个登记项的结构都是一样的,共分为以冒号“:”分隔的4个字段。具体如下:
identifier : run_level : action : process
其中,各字段以及与其相关的说明如下:
identifier 登记项标识符,最多为4个字符。用于惟一地标识/etc/inittab文件中的每一个登记项
run_level 系统运行级,即执行登记项的init级别。用于指定相应的登记项适用于哪一个运行级,即在哪一个运行级中被处理。如果该字段为空,那么相应的登记项将适用于所有的运行级。在该字段中,可以同时指定一个或多个运行级,其中各运行级分别以数字0.1.2.3.4.5.6或字母a、b、c表示,且无需对其进行分隔。
action 动作关键字。用于指定init(M)命令或进程对相应进程(在“process”字段定义)所实施的动作。具体动作包括:
1、boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,也不重新启动该进程。
2、bootwait:只有在引导过程中,才执行该进程,并等待进程的结束:当该进程死亡时,也不重新启动该进程。实际上,只有在系统被引导后,并从单用户方式进入多用户方式时,这些登记项才被处理;如果系统的默认运行级设置为2(即多用户方式),那么这些登记项在系统引导后将马上被处理。
3、initdefault:指定系统的默认运行级。系统启动时,init将首先查找该登记项。如果存在init将据此决定系统最初要进入的运行级。具体来说,init将指定登记项“run_level"字段中的最大数字(即最高运行级)为当前系统的默认运行级;如果该字段为空,那么将其解释为“0123456”,并以“6”作为默认运行级。如果不存在该登记项,那么init将要求用户在系统启动时指定一个最初的运行级。
4、off:如果相应的进程正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该进程。如果相应的进程并不存在那么就忽略该登记项。
5、once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项;当该进程死亡时,init也不重新启动该进程。注意:在从一个运行级进入另一个运行级时,如果相应的进程仍然在运行,那么init就不重新启动该进程。
6、ondemand:与“respawn”的功能完全相同,但只用于运行级为a、b或c的登记项。
7、powerfail:只在init接收到电源失败信号时执行相应的进程,但不等待该进程结束。
8、powerwait:只在init接收到电源失败信号时执行相应的进程,并在继续对/etc/inittab文件进行任何处理前等待该进程结束。
9、respawn:如果相应的进程还不存在,那么init就启动该进程,同时不等待该进程的结束就继续扫描/etc/inittab文件;当该进程死亡时,init将重新启动该进程。如果相应的进程已经存在,那么init将忽略该登记项并继续扫描/etc/inittab文件。
10、sysinit:只有在启动或重新启动系统并首先进入单用户时,init才执行这些登记项。而在系统从运行级1-6进入单用户方式时,init并不执行这些登记项。"action”字段为“sysinit”的登记项在“run_level”字段不指定任何运行级。
11、wait:启动进程并等待其结束,然后再处理/etc/inittab文件中的下一个登记项。
process 所要执行的shell命令。任何合法的shell语法均适用于该字段。
inittab详细介绍
init进程是系统中所有进程的父进程,init进程繁衍出完成通常操作所需的子进程,这些操作包括:设置机器名、检查和安装磁盘及文件系统、启动系统日志、配置网络接口并启动网络和邮件服务,启动打印服务等。Solaris中init进程的主要任务是按照inittab文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init进程也称为系统初始化进程。
下面具体说明inittab文件的格式。
inittab文件中每一记录都从新的一行开始,每个记录项最多可有512个字符,每一项的格式通常如下:id:rstate:action:process,下面分别解释。
1. id字段是最多4个字符的字符串,用来唯一标志表项。
2. rstate(run state)字段定义该记录项被调用时的运行级别,rstate可以由一个或多个运行级别构成,也可以是空,空则代表运行级别0~6。当请求init改变运行级别时,那些rstate字段中不包括新运行级别的进程将收到SIGTERM警告信号,并且最后被杀死;只有a、b、c启动的命令外(a、b、c不是真正的运行级别)
3.action字段告诉init执行的动作,即如何处理process字段指定的进程,action字段允许的值及对应的动作分别为:
1)respawn:如果process字段指定的进程不存在,则启动该进程,init不等待处理结束,而是继续扫描inittab文件中的后续进程,当这样的进程终止时,init会重新启动它,如果这样的进程已存在,则什么也不做。
2)wait:启动process字段指定的进程,并等到处理结束才去处理inittab中的下一记录项。
3)once:启动process字段指定的进程,不等待处理结束就去处理下一记录项。当这样的进程终止时,也不再重新启动它,在进入新的运行级别时,如果这样的进程仍在运行,init也不重新启动它。
4)boot:只有在系统启动时,init才处理这样的记录项,启动相应进程,并不等待处理结束就去处理下一个记录项。当这样的进程终止时,系统也不重启它。
5)bootwait:系统启动后,当第一次从单用户模式
#########sample 2 脚本收集日志,上传到SR
#!/bin/ksh
##the shell is collect os base info like memory and filesystem and system info and all oracle log and crs log
crs_log_collect()
{
##find /db -name
find /db -name crsd.log | xargs -I{} tail -100000 {} >> /tmp/check/crsd.log
##find /db -name
find /db -name ocssd.log | xargs -I{} tail -100000 {} >> /tmp/check/ocssd.log
##find /db -name
find /db -name evmd.log | xargs -I{} tail -100000 {} >> /tmp/check/evmd.log
##find /db -name
find /db -name alert`hostname`.log | xargs -I{} tail -100000 {} >> /tmp/check/alert`hostname`.log
##find /db -name
find /db -name oraagent_grid.log | xargs -I{} tail -100000 {} >> /tmp/check/oraagent_grid.log
###find /db
find /db -name alert_*.log | xargs -I{} tail -100000 {} >> /tmp/check/alert_db.log
###find /db
find /db -name alert_+*.log | xargs -I{} tail -100000 {} >> /tmp/check/alert_+ASM.log
###find /db
find /db -name ohasd.log | xargs -I{} tail -100000 {} >> /tmp/check/ohasd.log
tar -cvf - * |gzip > `hostname`_crs.tar.gz
cd /tmp/check
rm *.log
}
if [ ! -d "/tmp/check" ]; then
mkdir /tmp/check
fi
cd $HOME
OSNAME=`uname`
case $OSNAME in
SunOS) OSNAME=1 ;;
HP-UX) OSNAME=2 ;;
AIX) OSNAME=3 ;;
Linux) OSNAME=4 ;;
esac
if [ $OSNAME -eq 4 ]
then
cd /tmp/check
rm *.gz
echo "****filesystem****" >> os.log
df -h >> os.log
echo "****oslevel****" >> os.log
lsb_release -a |grep Release >> os.log
echo "****memory****" >> os.log
free -m >> os.log
echo "****boot info ****" >> os.log
cat /proc/meminfo >> os.log
echo "**** vmstat ****" >> os.log
vmstat 1 10 >> os.log
echo "**** iostat ****" >> os.log
iostat 1 10 >> os.log
echo "**** opatch ****" >> os.log
usernum=`ps -ef|grep grid|wc -l`
if [ $usernum -gt 1 ]
then
opatch=`find /db -name opatch|grep -v opatchprereqs | head -1`
/bin/su - grid -c "$opatch lsinventory" >> opatch.log
else
user=`ps -ef|grep ora_pmon|grep -v grep| head -1|awk '{print $1}'`
opatch=`find /db -name opatch|grep -v opatchprereqs | head -1`
/bin/su - $user -c "$opatch lsinventory " >> opatch.log
fi
echo "**** log ****" >> os.log
crs_log_collect
elif [ $OSNAME -eq 3 ]
then
cd /tmp/check
rm *.gz
echo "****filesystem****" >> os.log
df -g >> os.log
echo "****oslevel****" >> os.log
oslevel -s >> os.log
echo "****memory****" >> os.log
lsdev -Cc memory >> os.log
echo "****boot info ****" >> os.log
bootinfo -r >> os.log
echo "**** vmstat ****" >> os.log
vmstat 1 10 >> os.log
echo "**** iostat ****" >> os.log
iostat 1 10 >> os.log
echo "**** opatch ****" >> os.log
usernum=`ps -ef|grep grid|wc -l`
if [ $usernum -gt 1 ]
then
opatch=`find /db -name opatch|grep -v opatchprereqs | head -1`
su - grid -c "$opatch lsinventory" >> opatch.log
else
user=`ps -ef|grep ora_pmon|grep -v grep| head -1|awk '{print $1}'`
opatch=`find /db -name opatch|grep -v opatchprereqs | head -1`
su - $user -c "$opatch lsinventory " >> opatch.log
fi
echo "**** log ****" >> os.log
crs_log_collect
else
echo 'else'
fi
darda oracle tfa_OSW - feiyun8616 - 博客园相关推荐
- 在.net gridview 更新回oracle数据库,.net 连接Oracle操作 - cathy_10 - 博客园
新的环境中操作的数据库为Oracle,之前使用Sql Server. 在执行的时候想到连接数据库应该大部分是通用的.于是将Sql Server中的连接方式(string StrConn="D ...
- 前端小白也能快速学会的博客园博客美化全攻略
前端小白也能快速学会的博客园博客美化全攻略 A呦V,博客园er的自我修养是什么?第一条,别只顾收藏和偷师呀,记得点"推荐"或关注本人喔~ 美化方法论简介 一般而言,需要选一个默认的 ...
- php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能
许多网站都有排行榜的功能,比如球员人气榜单.阅读排行榜,对于一些小网站,通过查数据库就能实现排行榜的功能,但是对于稍微有点用户量而且还是实时排名的网站,使用一些关系型数据库如(MySQL.Oracle ...
- logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF
使用OracleLogminer同步Demo1Demo介绍-博客园 使用Oracle Logminer 同步Demo 1 Demo 介绍 1.1 Demo 设想 前面介绍了Oracle LogMine ...
- 经典SQL语句大全-【转载自】博客园,作者博客:YuBinfeng's Technology Blog
因最近学习MySQL,闲来无事逛帖子时,发现这篇较为经典的博客,特转载以防备用学习,同时希望也可以帮到他人,废话不多说,进入正文 一.基础 1.说明:创建数据库 CREATE DATABASE da ...
- 博客园电子期刊2012年8月刊发布啦
期刊访问网址:http://emag.cnblogs.com/2012/CNBlogsEmag201208.html.以下为本期期刊内容: 博客园电子期刊 No56.2012年8月刊 推荐新闻 微软时 ...
- ajax自动加载blogjava和博客园的rss
自动加载blogjava和博客园的rss <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "h ...
- 前端小白也能快速学会的博客园博客美化全攻略[附源码]
前端小白也能快速学会的博客园博客美化全攻略[附源码] 文章目录 前端小白也能快速学会的博客园博客美化全攻略[附源码] 美化方法论简介 准备工作 js权限申请 如何模仿一个博客园的自定义风格(样式css ...
- Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园...
Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园 在前一节,学习了如何自定义登录页,但是用户名.密码仍然 ...
- oracle 迁移PG 博客
金融实战演练:从Oracle迁移到PG的技术实现 - PGSQL - dbaplus社群:围绕Data.Blockchain.AiOps的企业级专业社群.技术大咖.原创干货,每天精品原创文章推送,每周 ...
最新文章
- 详解数组中的reduce方法
- 多线程——实现Callable接口
- matlab cell转double_MATLAB处理数据,掌握这7个小技巧就够了
- redhat7 32位mysql_Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)
- aws lambda使用_使用AWS Lambda的CloudWatch事件通知
- GItHub--Makedown语法学习(快速入门)
- testlink(以及服务器)问题定位思路
- 【数据结构笔记29】最小生成树问题:Prim算法与Kruskal算法
- 计算机组成原理中计算机主要包括哪几部分,计算机组成原理本科生期末试卷(五)部分答案详解...
- UAC1.0和UAC2.0区别(八)
- 【Docker】 命令速查
- 基于ricequant隐马尔科夫模型量化交易
- VScode下载及安装完整教程(详细版)
- 手持式信号综合分析仪 天馈+频谱多功能测试
- ics服务启动失败的一种解决方法
- 通过PostMessage/SendMessage实现模拟键盘鼠标按键,发送不成功或出现重复按键的可参考本文
- POJ1251丛林之路题解
- 非全研究生计算机网络-k8s网络插件(CNI)性能分析
- 将数据字典转为Excel表格
- surface 通过U盘 镜像恢复系统
热门文章
- Static Asynchronous Component Misuse Detection for Android Applications
- 智能管家---11. 用户重置密码功能实现(忘记密码或重置)
- UNITY个人版设置深色主题
- 计算机打表格图,快速填充/微图表/一秒制作打勾方框
- 虚幻引擎4总是遇到崩溃卡顿情况,这8个方法一定要试试
- Firefox同步密钥丢失的解决办法
- 一个蹩脚的图形中文验证码自动识别实现
- linux安装mysql总结
- 微信v3数据或者v4数据转wxid
- 实例分割: 一文读懂 E2EC (CVPR 2022)