Oracle 之利用BBED修改数据块SCN—-没有备份数据文件的数据恢复

测试环境 
OS:redhat6.6 
oracle:12.1.0.2 
 BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接。 
1.安装BBED 
[oracle@12cdock software]$ cp bbedus.msb $ORACLE_HOME/rdbms/mesg 
[oracle@12cdock software]$ cp sbbdpt.o $ORACLE_HOME/rdbms/lib 
[oracle@12cdock software]$ cp ssbbded.o $ORACLE_HOME/rdbms/lib 
[oracle@12cdock software]$ cd $ORACLE_HOME/rdbms/lib/ 
[oracle@12cdock lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 

Linking BBED utility (bbed) 
rm -f /u01/app/oracle/product/12.1.0.2/db_1/rdbms/lib/bbed 
/u01/app/oracle/product/12.1.0.2/db_1/bin/orald -o /u01/app/oracle/product/12.1.0.2/db_1/rdbms/lib/bbed -m64 -z noexecstack -Wl, 
–disable-new-dtags -L/u01/app/oracle/product/12.1.0.2/db_1/rdbms/lib/ -L/u01/app/oracle/product/12.1.0.2/db_1/lib/ -L/u01/app/oracle/product/12.1.0.2/db_1/lib/stubs/   
/u01/app/oracle/product/12.1.0.2/db_1/lib/s0main.o /u01/app/oracle/product/12.1.0.2/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/12.1.0.2/db_1/rdbms/lib/sbbdpt.o  
`cat /u01/app/oracle/product/12.1.0.2/db_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -ldbtools12 -lclntsh -lclntshcore   
`cat /u01/app/oracle/product/12.1.0.2/db_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12  
`cat /u01/app/oracle/product/12.1.0.2/db_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnz12 -lzt12 -lztkg12 -lztkg12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12  
`cat /u01/app/oracle/product/12.1.0.2/db_1/lib/ldflags`   -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12  
`cat /u01/app/oracle/product/12.1.0.2/db_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12   
 `cat /u01/app/oracle/product/12.1.0.2/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/12.1.0.2/db_1/lib -lm    
 `cat /u01/app/oracle/product/12.1.0.2/db_1/lib/sysliblist` -ldl -lm   -L/u01/app/oracle/product/12.1.0.2/db_1/lib 
[oracle@12cdock lib]$ cp bbed /u01/app/oracle/product/12.1.0.2/db_1/bin/ 
BBED是Oracle 内部使用的命令,所以Oracle 不提供技术支持。 为了安全BBED设置了口令保护,默认密码为blockedit。 
[oracle@12cdock lib]$ bbed 
Password:  

BBED: Release 2.0.0.0.0 – Limited Production on Wed Feb 22 09:47:07 2017 

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved. 

************* !!! For Oracle Internal Use only !!! *************** 

BBED> show  
FILE#          0 
BLOCK#         1 
OFFSET         0 
DBA            0x00000000 (0 0,1) 
FILENAME       
BIFILE         bifile.bbd 
LISTFILE       
BLOCKSIZE      8192 
MODE           Browse 
EDIT           Unrecoverable 
IBASE          Dec 
OBASE          Dec 
WIDTH          80 
COUNT          512 
LOGFILE        log.bbd 
SPOOL          No 

将现有数据文件在bbed中指定,没有的话先在sqlplus中创建 
BBED> set filename ‘/u01/app/oracle/oradata/ORCL/datafile/test.dbf’ 
FILENAME       /u01/app/oracle/oradata/ORCL/datafile/test.dbf 

BBED> show all; 
FILE#          0 
BLOCK#         1 
OFFSET         0 
DBA            0x00000000 (0 0,1) 
FILENAME       /u01/app/oracle/oradata/ORCL/datafile/test.dbf 
BIFILE         bifile.bbd 
LISTFILE       
BLOCKSIZE      8192 
MODE           Browse 
EDIT           Unrecoverable 
IBASE          Dec 
OBASE          Dec 
WIDTH          80 
COUNT          512 
LOGFILE        log.bbd 
SPOOL          No 

2.使用参数文件连接BBED 
a)查询出当前的数据文件并保存在文本文件中 
SQL>spool psdb_file.txt 
SQL> select file#||’ ‘||name||’ ‘||bytes from v$datafile ; 

FILE#||”||NAME||”||BYTES 
——————————————————————————– 
1 /data/oradata/ocrl/datafile/system01.dbf 912261120 
2 /data/oradata/ocrl/datafile/sysaux01.dbf 1247805440 
3 /data/oradata/ocrl/datafile/undotbs01.dbf 765460480 
4 /data/oradata/ocrl/datafile/users01.dbf 28835840 
5 /data/oradata/ocrl/datafile/test.dbf 10485760 
6 /data/oradata/ocrl/datafile/tstest.dbf 10485760 

6 rows selected. 

SQL> spool off 
注意:保存在文件里的文件号要与我们数据库查询出来的FILE#相同 
ocrl:/home/oracle@oracle1>cat psdb_file.txt  
1 /data/oradata/ocrl/datafile/system01.dbf 912261120 
2 /data/oradata/ocrl/datafile/sysaux01.dbf 1247805440 
3 /data/oradata/ocrl/datafile/undotbs01.dbf 765460480 
4 /data/oradata/ocrl/datafile/users01.dbf 28835840 
5 /data/oradata/ocrl/datafile/test.dbf 10485760 
6 /data/oradata/ocrl/datafile/tstest.dbf 10485760 

b)BBED使用参数文件登陆 
[oracle@12cdock ~]$cat psdb_file.txt  
1 /data/oradata/ocrl/datafile/system01.dbf 912261120 
2 /data/oradata/ocrl/datafile/sysaux01.dbf 1247805440 
3 /data/oradata/ocrl/datafile/undotbs01.dbf 765460480 
4 /data/oradata/ocrl/datafile/users01.dbf 28835840 
5 /data/oradata/ocrl/datafile/test.dbf 10485760 
6 /data/oradata/ocrl/datafile/tstest.dbf 10485760 

[oracle@12cdock ~]$cat bbed_parameter.txt  
blocksize=8192 
listfile=/home/oracle/psdb_file.txt 
mode=edit 
ocrl:/home/oracle@oracle1>bbed parfile=/home/oracle/bbed_parameter.txt  
Password:  

BBED: Release 2.0.0.0.0 – Limited Production on Tue Feb 21 15:17:57 2017 

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved. 

************* !!! For Oracle Internal Use only !!! *************** 

BBED> info 
 File#  Name                                                        Size(blks) 
 —–  —-                                                        ———- 
     1  /data/oradata/ocrl/datafile/system01.dbf                        111360 
     2  /data/oradata/ocrl/datafile/sysaux01.dbf                        152320 
     3  /data/oradata/ocrl/datafile/undotbs01.dbf                        93440 
     4  /data/oradata/ocrl/datafile/users01.dbf                           3520 
     5  /data/oradata/ocrl/datafile/test.dbf                              1280 
     6  /data/oradata/ocrl/datafile/tstest.dbf                            1280 

BBED>  

3.破坏system表空间文件 
注意:这里最好先做好备份 
ocrl:/data/oradata/ocrl/datafile@oracle1>cp system01.dbf system01.dbf.bak 
切换日志模拟生产交易,更新SCN 
SQL> alter system switch logfile;//多切几次 

System altered. 

SQL> / 

System altered. 

SQL> / 

System altered. 

SQL> / 

System altered. 

SQL> / 

System altered. 

SQL> / 

System altered. 

SQL>  
把旧的system文件直接复制替换掉新的 
ocrl:/data/oradata/ocrl/datafile@oracle1>cp system01.dbf.bak system01.dbf 
再次切换日志模拟生产交易 
SQL> alter system switch logfile; 

System altered. 

SQL> / 

System altered. 

SQL> / 

alter system switch logfile 

ERROR at line 1: 
ORA-03113: end-of-file on communication channel 
Process ID: 9115 
Session ID: 20 Serial number: 33669 
出现问题,数据库直接宕掉 

ocrl:/home/oracle@oracle1>sqlplus /  as sysdba 

SQL*Plus: Release 12.1.0.2.0 Production on Tue Feb 21 14:53:47 2017 

Copyright (c) 1982, 2014, Oracle.  All rights reserved. 

Connected to an idle instance. 

SQL> startup 
ORACLE instance started. 

Total System Global Area  754974720 bytes 
Fixed Size    2928968 bytes 
Variable Size  524291768 bytes 
Database Buffers  222298112 bytes 
Redo Buffers    5455872 bytes 
Database mounted. 
ORA-01113: file 1 needs media recovery 
ORA-01110: data file 1: ‘/data/oradata/ocrl/datafile/system01.dbf’ 

SQL> col name for a50 
SQL> select name,checkpoint_change# from v$datafile; 

NAME   CHECKPOINT_CHANGE# 
————————————————– —————— 
/data/oradata/ocrl/datafile/system01.dbf     12717804 
/data/oradata/ocrl/datafile/sysaux01.dbf     12717804 
/data/oradata/ocrl/datafile/undotbs01.dbf     12717804 
/data/oradata/ocrl/datafile/users01.dbf     12717804 
/data/oradata/ocrl/datafile/test.dbf     12717804 
/data/oradata/ocrl/datafile/tstest.dbf     12717804 

6 rows selected. 
scn 转换成16进制 
SQL> select to_char(12717804,’xxxxxxxx’) from dual; 

TO_CHAR(1 
——— 
   c20eec 

SQL> select name,checkpoint_change# from v$datafile_header; 

NAME   CHECKPOINT_CHANGE# 
————————————————– —————— 
/data/oradata/ocrl/datafile/system01.dbf     12717402 
/data/oradata/ocrl/datafile/sysaux01.dbf     12717804 
/data/oradata/ocrl/datafile/undotbs01.dbf     12717804 
/data/oradata/ocrl/datafile/users01.dbf     12717804 
/data/oradata/ocrl/datafile/test.dbf     12717804 
/data/oradata/ocrl/datafile/tstest.dbf     12717804 

6 rows selected. 
可以看到数据库system01.dbf的scn点为12717402明显是用的备份的数据文件。oracle在open数据库时要对控制文件,数据文件头的scn进行检查,一致才能打开,所以这里我们通过ddeb来修改数据文件头让它和其他的数据文件的scn相同,达到起库的目的。 
登陆bbed 
ocrl:/home/oracle@oracle1>bbed parfile=bbed_parameter.txt  
Password:  

BBED: Release 2.0.0.0.0 – Limited Production on Tue Feb 21 14:58:25 2017 

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved. 

************* !!! For Oracle Internal Use only !!! *************** 
用bbed查询bbed01数据文件结构信息 
BBED> set dba 1,1 
DBA            0x00400001 (4194305 1,1) 
Bbed查看kcvfh信息 
BBED> p kcvfhckp 
struct kcvfhckp, 36 bytes                   @484      
   struct kcvcpscn, 8 bytes                 @484      
      ub4 kscnbas                           @484      0x00c20d5a 
      ub2 kscnwrp                           @488      0x0000 
   ub4 kcvcptim                             @492      0x37d28348 
   ub2 kcvcpthr                             @496      0x0001 
   union u, 12 bytes                        @500      
      struct kcvcprba, 12 bytes             @500      
         ub4 kcrbaseq                       @500      0x000000bb 
         ub4 kcrbabno                       @504      0x00000002 
         ub2 kcrbabof                       @508      0x0010 
   ub1 kcvcpetb[0]                          @512      0x02 
   ub1 kcvcpetb[1]                          @513      0x00 
   ub1 kcvcpetb[2]                          @514      0x00 
   ub1 kcvcpetb[3]                          @515      0x00 
   ub1 kcvcpetb[4]                          @516      0x00 
   ub1 kcvcpetb[5]                          @517      0x00 
   ub1 kcvcpetb[6]                          @518      0x00 
   ub1 kcvcpetb[7]                          @519      0x00 

BBED> set filename ‘/data/oradata/ocrl/datafile/system01.dbf’ 
FILENAME       /data/oradata/ocrl/datafile/system01.dbf 

BBED> p kcvfhckp 
struct kcvfhckp, 36 bytes                   @484      
   struct kcvcpscn, 8 bytes                 @484      
      ub4 kscnbas                           @484      0x00c20d5a 
      ub2 kscnwrp                           @488      0x0000 
   ub4 kcvcptim                             @492      0x37d28348 
   ub2 kcvcpthr                             @496      0x0001 
   union u, 12 bytes                        @500      
      struct kcvcprba, 12 bytes             @500      
         ub4 kcrbaseq                       @500      0x000000bb 
         ub4 kcrbabno                       @504      0x00000002 
         ub2 kcrbabof                       @508      0x0010 
   ub1 kcvcpetb[0]                          @512      0x02 
   ub1 kcvcpetb[1]                          @513      0x00 
   ub1 kcvcpetb[2]                          @514      0x00 
   ub1 kcvcpetb[3]                          @515      0x00 
   ub1 kcvcpetb[4]                          @516      0x00 
   ub1 kcvcpetb[5]                          @517      0x00 
   ub1 kcvcpetb[6]                          @518      0x00 
   ub1 kcvcpetb[7]                          @519      0x00 
查看正常数据文件头 
BBED> set count 26 
COUNT          26 
BBED> d offset 484 dba 3,1 
 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_d0xj0lhx_.dbf (3) 
 Block: 1                Offsets:  484 to  509           Dba:0x00c00001 
———————————————————————— 
 6dcf1d00 00000000 41a5d337 0100a792 2a000000 02000000 1000  

 <32 bytes per line> 

BBED> d offset 484 dba 4,1 
 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_d0xj4qc1_.dbf (4) 
 Block: 1                Offsets:  484 to  509           Dba:0x01000001 
———————————————————————— 
 6dcf1d00 00000000 41a5d337 0100a792 2a000000 02000000 1000  

 查看system文件的数据文件头 

BBED> d offset 484 dba 1,1 
 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_d0xj2b4p_.dbf (1) 
 Block: 1                Offsets:  484 to  509           Dba:0x00400001 
———————————————————————— 
 e8c81d00 00000000 f5a2d337 01000000 15000000 02000000 1000  

 <32 bytes per line> 

修改system文件头 
BBED> modify /x 6dcf dba 1,1 offset 484 
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y 
 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_d0xj2b4p_.dbf (1) 
 Block: 1                Offsets:  484 to  509           Dba:0x00400001 
———————————————————————— 
 6dcf1d00 00000000 f5a2d337 01000000 15000000 02000000 1000  

 <32 bytes per line> 

BBED> sum dba 1,1 apply 
Check value for File 1, Block 1: 
current = 0x2438, required = 0x2438 

BBED> d offset dba 1,1 
BBED-00207: invalid offset specifier (dba) 

BBED> d offset 484 dba 1,1 
 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_d0xj2b4p_.dbf (1) 
 Block: 1                Offsets:  484 to  509           Dba:0x00400001 
———————————————————————— 
 6dcf1d00 00000000 f5a2d337 01000000 15000000 02000000 1000  

 <32 bytes per line> 

打开数据库 
SQL> alter database open; 
alter database open 

ERROR at line 1: 
ORA-01113: file 1 needs media recovery 
ORA-01110: data file 1: ‘/data/oradata/ocrl/datafile/system01.dbf’ 

SQL> recover database; 
Media recovery complete. 
SQL> alter database open; 

Database altered. 

SQL> alter system switch logfile; 

System altered. 

SQL> / 

System altered.

Image placeholder
Some_power
未设置
  46人点赞

没有讨论,发表一下自己的看法吧

推荐文章
GoWeb教程_12.4. 备份和恢复

这小节我们要讨论应用程序管理的另一个方面:生产服务器上数据的备份和恢复。我们经常会遇到生产服务器的网络断了、硬盘坏了、操作系统崩溃、或者数据库不可用了等各种异常情况,所以维护人员需要对生产服务器上的应

被美列入出口“黑名单”,华为海思凌晨发信:所有备胎芯片全转正,要科技自立

大数据文摘编辑部出品本周三,美国白宫和美国商务部双双采取行动。特朗普签署针对华为的行政令。美国商务部将华为列入管制“实体清单”,从事实上限制华为对美出售和从美采购。这些行动将禁止华为向美国市场出售技术

Oracle SCN机制详细解读

深入剖析–OracleSCN机制详细解读http://blog.chinaunix.net/uid-20274021-id-1969571.htmlSCN即系统改变号(SystemChangeNumb

为什么mysql索引要使用B+树,而不是B树,红黑树

我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的操作,磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片

使用BCC工具分析系统性能

系统管理员可以通过利用BCC(BPFCompilerCollection)库的工具来分析操作系统性能和获取操作系统信息。BCC介绍BCC工具全称BPFCompilerCollection(BCC),是

Oracle数据库不同损坏级别的恢复详解

墨墨导读:在DBA的日常工作中不可避免存在着数据库的损坏,本文将主要介绍Oracle数据库遇到不同损坏级别下的应该采用的恢复方法,供读者在遇到此类情景时,能的找到适合自己的恢复方法,提高工作效率。数据

警告:ORA-00600 2252 错误正在SCN问题下不断爆发

自2019年6月23日之后,Oracle启用了SCN自动Auto-Rollover的新特性,也就是自动调整了SCN的增长率算法(缺省32K每秒,允许SCN最高以每秒96K计算)。注意,这里说的自动,是

机器扭碎,强力消磁还能恢复!数据中心年年升级,废弃“云垃圾”让谷歌头大

大数据文摘出品作者:蔡婕、林安安、曹培信今年7月1日,《上海市生活垃圾管理条例》正式实施,它被称为“史上最严垃圾分类措施”。条例一出,这4种颜色的桶,就彻底改变了上海人民的生活。但是一种新型的垃圾——

解决云中灾难恢复其实只需三个步骤!

很多人都认为,DR(灾难恢复)内置于云中,我们只需采用云本身的安全机制就行了,但事实并非如此。尽管,许多云提供商在数据恢复方面做得很好,但是如果你自己不做灾备,会错过很多只有真正意义上的DR系统才能具

我们为什么应该关注SaaS数据备份?

使用基于云的应用程序,也称为软件即服务(SaaS),如Office365和Salesforce,现在几乎已成为大多数组织运营的主流部分。依赖这些服务承载您业务的关键部分意味着它们的可用性对确保您的业务

cnpm如何安装vue?

如何使用cnpm安装vue?步骤1:确保你电脑上安装了最新版本的Node.js。步骤2:安装淘宝镜像(国内使用npm速度很慢,可以使用淘宝定制的cnpm(gzip压缩支持)命令行工具代替默认的npm)

MySQL 定时备份

1设置好crontab定时任务备份 #每天备份三次数据库 05,15,22***sh/data/script/alldatabase_back.sh&>/dev/null #每天2点备份 02***s

企业备份软件选型指南:这三点是必关注项

企业备份软件,简单来说可以将数据和应用程序从主存储平台转移到二级存储。过去,磁带和磁盘常被用作二级存储媒介。如今,越来越多的供应商也把支持公有云存储作为一项长期战略。在现代IT实践中,备份工具已经从仅

17 万条人脸数据遭公开售卖;什么值得买辟谣删库跑路新闻;Oracle 修改 JDK 下载要求

苹果发布iPhone11,游戏和电视订阅服务每月4.99美元 苹果在周二的新闻发布会上发布了iPhone11、iPhone11Pro和iPhone11ProMax三款智能手机,9月13日开放预购,9月

利用 samba 实现 Ubuntu18.04 与 Windows10 的文件共享

在Ubuntu18.04上安装samba服务 打开终端,使用下面指令安装samba服务。 $sudoaptinstallsamba $sudoaptinstallsmbclient 在Ubuntu1

为什么RedisCluster会设计成16384个槽呢?

RedisCluster是Redis的集群实现,内置数据自动分片机制,集群内部将所有的key映射到16384个Slot中,集群中的每个RedisInstance负责其中的一部分的Slot的读写。集群客

PHP 中使用 TUS 协议来实现大文件的断点续传

你是否曾经为大文件上传而苦恼?如果文件上传的过程中,因为某种原因中断了,是否可以从中断的位置继续上传,而不用重新上传整个文件?如果你有这样的困惑,那么请继续阅读下面的内容。 在现代网站应用中,上传文

[Java 程序员眼中的 Linux] Linux 下常用压缩文件的解压、压缩

Linux下常用压缩文件的解压、压缩 常用压缩包解压命令整理 Linux后缀为.tar.gz格式的文件-解压 命令:tarzxvfXXXXXX.tar.gz Linux后缀为.bz2格式的文件-解压

JavaScript 的数据结构和算法

现在有个还不是好的项目,未来会成为好的项目的项目想介绍给大家。传送门https://github.com/MasterShu/JavaScript-Da...这个是本人在维护的一个项目。主要是使用Ja

clickhouse之修改用户密码

案例在mac操作系统下使用docker启动镜像参考:https://hub.docker.com/search...一、docker是否启动成功curl'http://localhost:8123/'

Redis的数据结构和内部编码

redis是单线程,一次只执行一条命令,那为什么可以这么快: 纯内存 非阻塞IO 避免线程切换和竞态消耗 在使用过程中要注意: 一次只运行一条命令 避免长(慢)命令,例如keys、flushall、f

基于内存和文件存储的 queue worker, 不用 Redis 适合单进程使用没有外部依赖

因为最近要做一个简单的并发任务系统,在github上面找了一圈并没有简单可依赖的库,所以自己写了一个。欢迎大家Review贡献代码。项目地址https://github.com/iflamed/mfw

可视化的JavaScript:JavaScript引擎运行原理

JavaScript很酷,但是JavaScript引擎是如何才能理解我们编写的代码呢?作为JavaScript开发人员,我们通常不需要自己处理编译器。然而,了解JavaScript引擎的基础知识并了解

一些JavaScript 类(class)中需要了解的知识

JavaScript使用原型继承:每个对象都从原型对象继承属性和方法。在Java或Swift等语言中使用的传统类作为创建对象的蓝图,在JavaScript中不存在,原型继承仅处理对象。原型继承可以模拟

jquery hasClass()方法怎么用?

jqueryhasClass()方法怎么用?hasClass()方法验证匹配元素是否包含指定的类,包含则返回true,否则返回false。语法结构:$(selector).hasClass(class