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 - 博客园相关推荐

  1. 在.net gridview 更新回oracle数据库,.net 连接Oracle操作 - cathy_10 - 博客园

    新的环境中操作的数据库为Oracle,之前使用Sql Server. 在执行的时候想到连接数据库应该大部分是通用的.于是将Sql Server中的连接方式(string StrConn="D ...

  2. 前端小白也能快速学会的博客园博客美化全攻略

    前端小白也能快速学会的博客园博客美化全攻略 A呦V,博客园er的自我修养是什么?第一条,别只顾收藏和偷师呀,记得点"推荐"或关注本人喔~ 美化方法论简介 一般而言,需要选一个默认的 ...

  3. php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能

    许多网站都有排行榜的功能,比如球员人气榜单.阅读排行榜,对于一些小网站,通过查数据库就能实现排行榜的功能,但是对于稍微有点用户量而且还是实时排名的网站,使用一些关系型数据库如(MySQL.Oracle ...

  4. logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF

    使用OracleLogminer同步Demo1Demo介绍-博客园 使用Oracle Logminer 同步Demo 1 Demo 介绍 1.1 Demo 设想 前面介绍了Oracle LogMine ...

  5. 经典SQL语句大全-【转载自】博客园,作者博客:YuBinfeng's Technology Blog

    因最近学习MySQL,闲来无事逛帖子时,发现这篇较为经典的博客,特转载以防备用学习,同时希望也可以帮到他人,废话不多说,进入正文  一.基础 1.说明:创建数据库 CREATE DATABASE da ...

  6. 博客园电子期刊2012年8月刊发布啦

    期刊访问网址:http://emag.cnblogs.com/2012/CNBlogsEmag201208.html.以下为本期期刊内容: 博客园电子期刊 No56.2012年8月刊 推荐新闻 微软时 ...

  7. ajax自动加载blogjava和博客园的rss

    自动加载blogjava和博客园的rss <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   "h ...

  8. 前端小白也能快速学会的博客园博客美化全攻略[附源码]

    前端小白也能快速学会的博客园博客美化全攻略[附源码] 文章目录 前端小白也能快速学会的博客园博客美化全攻略[附源码] 美化方法论简介 准备工作 js权限申请 如何模仿一个博客园的自定义风格(样式css ...

  9. Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园...

    Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园 在前一节,学习了如何自定义登录页,但是用户名.密码仍然 ...

  10. oracle 迁移PG 博客

    金融实战演练:从Oracle迁移到PG的技术实现 - PGSQL - dbaplus社群:围绕Data.Blockchain.AiOps的企业级专业社群.技术大咖.原创干货,每天精品原创文章推送,每周 ...

最新文章

  1. 详解数组中的reduce方法
  2. 多线程——实现Callable接口
  3. matlab cell转double_MATLAB处理数据,掌握这7个小技巧就够了
  4. redhat7 32位mysql_Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)
  5. aws lambda使用_使用AWS Lambda的CloudWatch事件通知
  6. GItHub--Makedown语法学习(快速入门)
  7. testlink(以及服务器)问题定位思路
  8. 【数据结构笔记29】最小生成树问题:Prim算法与Kruskal算法
  9. 计算机组成原理中计算机主要包括哪几部分,计算机组成原理本科生期末试卷(五)部分答案详解...
  10. UAC1.0和UAC2.0区别(八)
  11. 【Docker】 命令速查
  12. 基于ricequant隐马尔科夫模型量化交易
  13. VScode下载及安装完整教程(详细版)
  14. 手持式信号综合分析仪 天馈+频谱多功能测试
  15. ics服务启动失败的一种解决方法
  16. 通过PostMessage/SendMessage实现模拟键盘鼠标按键,发送不成功或出现重复按键的可参考本文
  17. POJ1251丛林之路题解
  18. 非全研究生计算机网络-k8s网络插件(CNI)性能分析
  19. 将数据字典转为Excel表格
  20. surface 通过U盘 镜像恢复系统

热门文章

  1. Static Asynchronous Component Misuse Detection for Android Applications
  2. 智能管家---11. 用户重置密码功能实现(忘记密码或重置)
  3. UNITY个人版设置深色主题
  4. 计算机打表格图,快速填充/微图表/一秒制作打勾方框
  5. 虚幻引擎4总是遇到崩溃卡顿情况,这8个方法一定要试试
  6. Firefox同步密钥丢失的解决办法
  7. 一个蹩脚的图形中文验证码自动识别实现
  8. linux安装mysql总结
  9. 微信v3数据或者v4数据转wxid
  10. 实例分割: 一文读懂 E2EC (CVPR 2022)