centos7创建asm磁盘_Oracle ASM 磁盘组基础知识整理(收藏版)
为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的,前两周里因一套生产环境数据库磁盘不足无法对其进行表空间扩容,需要向存储岗申请存储资源,当存储岗划好资源加完存储时,操作系统岗对其进行扫盘以及权限处理时忘记对 RAC2 节点的磁盘进行属主的设置。
当到我们数据库岗对其磁盘组添加磁盘时,我们的小伙伴没有对其权限及属主进行检查,直接使用 alter diskgroup XXX add disk ‘XXX’添加磁盘,当然此命名是没有任何问题的,添加成功,进行重新平衡。便兴高采烈的下班了,但随后而来的悲剧便上演了,由于节点2权限不对新添加的磁盘 ASM 实例无法访问,导致数据库宕机。使其业务系统不能正常访问导致事故发生。
添加磁盘组磁盘,应使用类似如下的操作命令,可谁想尽没有检查权限导致悲剧发生。所以本次才对 ASM 磁盘组的基础操作命令做了一个整理及简化操作,希望对正在阅读中的你有所帮助。
root:chown grid:asmadmin /dev/rhdisk10chmod 660 /dev/rhdisk10ls -la /dev/rhdisk10su - gridsqlplus / as sysasmalter diskgroup DATA add disk '/dev/rhdisk10','/dev/rhdisk11';alter diskgroup DATA rebalance power 10;
ASM:Automatic Storage Management(自动存储管理)。 ASM 是 Oracle 内置的逻辑卷管理器,它进一步简化了数据库管理工作,是 Oracle 墙裂推荐使用的存储管理机制。先说一嘴 OMF,Oracle 11g 的一个新的特点就是文件和存储的自动管理,简称为 OMF,这么说吧,就是在 11g 单实例的数据库你创建一个数据文件需要写全路径,而在 ASM 里可以简写,不需要全部写完,例如:这么写:
create tablespace test datafile '+DATA' size 200M;
而不用
create tablespace test datafile '+DATA/testdb/datafile/test01.dbf' size 200M;
注意:'+DATA' 前面的+号不能丢, ASM 文件名字的格式是固定的:+group/dbname/file type/tag.file.incarnation
但这个功能需要以下初始化参数指定:
db_recovery_file_destdb_create_file_destdb_create_online_log_dest_n
这里就不在细说了,今天主要说的是 ASM 磁盘组命令行的相关操作。
ASM 命令行工具 ASMCMD
当安装完 grid 的时候,可使用命令行 asmca 来创建磁盘组,如下图:
那也可以使用图形化来管理磁盘组了,不过出现这个图形化不是很方便,各种申请,故放弃,对于 DBA 来说,使用命令行是很方便的,那么就从 ASM 实例说起吧。
一、ASM 实例的启动与关闭
ASMCMD 工具是一个强大的管理工具,可以对实例、磁盘组、文件进行管理。可以有交互式和非交互式的两种方式,非交互式的直接就是 asmcmd 加一条 asmcmd 内部的命令,如 asmcmd lsdg;交互式的即先输入asmcmd 进入命令提示符界面后在执行 lsdg。
启动实例没啥说的,和数据库实例是一样的,直接 startup 就行,关闭也就是 shutdown;那么 ASM 实例也是后台进程加 SGA 内存组成,除了数据库实例所具有的进程外,还有 RBAL 和 ABRn; RBAL 这个进程也叫 Rebalancer 进程,负责规划 ASM 磁盘组的 Rebalance 活动;ABRn 是 RBAL 进程的子进程,这个进程在数量上可以有多个, n 从 1-9,这组进程负责真正完成 Reblance 活动。
ASM 随着 SGA 的分配和后台进程的启动而启动,从 nomount 启动到最终的 mount 状态。期间,也是需要参数文件的,也是可以启动到 nomount,如
ASMCMD> startup --nomount --pfile init.ora
ASM 实例用户
在 ASM 实例创建时,默认会创建两个特权用户:SYS 和 ASMSNMP,类似数据库里的 SYS 和 SYSTEM 账号。我们可以通过命令行命令 lspwusr 查看 ASM 实例中的特权用户,也可以通过 orapwusr 命令创建、删除、修改特权用户,而特权用户的口令文件则放在 ASM 实例的口令文件中。
SYS@ ydjttest2>select USERNAME,ACCOUNT_STATUS, EXPIRY_DATE from dba_users where username in('SYS','DBSNMP');USERNAME ACCOUNT_STATUS EXPIRY_DA------------------------------ -------------------------------- ---------SYS OPEN 24-FEB-19DBSNMP EXPIRED & LOCKED 13-AUG-09[grid@JiekeXu1 ~]$ asmcmdASMCMD>ASMCMD> lspwusrUsername sysdba sysoper sysasm SYS TRUE TRUE TRUEASMSNMP TRUE FALSE FALSEASMCMD>
下面通过命令行创建特权用户 jiekexu, 密码同名具有 SYSASM 权限,也可登录 ASM 实例,通过动态性能视图 V$PWFILE_USERS 也可查看到特权用户。
orapwusr --add --privilege sysasm jiekexusqlplus jiekexu/jiekexu as sysasmselect * from v$pwfile_users;
二、命令行修改和删除特权用户
su - grid asmcmd orapwusr --modify --password jiekexuorapwusr --delete jiekexulspwusr
三、ASMCMD 命令管理磁盘组
ASMCMD 工具命令行中的 lsdg 可以查看磁盘组的详细信息,如状态、冗余级别、是否正在进行重新平衡、总大小、剩余空间等。这个命令的信息则是来自动态性能视图 V$ASM_DISKGROUP 的,如下所示:
当然,我们一般都是使用如下语句查看磁盘组使用率,发现了吧,上面的语句多简单那!!!
set lin 1000 pagesize 999col NAME for a15SYS@ ydjttest1>select group_number,name,total_mb/1024 total_gb,free_mb/1024 free_gb,TYPE from v$asm_diskgroup;GROUP_NUMBER NAME TOTAL_GB FREE_GB TYPE------------ --------------- ---------- ---------- ------ 1 DATA 9.33007813 5.52929688 NORMAL 2 FRA 7.4609375 4.484375 NORMAL 3 OCR_VOTE 2.82421875 1.91992188 NORMAL
lsdsk 命令
lsdsk 可查看磁盘组中的磁盘或者系统中可用的磁盘。这个命令也有 -k、-p、-t、--statistics 等几个参数可以获得不同的信息,选项 -k 可以看到总大小以及剩余大小,磁盘名以及磁盘对应操作系统路径等。 选项 -p 可以看到磁盘组序号,磁盘状态以及磁盘冗余度和路径等等信息。选项 -t 则是查看磁盘创建时间以及挂载时间和路径等信息。选项 --statistics 则是查看磁盘组中读写 IO 信息,包括在每个磁盘上的读和写的次数、所用时间和数据量以及磁盘路径等信息。而这些信息主要来自于动态性能视图 V$ASM_DISK 和 V$ASM_DISK_STAT。部分举例如下图所示。
lsdsk --candidate -p 还可以获取 系统中的“候选磁盘”,所谓候选磁盘就是那些可以作为磁盘组中的成员,但是目前还不属于任何磁盘组的磁盘。如果没有则会如上图所示一样只显示了表头。
ASMCMD> lsdsk --candidate -pGroup_Num Disk_Num Mount_Stat Header_Stat Mode_Stat State Path0 1 CLOSED FORMER ONLINE NORMAL /dev/rhdisk40 0 CLOSED FORMER ONLINE NORMAL /dev/rhdisk5
lsop 和 lsattr 命令
lsop 用于查看磁盘组中被打开的磁盘。可用此命令查看数据库后台有哪些进程访问磁盘组中的磁盘。 lsattr 命令可用于查看磁盘组的属性信息,这些属性是在磁盘组创建时自动指定的,而且有些属性是可以修改的。setattr 命令可用于修改磁盘组的属性值。
ASMCMD> lsop -G data --process LGWRGroup_Name Dsk_Num State Power ASMCMD>ASMCMD> lsop -G dataGroup_Name Dsk_Num State Power ASMCMD>ASMCMD> lsattr -l -G dataName Value access_control.enabled FALSE access_control.umask 066 au_size 1048576 cell.smart_scan_capable FALSE compatible.asm 11.2.0.0.0 compatible.rdbms 10.1.0.0.0 disk_repair_time 3.6h sector_size 512 ASMCMD> setattr -G data compatible.rdbms 11.2.0.0.0ASMCMD> lsattr -l -G dataName Value access_control.enabled FALSE access_control.umask 066 au_size 1048576 cell.smart_scan_capable FALSE compatible.asm 11.2.0.0.0 compatible.rdbms 11.2.0.0.0 disk_repair_time 3.6h sector_size 512
当然,通过 SQL 命令也可以修改这些参数,如下所示修改 compatible.rdbms 参数,Oracle 11g 中,asm 同时支持 10g 和 11g 数据库。但是 asm 的版本不能低于数据库的版本。该属性用来指定 disk group 最小能够兼容的数据库实例,在修改这个参数之前,必须先确保所有的数据库实例的 COMPATIBLE 参数大于等于该参数的值。在 Oracle 11g 数据库中,Oracle ASM disk group 的 COMPATIBLE.RDBMS 属性值默认是: 10.1。
SYS@ +ASM2>col value for a30SYS@ +ASM2>col name for a30SYS@ +ASM2>set lin 120SYS@ +ASM2>select name,value from v$asm_attribute where group_number=1 and name like 'compatible%';NAME VALUE------------------------------ ------------------------------compatible.asm 11.2.0.0.0compatible.rdbms 11.2.0.0.0SYS@ +ASM2>ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.rdbms' = '11.2.0.0.0';Diskgroup altered.SYS@ +ASM2>
四、磁盘组的创建与删除
利用 asmcmd 工具中的 mkdg 命令,可以创建 ASM 磁盘组,而磁盘组的结构是通过一个 XML 文件来指定,在这个文件中需要指定磁盘组的名称、冗余级别、包含磁盘及相关属性。ORACLE ASM 提供的三种冗余方式有 external、normal、high 即外部、正常、高。一般情况下三种模式需要的磁盘组:external 1块,normal,3块,high,5块。
1、 外部冗余(external redundancy):表示 Oracle 不帮你管理镜像,功能由外部存储系统实现,比如通过 RAID 技术;有效磁盘空间是所有磁盘设备空间的大小之和。
2、 默认冗余(normal redundancy):表示 Oracle 提供 2 份镜像来保护数据(镜像数据一次),有效磁盘空间是所有磁盘设备大小之和的 1/2 (使用最多)。
3、 高度冗余(high redundancy):表示 Oracle 提供3份镜像来保护数据(镜像数据两次),以提高性能和数据的安全,最少需要三块磁盘(三个 failure group);有效磁盘空间是所有磁盘设备大小之和的 1/3,虽然冗余级别高了,但是硬件的代价也最高。
如下的 XML 文件:
<dg name="data" redundancy="external"><dsk string="/dev/hdisk3"/><dsk string="/dev/hdisk4"/><a name="compatible.asm" value="11.2"/><a name="compatible.rdbms" value="11.2"/><a name="compatible.advm" value="11.2"/>dg>
mkdg 和 dropdg 命令
在创建磁盘组之前,首先需要在操作系统中创建一个 XML 文件,定义磁盘组的结构,然后在 ASMCMD 工具中将这个 XML 文件作为 mkdg 命令的参数,即可创建磁盘组。
ASMCMD > mkdg /u01/app/data.xml
通过 dropdg 命令可以删除一个磁盘组。如磁盘组总包含文件,磁盘组是不能被直接删除的,需要添加参数 -r 删除,当磁盘组出现故障无法挂载时需要强制删除,则需要添加参数 -f 强制删除。
ASMCMD >dropdg -r dataASMCMD >dropdg -r -f data
SQL 创建磁盘组
su - gridsqlplus / as sysasmcreate diskgroup data normal redunancy failgroup DA1 disk '/dev/rhdisk2','/dev/rhdisk3' failgroup DA2 disk '/dev/rhdisk4','/dev/rhdisk5';
SQL 删除磁盘组
su - gridsqlplus / as sysasmalter drop diskgroup data dismount;drop diskgroup data;drop diskgroup data including contents;
磁盘组的挂载与卸载
Oracle 11g RAC 一般数据文件都是存放于共享盘之上,要访问数据文件磁盘组必须得 mount ;当 ASM 实例启动后磁盘组自动被挂载, ASM 实例关闭后自动卸载。当在任意节点上新建的磁盘组时默认已经 mount 了,不过对于其他的节点需要手动挂载此磁盘组才行。
alter diskgroup data mount;alter diakgroup data dismount;--需要挂载卸载所有磁盘时ALTER DISKGROUP ALL MOUNT;ALTER DISKGROUP ALL DISMOUNT;
而在命令行下对于磁盘组的挂载需要在每个节点上进行,挂载磁盘组的命令是 mount,卸载则是 umount.
ASMCMD> mount -aASMCMD> mount dataASMCMD> umount -aASMCMD> umount data
在不影响整个磁盘组的情况下,可以通过 offline 命令使其中的一个磁盘脱机,这时这个磁盘中的数据将无法访问,此命令会立即生效,如想延后生效可通过 -t 参数指定一段时间,以小时(h)或分钟(m)为单位使其在指定的时间段里脱机。当然相反的则是 online 重新联机。
ASMCMD> offline -G data -D data_0001 -t 6h ASMCMD> online -G data -aASMCMD> online -G data -D data_0001
磁盘组重新平衡
当磁盘组中的磁盘数量发生变化时,磁盘组就会出现一次重新平衡,平衡的参数由 asm_power_limit 控制,一般默认为 1 ;最大为 11 最小为 0,共有 12 级,当为 0 时表示停止平衡,当为 11 时表示最快平衡速度,当然参数越大消耗资源越多。
在命令行下通过 rebal 对其进行重新平衡,通过 --power 来指定平衡级别,当使用 -w 参数时等待平衡完成才会返回结果,当不使用 -w 时则可以使用 lsop 来查磁盘进行的平衡操作。
ASMCMD> rebal --power 6 data -wASMCMD> lsopGroup_Name Dsk_Num State Power ASMCMD> rebal --power 4 dataASMCMD> lsopGroup_Name Dsk_Num State Power DATA REBAL WAIT 4
当然可可以通过 SQL 语句来进行操作,不过就是有点麻烦,如下所示。
SYS@ ydjttest1>show parameter powerNAME TYPE VALUE------------------------------------ ----------- ------------------------------asm_power_limit integer 1
设置磁盘组重新平衡参数为 11,查看平衡时间,当 v$asm_operation 视图无任何输出则表示平衡完成。
su - grid sqlplus / as sysasm alter diskgroup data rebalance power 11;select * from v$asm_operation;SYS@ +ASM1>alter diskgroup data rebalance power 11;Diskgroup altered.SYS@ +ASM1>select * from v$asm_operation;GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- 2 REBAL RUN 11 11 4 16 990 0SYS@ +ASM1>select * from v$asm_operation;GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- 2 REBAL WAIT 11SYS@ +ASM1>/no rows selected
五、磁盘组的读写信息
磁盘组中的数据是均衡分布在各个磁盘上的,但用户对于数据的访问却不一定是均衡分布在各个磁盘上的。通过 iostat 命令可以查看磁盘组中各个磁盘 IO 情况,便可以掌握数据库的基础性能,也可以对数据库调优提供依据。通过这条命令可以获取磁盘上的读和写的次数、数据量、所用时间、发生错误次数等信息。
iostat -G data
iostat -t -G data
iostat -e -G data
iostat --io -G data
ASMCMD> iostat -G dataGroup_Name Dsk_Name Reads Writes DATA DATA1 11420595712 2816842240 DATA DATA2 3462283776 2816842240 ASMCMD> iostat -t -G dataGroup_Name Dsk_Name Reads Writes Read_Time Write_Time DATA DATA1 11421136384 2816944640 9042.907064 5224.873 DATA DATA2 3462382080 2816944640 3240.906 5950.302256 ASMCMD>ASMCMD> iostat -e -G dataGroup_Name Dsk_Name Reads Writes Read_Err Write_Err DATA DATA1 11421775360 2817051136 0 0 DATA DATA2 3462480384 2817051136 0 0 ASMCMD>ASMCMD> iostat --io -G dataGroup_Name Dsk_Name Reads Writes DATA DATA1 682740 229155 DATA DATA2 197993 229155 ASMCMD>
以下是几个使用频率较高的 SQL:
SQL 添加磁盘组磁盘
root:chown grid:asmadmin /dev/rhdisk10chmod 660 /dev/rhdisk10su - gridsqlplus / as sysasmalter diskgroup DATA add disk '/dev/rhdisk10','/dev/rhdisk11';alter diskgroup DATA rebalance power 10;可指定名字--alter diskgroup DATA add disk '/dev/rhdisk10' NAME disk10,'/dev/rhdisk11' NAME disk11;
SQL 强制添加磁盘组
su - gridsqlplus / as sysasmcreate diskgroup ARCH external redundancy disk '/dev/asm2' force;col name for a20set line 200select group_number,name,state,total_mb/1024 total_gb,free_mb/1024 free_gb,type from v$asm_diskgroup;
SQL 删除磁盘组磁盘
su - gridsqlplus / as sysasmalter diskgroup DATA drop disk disk11; ---此处为前面指定的名字或默认生成的名字,并不是磁盘路径alter diskgroup DATA undrop disk disk11; --取消删除磁盘的操作alter diskgroup DATA rebalance power 10;
SQL 查看磁盘组使用率
su - oraclesqlplus / as sysdbaselect name,state,type,total_mb,free_mb from v$asm_diskgroup;SYS@ ydjttest2>select name,state,type,total_mb,free_mb from v$asm_diskgroup;NAME STATE TYPE TOTAL_MB FREE_MB------------------------------ ----------- ------ ---------- ----------OCR_VOTE MOUNTED NORMAL 2892 1966DATA CONNECTED NORMAL 9554 5594FRA CONNECTED NORMAL 7640 3532
SQL 查看磁盘组对应磁盘路径
su - oraclesqlplus / as sysdbacol path for a30select group_number,path,state,total_mb,free_mb from v$asm_disk;SYS@ ydjttest2>col path for a30SYS@ ydjttest2>select group_number,path,state,total_mb,free_mb from v$asm_disk;GROUP_NUMBER PATH STATE TOTAL_MB FREE_MB------------ ------------------------------ -------- ---------- ---------- 2 ORCL:DATA1 NORMAL 4777 2797 2 ORCL:DATA2 NORMAL 4777 2797 3 ORCL:FRA1 NORMAL 3820 1766 3 ORCL:FRA2 NORMAL 3820 1766 1 ORCL:OCR_VOTE1 NORMAL 964 655 1 ORCL:OCR_VOTE2 NORMAL 964 655 1 ORCL:OCR_VOTE3 NORMAL 964 6567 rows selected.
SQL 查看磁盘组访问情况
su - oraclesqlplus / as sysdbaselect group_number,instance_name,db_name,status from v$asm_client;SYS@ ydjttest1>select group_number,instance_name,db_name,status from v$asm_client;GROUP_NUMBER INSTANCE_NAME DB_NAME STATUS------------ ---------------------------------------------------------------- -------- ------------ 2 +ASM1 ydjt_tes CONNECTED 3 +ASM1 ydjt_tes CONNECTEDSYS@ ydjttest2>select group_number,instance_name,db_name,status from v$asm_client;GROUP_NUMBER INSTANCE_NAME DB_NAME STATUS------------ ---------------------------------------------------------------- -------- ------------ 2 +ASM2 ydjt_tes CONNECTED 3 +ASM2 ydjt_tes CONNECTED
六、磁盘组中的目录管理
ASM 里面有一整套完整的目录层次,此目录由 ASM 实例或者数据库实例自动创建。而磁盘组中的文件则是由实例自动产生,他们实际上只是一些“系统别名”,相当于操作系统中的符号链接文件或者快捷方式。下面是一个简单的列举方便查看,更多的信息可自行查看这里不做介绍,本次就到这里了,花费巨大时间希望对你有所帮助。
ASMCMD> lsDATA/FRA/OCR_VOTE/ASMCMD> cd OCR_VOTE/ASMCMD> lsJiekeXu-cluster/ASMCMD> cd JiekeXu-cluster/ASMCMD> lsASMPARAMETERFILE/OCRFILE/ASMCMD> cd OCRFILE ASMCMD> lsREGISTRY.255.985299565ASMCMD> cd ../ASMPARAMETERFILEASMCMD> lsREGISTRY.253.985299561ASMCMD> cd ../../../DATAASMCMD> lsYDJT_TEST/ASMCMD> cd YDJT_TEST/ASMCMD> lsCONTROLFILE/DATAFILE/ONLINELOG/PARAMETERFILE/TEMPFILE/spfileydjt_test.oraASMCMD> cd PARAMETERFILE/
80%
推荐阅读:
Linux Oracle 11.2.0.4 单机数据库升级至最新补丁安装指北
万字详解Oracle架构、原理、进程,学会世间再无复杂架构
模拟真实环境下超简单超详细的 MySQL 5.7 安装
Oracle 11GR2 RAC 最新补丁 190416 安装指导
Oracle 11gR2 RAC 集群服务启动与关闭总结
CentOS6.7安装PostgreSQL10.9详细教程
Oracle RAC11gR2 ADG搭建实施与应用
史上最全的 OGG 基础知识整理
(长按添加微信公众号,更多精彩内容不错过!)
码字不易,点赞、转发是一种对作者的鼓励!
centos7创建asm磁盘_Oracle ASM 磁盘组基础知识整理(收藏版)相关推荐
- 矩阵论(零):线性代数基础知识整理(2)——矩阵的秩与向量组的秩
矩阵论专栏:专栏(文章按照顺序排序) 本篇博客承接上篇矩阵论(零):线性代数基础知识整理(1)--逆矩阵.初等变换.满秩分解,主要整理秩相关的结论. 线性方程组的解与向量组的秩 线性方程组的解(初步讨 ...
- linux挂载的磁盘受保护了,Linux 基础知识 磁盘加密保护和开机自动挂载
一.磁盘加密(luks加密) LUKS(Linux Unified Key Setup)为Linux硬盘分区加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令.因为它的加密 ...
- linux文件属性之用户和组基础知识
root :x :0 :0 :root ...
- java二维数组遍历后转为一维数组_[基础篇]-基础知识整理-05-数组基本概念
数组 数组是大部分编程语言所支持的数据结构,Java也支持数组,Java的数组是一种引用类型的变量,Java程序通过数组引用变量来操作数组,包括获取数组的长度,访问数组的值等. 数组的基本概念 数组是 ...
- 在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)...
作者:Dflying Chen (http://dflying.cnblogs.com/) 注:Atlas中的Mashup极其复杂,其中涉及众多的对象与架构,为了写这篇文章,我花了不少时间学习研究.同 ...
- 【你不能错过的数组基础知识整理】(学习笔记9--数组下)
目录 一.二维数组 1.二维数组的定义 2.二维数组的初始化 3.二维数组元素的访问 4.二维数组作为函数参数 5.数组的数组 二.数组应用实例 1.数组排序 2.转置矩阵 前言 新星计划第三篇博文, ...
- oracle仲裁磁盘是一块磁盘吗,基于ASM冗余设计的架构,仲裁磁盘组应该如何去规划?...
ASM使用独特的镜像算法:不镜像磁盘,而是镜像盘区.作为结果,为了在产生故障时提供连续的保护,只需要磁盘组中的空间容量,而不需要预备一个热备(hot spare)磁盘.不建议用户创建不同尺寸的故障组, ...
- oracle asm 删除diskgroup,ASM磁盘组删除DISK操作
没想到这么简单的操作,由于不熟悉还碰到了两个小问题. [oracle@dbserver1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Pr ...
- linux asm 磁盘管理,asm磁盘管理篇
linux上asm添加磁盘方法 划分磁盘 [root@localhost init.d]# fdisk /dev/sdd Command (m for help): n Command action ...
最新文章
- 结合ashx来在DataGrid中显示从数据库中读出的图片
- Cell:无症状新冠患者阳性持续105天
- spark+数据倾斜+解决方案
- hellowolrd 的系统调用
- unity 游戏第一次安装完之后运行,切出来,点击桌面图标后黑屏问题
- java 线程池 源码_java线程池源码分析
- 快看过来,傻瓜都能理解的 Netty 模型架构
- 基于快速排序思想的三个算法题
- 【转】 Android 屏幕切换总结
- 编写高性能Web应用程序的10个技巧
- 对 VR 头显 HTC VIVE 的调研
- 【SLAM】安装 g2o_viewer
- navicat fo mysql 教程_Navicat For MySQL的简单使用教程
- stm32 r8025
- java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮
- 调整Word中英文与汉字之间的空隙
- delphi对比易语言_易语言转换delphi 易语言编程100例
- keil5破解安装包下载及STM32固件包下载
- 无线测温系统应用 对变电所进行实时的在线监测 生产高效安全
- 中央财经大学c语言试题答案,中央财经大学C语言题
热门文章
- java 上传 进度条_Ajax上传文件并显示进度条
- matlab 判断一个数组中有没有重复的元素
- git回滚到某一个commit
- mysql+导出当前配置,mysql 查看当前使用的配置文件my.cnf的方法
- jquery 验证小数点后几位_利用jquery实现验证输入的是否是数字、小数,包含保留几位小数...
- 解决在非Activity中使用startActivity
- linux shell 切割文件,linux shell 将文件按照行数以及顺序拆分成多个文件
- Android开发面试题之activity生命周期变化
- 现代通用计算机的雏,1834年巴贝奇设计的( )是现代通用计算机的雏形 答案:分析机...
- Mybatis源码分析--Mapper接口的代理生成原理