我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么编写oracle_ray.sh常用的oracle sql功能脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么编写oracle_ray.sh常用的oracle sql功能脚本

这篇文章主要讲解了“怎么编写oracle_ray.sh常用的oracle sql功能脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么编写oracle_ray.sh常用的oracle sql功能脚本”吧!

获取帮助:

    oracle_ray.sh help=y

    更新:

        第二版:
            添加了asm磁盘信息查询

        第三版:

            修正了获取执行计划指定from=cursor的bug

#!/bin/bash
#by ray
#2017-09-29
#version 3.0
###################################################
#read configuration file
###################################################
if [ -e ~/.bash_profile ];then
	. ~/.bash_profile
fi
if [ -e ~/.profile ];then
	. ~/.profile
fi
###################################################
#functions
###################################################
###################################################
#functions for DataGuard Applied
###################################################
getDgApplied(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	set pages 10000
	col name for a100
	select dest_id,sequence#,name,applied from v\$archived_log where name is not null order by sequence#;
	exit
	RAY
}
###################################################
#functions for Tablespace usage
###################################################
getTablespaceInfo(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	set pages 10000
	col TABLESPACE_NAME for a30;
	col PCT_FREE for a10;
	col PCT_USED for a10;
	col USED_MAX% for a10
	select  a.tablespace_name,
	       round(a.bytes_alloc / 1024 / 1024, 2) megs_alloc,
	       round(nvl(b.bytes_free, 0) / 1024 / 1024, 2) megs_free,
	       round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024, 2) megs_used,
	       round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2)||'%' Pct_Free,
	       100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2)||'%' Pct_used,
	       round(maxbytes/1048576,2) Max,
	       round(round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024, 2) / round((case maxbytes when 0 then a.bytes_alloc else maxbytes end)/1048576,2) * 100,2) || '%' "USED_MAX%" 
	from  ( select  f.tablespace_name,
	               sum(f.bytes) bytes_alloc,
	               sum(decode(f.autoextensible, 'YES',f.maxbytes,'NO', f.bytes)) maxbytes
	        from dba_data_files f
	        group by tablespace_name) a,
	      ( select  f.tablespace_name,
	               sum(f.bytes)  bytes_free
	        from dba_free_space f
	        group by tablespace_name) b
	where a.tablespace_name = b.tablespace_name (+)
	union all
	select h.tablespace_name,
	       round(sum(h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc,
	       round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / 1048576, 2) megs_free,
	       round(sum(nvl(p.bytes_used, 0))/ 1048576, 2) megs_used,
	       round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100,2)||'%' Pct_Free,
	       100 - round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100,2)||'%' pct_used,
	       round(sum(f.maxbytes) / 1048576, 2) max,
	       round(round(sum(nvl(p.bytes_used, 0))/ 1048576, 2)/round(sum(case f.maxbytes when 0 then (h.bytes_free + h.bytes_used) else f.maxbytes end) / 1048576, 2) * 100,2)||'%' "USED_MAX%" 
	from   sys.v_\$TEMP_SPACE_HEADER h, sys.v_\$Temp_extent_pool p, dba_temp_files f
	where  p.file_id(+) = h.file_id
	and    p.tablespace_name(+) = h.tablespace_name
	and    f.file_id = h.file_id
	and    f.tablespace_name = h.tablespace_name 
	group by h.tablespace_name
	ORDER BY 1;
	exit
	RAY
}
###################################################
#functions for ASM DiskGroup usage
###################################################
getAsmDiskgroup(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	select name,total_mb,free_mb from v\$asm_diskgroup;
	RAY
	exit
}
###################################################
#functions for ASM Disk infomation
###################################################
getAsmDiskInfo(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	set pages 1000
	col name for a15
	col path for a60
	select adg.name,adg.TOTAL_MB group_TOTAL_MB,adg.free_mb group_free_mb,ad.path,ad.name,ad.TOTAL_MB disk_totle_mb,ad.free_mb disk_free_mb from v$asm_diskgroup adg,v$asm_disk ad where adg.GROUP_NUMBER=ad.GROUP_NUMBER order by ad.name;
	RAY
	exit
}
###################################################
#functions for Redo Log infomation
###################################################
getRedoInfo(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 500
	set pages 1000
	col group# for 999
	col mb for 9999
	col member for a60
	col thread# for 999
	col archived for a10
	select a.group#,a.BYTES/1024/1024 mb,b.MEMBER,a.thread#,a.sequence#,a.members,a.archived,a.status,a.first_time,a.next_time from gv\$log a,gv\$logfile b where a.GROUP#=b.GROUP# group by a.group#,a.thread#,a.BYTES/1024/1024,b.MEMBER,a.sequence#,a.members,a.archived,a.status,a.first_time,a.next_time order by group#;
	exit
	RAY
}
###################################################
#functions for Redo Log shift frequency
###################################################
getRedoShiftFrequ(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	set pages 10000
	SELECT 
	to_char(first_time,'YYYY-MM-DD') day,   
	to_char(sum(decode(to_char(first_time,'HH24'),'00',1,0)),'999') "00",   
	to_char(sum(decode(to_char(first_time,'HH24'),'01',1,0)),'999') "01",   
	to_char(sum(decode(to_char(first_time,'HH24'),'02',1,0)),'999') "02",   
	to_char(sum(decode(to_char(first_time,'HH24'),'03',1,0)),'999') "03",   
	to_char(sum(decode(to_char(first_time,'HH24'),'04',1,0)),'999') "04",   
	to_char(sum(decode(to_char(first_time,'HH24'),'05',1,0)),'999') "05",   
	to_char(sum(decode(to_char(first_time,'HH24'),'06',1,0)),'999') "06",   
	to_char(sum(decode(to_char(first_time,'HH24'),'07',1,0)),'999') "07",   
	to_char(sum(decode(to_char(first_time,'HH24'),'08',1,0)),'999') "08",   
	to_char(sum(decode(to_char(first_time,'HH24'),'09',1,0)),'999') "09",   
	to_char(sum(decode(to_char(first_time,'HH24'),'10',1,0)),'999') "10",   
	to_char(sum(decode(to_char(first_time,'HH24'),'11',1,0)),'999') "11",   
	to_char(sum(decode(to_char(first_time,'HH24'),'12',1,0)),'999') "12",   
	to_char(sum(decode(to_char(first_time,'HH24'),'13',1,0)),'999') "13",   
	to_char(sum(decode(to_char(first_time,'HH24'),'14',1,0)),'999') "14",   
	to_char(sum(decode(to_char(first_time,'HH24'),'15',1,0)),'999') "15",   
	to_char(sum(decode(to_char(first_time,'HH24'),'16',1,0)),'999') "16",   
	to_char(sum(decode(to_char(first_time,'HH24'),'17',1,0)),'999') "17",   
	to_char(sum(decode(to_char(first_time,'HH24'),'18',1,0)),'999') "18",   
	to_char(sum(decode(to_char(first_time,'HH24'),'19',1,0)),'999') "19",   
	to_char(sum(decode(to_char(first_time,'HH24'),'20',1,0)),'999') "20",   
	to_char(sum(decode(to_char(first_time,'HH24'),'21',1,0)),'999') "21",   
	to_char(sum(decode(to_char(first_time,'HH24'),'22',1,0)),'999') "22",   
	to_char(sum(decode(to_char(first_time,'HH24'),'23',1,0)),'999') "23" 
	from 
	   v\$log_history   
	GROUP by 
	   to_char(first_time,'YYYY-MM-DD') order by day desc;
	exit
	RAY
}
###################################################
#functions for Tablespace include datafile infomation
###################################################
getTablespaceAndDatafile(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	set pages 1000
	col ts_name for a30
	col df_name for a100
	select ts.name ts_name,df.name df_name from v\$tablespace ts,v\$datafile df where ts.ts#=df.ts# group by ts.name,df.name order by ts.name;
	exit
	RAY
}
###################################################
#functions for executing sql
###################################################
getExecutingSQL(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 80
	set heading off
	set pages 1000
	col sid for 999999
	col SERIAL# for 99999
	col spid for 999999
	col LAST_CALL_ET for a20
	col sql_id for a20
	col status for a20
	col event for a40
	select distinct 'sid: '||b.SID,
	                'serial#: '||b.SERIAL#,
	                'spid: '||p.SPID,
	                'last_call: '||b.LAST_CALL_ET as LAST_CALL_ET,
	                'sql_id: '||a.sql_id, 
	                'status: '||b.status,
	                'event: '||b.event,
	                'module: '||b.MODULE, 
	                'os_user: '||b.OSUSER,
	                'machine: '||b.MACHINE,
	                'sql_text: '||a.sql_text 
	            from v\$sql a,v\$session b,v\$process p 
	            where a.SQL_ID=b.SQL_ID and b.PADDR=p.ADDR and b.STATUS='ACTIVE' order by LAST_CALL_ET desc;
	RAY
}
###################################################
#functions for geting full sqltext
###################################################
getFullSqlText(){
	if [ $2 == "HIST" ];then
		sqlplus -s /nolog <<-RAY
		conn / as sysdba
		set linesize 300
		set serveroutput on
		set feedback off
		spool ./$1.txt
		declare 
		l_buffer varchar2(3000);
		l_amount binary_integer :=3000;
		l_pos int :=1;
		l_clob_length int;
		sqlid varchar2(100) := '$1';
		begin
		select DBMS_LOB.getlength(sql_text) into l_clob_length from dba_hist_sqltext where sql_id=sqlid;
		while l_pos<l_clob_length loop
		select DBMS_LOB.SUBSTR(sql_text,l_amount,l_pos) into l_buffer from dba_hist_sqltext where sql_id=sqlid;
		dbms_output.put(l_buffer);
		l_pos:=l_pos+l_amount;
		end loop;
		dbms_output.put_line(' ');
		end;
		/
		spool off
		exit
		RAY
	fi
	
	if [ $2 == "MEMORY" ];then
		sqlplus -s /nolog <<-RAY
		conn / as sysdba
		set linesize 300
		set serveroutput on
		set feedback off
		spool ./$1.txt
		declare 
		l_buffer varchar2(3000);
		l_amount binary_integer :=3000;
		l_pos int :=1;
		l_clob_length int;
		sqlid varchar2(100) := '$1';
		begin
		select DBMS_LOB.getlength(sql_fulltext) into l_clob_length from v\$sqlarea where sql_id=sqlid;
		while l_pos<l_clob_length loop
		select DBMS_LOB.SUBSTR(sql_fulltext,l_amount,l_pos) into l_buffer from v\$sqlarea where sql_id=sqlid;
		dbms_output.put(l_buffer);
		l_pos:=l_pos+l_amount;
		end loop;
		dbms_output.put_line(' ');
		end;
		/
		spool off
		exit
		RAY
	fi
	
}
###################################################
#functions for indexes in table
###################################################
getIndexInTable(){
	sqlplus -s /nolog <<-RAY
	conn / as sysdba
	set linesize 300
	col table_name for a20
	col index_name for a30
	col index_type for a10
	col columns for a50
	select
		table_name,
    	TABLE_TYPE,
    	INDEX_NAME,
    	INDEX_TYPE,
    	TABLE_OWNER,
    	max(columns) columns
	from
	(SELECT
    	ui.table_name,
    	ui.TABLE_TYPE,
    	ui.INDEX_NAME,
    	ui.INDEX_TYPE,
    	uic.TABLE_OWNER,
    	to_char(wm_concat (uic.COLUMN_NAME) 
    	over(partition by ui.table_name,ui.TABLE_TYPE,ui.INDEX_NAME,ui.INDEX_TYPE,uic.TABLE_OWNER order by uic.COLUMN_POSITION)) columns
	FROM
    	dba_indexes ui,
    	dba_IND_COLUMNS uic
	WHERE
    	ui.INDEX_NAME (+) = uic.INDEX_NAME
		AND ui.TABLE_NAME = UPPER ('$1'))
	GROUP BY
    	table_name,
    	TABLE_TYPE,
    	INDEX_NAME,
    	INDEX_TYPE,
    	TABLE_OWNER;
	exit
	RAY
}
###################################################
#functions for geting executing plan
###################################################
getXplan(){
	if [ $2 == "CURSOR" ];then
		sqlplus -s /nolog <<-RAY
		conn / as sysdba
		set linesize 300
		set pages 10000
		spool ./$1.txt
		select * from table(dbms_xplan.display_cursor('$1',null,'advanced'));  
		spool off
		exit
		RAY
	fi
	
	if [ $2 == "AWR" ];then
		sqlplus -s /nolog <<-RAY
		conn / as sysdba
		set linesize 300
		set pages 10000
		spool ./$1.txt
		select * from table(dbms_xplan.DISPLAY_AWR('$1',format=>'advanced'));
		spool off
		exit
		RAY
	fi
}
###################################################
#functions for geting a specified partition table infomation
###################################################
getPartTableInfo(){
	sqlplus -s /nolog <<-RAY
		conn / as sysdba
		set linesize 400
		set pages 1000
		col table_owner for a10
		col table_name for a30
		col M for 9999999999
		col PARTITION_NAME for a15 
		col HIGH_VALUE for a30
		col NUM_ROWS for 9999999999
		col TABLESPACE_NAME for a15
		col COLUMN_NAME for a20
		col LAST_ANALYZED for a15
		SELECT
		    a.TABLE_OWNER,
		    a.table_name,
		    c. M,
		    a.PARTITION_NAME,
		    a.HIGH_VALUE,
		    a.NUM_ROWS,
		    a.TABLESPACE_NAME,
		    b.COLUMN_NAME,
		    A.LAST_ANALYZED
		FROM
		    dba_TAB_PARTITIONS A,
		    dba_PART_KEY_COLUMNS b,
		    (
		        SELECT
		            SUM (bytes / 1024 / 1024) M,
		            segment_name,
		            partition_name
		        FROM
		            dba_segments
		        WHERE segment_type LIKE '%TABLE%'
		        AND partition_name IS NOT NULL
		        and segment_name = upper('$1')
		        GROUP BY
		            segment_name,
		            partition_name
		        ORDER BY
		            segment_name,
		            partition_name DESC
		    ) c
		WHERE
		    A .TABLE_NAME = b. NAME(+)
		AND A .table_name = c.SEGMENT_NAME(+)
		AND A .partition_name = c.PARTITION_NAME(+)
		AND A .table_name = upper('$1')
		ORDER BY
		    A .TABLE_NAME,
		    partition_name DESC;
	RAY
}
###################################################
#functions for help
###################################################
func_help(){
	echo "Example:"
	echo "			/bin/bash oracle_ray.sh type=*******"
	echo "Parameter:"
	echo "	  type:"
	echo "		value:"
	echo "			DGAPPLIED:		to check archive logfile applied infomation for DataGuard."
	echo "			TABLESPACE:		to check tablespace usage."
	echo "			ASMDISKGROUP:	to check ASM Diskgroup usage."
	echo "			ASMDISK:		to check ASM Disk infomation."
	echo "			REDOINFO:		to get redo log infomation."
	echo "			REDOSHIFT		to get redo logfile shift frequency."
	echo "			TSDF			to get datafiles for tablespace."
	echo "			EXECNOW:		to get executing sql."
	echo "			FULLSQL:		to get full sql text,the parameter must be used with from and sqlid."
	echo "							the parameter only use MEMORY/memory/HIST/hist for from."
	echo "				Example:	/bin/bash oracle_ray.sh ype=FULLSQL from=memory sqlid=********"
	echo "			INDEX:			to get indexes for a tables,the parameter must be used with table."
	echo "				Example:	/bin/bash oracle_ray.sh type=INDEX table=*********"
	echo "			XPLAN:			to get executing plan for a sql,the parameter must be used with from and sqlid."
	echo "							the parameter only use CURSOR/cursor/AWR/awr for from."
	echo "							Even you can't use this parameter,from.Cause,there is default value,cursor,for from."
	echo "				Example:	/bin/bash oracle_ray.sh type=XPLAN from=cursor sqlid=****"
	echo "							/bin/bash oracle_ray.sh type=XPLAN sqlid=****"
	echo "			PARTITIONINFO	to get all of partition which will be specified infomation"
	echo "							the parameter must be used with table."
	echo "				Example:	/bin/bash oracle_ray.sh type=PARTITIONINFO table=**********"
	echo "	  from:"
	echo "		value:"
	echo "			HIST:			to get full sql text from history table."
	echo "			MEMORY:			to get full sql text from memory."
	echo "			CURSOR:			to get Xplan text from memory."
	echo "			AWR:			to get Xplan from awr view."
	echo "	  sqlid:				specify a sql id."
	echo "	  table:				specify a table name."
	echo ""
	echo ""
}
###################################################
#get parameter
###################################################
argvs=($@)
for i in ${argvs[@]}
do
        case `echo $i | awk -F= '{print $1}' | tr [a-z] [A-Z]` in 
        TYPE)
            ExecType=`echo $i | awk -F= '{print $2}' | tr [a-z] [A-Z]`
        ;;
        FROM)
            fm=`echo $i | awk -F= '{print $2}' | tr [a-z] [A-Z]`
        ;;
        SQLID)
            sqlid=`echo $i | awk -F= '{print $2}' `
        ;;
        TABLE)
            tname=`echo $i | awk -F= '{print $2}' | tr [a-z] [A-Z] `
        ;;
        HELP)
        	if [ ! `echo $i | awk -F= '{print $2}' | tr [a-z] [A-Z]` ];then
        		echo "If you want to get help,pleas use help=y!"
        		exit 1
        	elif [ `echo $i | awk -F= '{print $2}' | tr [a-z] [A-Z]` == 'Y' ];then
            	func_help
            	exit 0
            else
            	echo "If you want to get help,pleas use help=y!"
            	exit 1
            fi
        esac
done
###################################################
#To judge whether the type is empty
###################################################
if [ ! ${ExecType} ]; then  
    echo "The TYPE must be specified!!"
    exit 2
fi
###################################################
#exec function
###################################################
case ${ExecType} in
DGAPPLIED)
	getDgApplied
	;;
TABLESPACE)
	getTablespaceInfo
	;;
ASMDISKGROUP)
	getAsmDiskgroup
	;;
ASMDISK)
	getAsmDiskInfo
	;;
REDOINFO)
	getRedoInfo
	;;
REDOSHIFT)
	getRedoShiftFrequ
	;;
TSDF)
	getTablespaceAndDatafile
	;;
EXECNOW)
	getExecutingSQL
	;;
PARTITIONINFO)
	if [ ! ${tname} ];then
    	echo "The table of parameter must be specified!!"
    	echo ""
    	exit 3
	else
    	getPartTableInfo "${tname}"
    fi 
	;;
FULLSQL)
	if [ ! ${fm} ];then
		echo "The from of parameter must be specified!"
	elif [ ${fm} == "HIST" ];then
     	getFullSqlText "${sqlid}" "HIST"
 	elif [ ${fm} == "MEMORY" ];then
     	getFullSqlText "${sqlid}" "MEMORY"
 	else
     	echo "The from of parameter only is HIST or MEMORY!!"
     	echo ""
     	exit 4
 	fi
	;;
INDEX)
	if [ ! ${tname} ];then
    	echo "The table of parameter must be specified!!"
    	echo ""
    	exit 5
	else
    	getIndexInTable "${tname}"
    fi
	;;
XPLAN)
    if [ ! ${sqlid} ];then
    	echo "The sqlid of parameter must be specified!!"
    	echo ""
    	exit 6
    else
    	if [ ! ${fm} ];then
    		getXplan "${sqlid}" "CURSOR"
    	elif [ ${fm} == "CURSOR" ];then
    		getXplan "${sqlid}" "CURSOR"
    	elif [ ${fm} == "AWR" ];then
    		getXplan "${sqlid}" "AWR"
    	else
    		echo "The from of parameter only are cursor or awr!!"
    	fi
    fi
	;;
*)
    echo "You have entered a invalid parameter value!!"
	echo "If you want to help, You can use the parameter: --help ."
	;;
esac

感谢各位的阅读,以上就是“怎么编写oracle_ray.sh常用的oracle sql功能脚本”的内容了,经过本文的学习后,相信大家对怎么编写oracle_ray.sh常用的oracle sql功能脚本这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么编写oracle_ray.sh常用的oracle sql功能脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python编写shell脚本中常用的文件是怎么样的

这篇文章将为大家详细讲解有关Python编写shell脚本中常用的文件是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在Python编写shell脚本中我们经常会用到一些相关的正则表
2023-06-17

怎么写出安全的、基本功能完善的Bash脚本

这篇文章主要为大家分析了怎么写出安全的、基本功能完善的Bash脚本的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“怎么写出安全的、基本功能完善的Bash脚本”
2023-06-28

使用python怎么编写一个自动生成sql语句的脚本

这篇文章主要介绍了使用python怎么编写一个自动生成sql语句的脚本,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python是什么意思Python是一种跨平台的、具有解释性、编译性、
2023-06-06

C#实现简单计算器功能的脚本怎么写

这篇文章主要介绍了C#实现简单计算器功能的脚本怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#实现简单计算器功能的脚本怎么写文章都会有所收获,下面我们一起来看看吧。先来张效果图吧(5分钟写好,莫怪)代码
2023-06-29

利用java怎么编写一个创建数据库与表的脚本

这篇文章给大家介绍利用java怎么编写一个创建数据库与表的脚本,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:import java.sql.*; public class Test { publi
2023-05-31

怎么用PHP编写一个修改多个用户密码的功能

本篇内容主要讲解“怎么用PHP编写一个修改多个用户密码的功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用PHP编写一个修改多个用户密码的功能”吧!一、数据库设计在编写前,我们需要先设计数
2023-07-05

怎么用Shell脚本实现检测文件是否被修改过的功能

本篇内容介绍了“怎么用Shell脚本实现检测文件是否被修改过的功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#!/bin/bashfun
2023-06-09

怎么用BAT脚本实现自动上传文件到ftp服务器的功能

这篇文章主要讲解了“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”吧!代码如下:@E
2023-06-08

Linux中显示内存和CPU使用率最高的进程是怎么样的及SHELL脚本怎么编写

本篇文章为大家展示了Linux中显示内存和CPU使用率最高的进程是怎么样的及SHELL脚本怎么编写,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。显示CPU占用率最高的十个进程信息# ps aux|
2023-06-05

编程热搜

目录