RAID软件磁盘阵列


  RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护。RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能.

  软件磁盘整列通过mdadm命令创建.

RAID等级


  • RAID-0: 等量模式,stripe,性能较佳,磁盘利用率100%
  • RAID-1: 镜像模式,mirror,安全性较佳,磁盘利用率50%
  • RAID-0+1: 先组成RAID-0,再有RAID-0组成RAID-1 性能安全兼顾,磁盘利用率50%
  • RAID-1+0:先组成RAID-1,再有RAID-1组成RAID-0  性能安全兼顾,磁盘利用率50%
  • RAID-5: 等量模式与分布式奇偶校验,性能与安全份均衡,磁盘可用量等于n-1
  • RAID-6: 等量模式与双分布式奇偶校验,性能与安全均衡,磁盘可用量等于n-2

RAID-0测试


  RAID-0是等量模式,最好由两块相同型号,相同容量的磁盘来组成.这种模式的RAID会将磁盘想切除等量的区块(chunk),当有存储文件需求时,就会先把文件切割成一定数目的区块,然后依次存入各个磁盘上.如图示

下面是使用mdadm工具创建RAID-0过程

  • 创建两个1G的分区/dev/vdb10,/dev/vdb11
  • 使用mdadm工具创建raid0磁盘阵列,命名为/dev/md0
###新建分区/dev/vdb10,/dev/vdb11略过

[root@zwj ~]# mdadm   --create /dev/md0 --level= --raid-devices= /dev/vdb10 /dev/vdb11  #同mdadm -C /dev/md0 -l raid0 -n 2 /dev/vdb10 /dev/vdb11 ,-C 接阵列名,-l接等级,-n 接使用磁盘数
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. [root@zwj ~]# mdadm -E /dev/vdb10 /dev/vdb11    #查看阵列中的磁盘信息
/dev/vdb10:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Name : zwj: (local to host zwj)
Creation Time : Sun May ::
Raid Level : raid0 
 
Raid Devices : Avail Dev Size : (1023.70 MiB 1073.43 MB)
Data Offset : sectors
Super Offset : sectors
Unused Space : before= sectors, after= sectors
State : clean
Device UUID : c645eb97:9dc15ee8:9148e372:0c26b998 Update Time : Sun May ::
Bad Block Log : entries available at offset sectors
Checksum : 402c224f - correct
Events : Chunk Size : 512K Device Role : Active device
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/vdb11:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Name : zwj: (local to host zwj)
Creation Time : Sun May ::
Raid Level : raid0
Raid Devices : Avail Dev Size : (1023.70 MiB 1073.43 MB)
Data Offset : sectors
Super Offset : sectors
Unused Space : before= sectors, after= sectors
State : clean
Device UUID : 54fd15e5:8ed74a79:0b1efd81:7995a016 Update Time : Sun May ::
Bad Block Log : entries available at offset sectors
Checksum : ab4434b5 - correct
Events : Chunk Size : 512K Device Role : Active device
Array State : AA ('A' == active, '.' == missing, 'R' == replacing) [root@zwj ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid0
Array Size : (2047.00 MiB 2146.44 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Events : Number Major Minor RaidDevice State
active sync /dev/vdb10
active sync /dev/vdb11 [root@zwj ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 vdb11[1] vdb10[0]
blocks super 1.2 512k chunks unused devices: <none>
[root@zwj ~]# mkdir -p /mnt/raid0    #创建挂着目录
[root@zwj ~]# mkfs.ext3 /dev/md >/dev/null
[root@zwj ~]# mount /dev/md0 /mnt/raid0
[root@zwj ~]# df
。。。
/dev/md0        2.0G  236M  1.7G  13% /mnt/raid

RAID-1测试


  RAID-1是镜像模式,最好由两块相同型号,相同容量的磁盘来组成.这种模式的RAID有点主要是数据的备份,但磁盘使用率低.如图示

[root@zwj raid1]# fdisk -l |grep "/dev/vdb1[2-9]"         #新建分区为200M
/dev/vdb12          56186       56592      205096+  83  Linux
/dev/vdb13          56593       56999      205096+  83  Linux [root@zwj raid0]# mdadm -C /dev/md1 -l 1 -n 2 /dev/vdb{12,13}
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@zwj raid0]# mdadm -E /dev/vdb12 /dev/vdb13
/dev/vdb12:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
           Name : zwj:1  (local to host zwj)
  Creation Time : Sun May  7 19:49:56 2017
     Raid Level : raid1
   Raid Devices : 2  Avail Dev Size : 409905 (200.15 MiB 209.87 MB)
     Array Size : 204928 (200.13 MiB 209.85 MB)
  Used Dev Size : 409856 (200.13 MiB 209.85 MB)
    Data Offset : 288 sectors
   Super Offset : 8 sectors
   Unused Space : before=200 sectors, after=49 sectors
          State : clean
    Device UUID : e4909dcf:f2fb8812:0c5a70cb:021dd248     Update Time : Sun May  7 19:49:58 2017
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 4478c6ef - correct
         Events : 17    Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/vdb13:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
           Name : zwj:1  (local to host zwj)
  Creation Time : Sun May  7 19:49:56 2017
     Raid Level : raid1
   Raid Devices : 2  Avail Dev Size : 409905 (200.15 MiB 209.87 MB)
     Array Size : 204928 (200.13 MiB 209.85 MB)
  Used Dev Size : 409856 (200.13 MiB 209.85 MB)
    Data Offset : 288 sectors
   Super Offset : 8 sectors
   Unused Space : before=200 sectors, after=49 sectors
          State : clean
    Device UUID : 170d0094:52cdc3d9:993a58b1:b2f3c341     Update Time : Sun May  7 19:49:58 2017
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : aeefcbc0 - correct
         Events : 17    Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
[root@zwj ~]# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sun May  7 19:49:56 2017
     Raid Level : raid1
     Array Size : 204928 (200.13 MiB 209.85 MB)
  Used Dev Size : 204928 (200.13 MiB 209.85 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent     Update Time : Sun May  7 19:49:58 2017
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0            Name : zwj:1  (local to host zwj)
           UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
         Events : 17     Number   Major   Minor   RaidDevice State
       0     252       28        0      active sync   /dev/vdb12
       1     252       29        1      active sync   /dev/vdb13 [root@zwj ~]# mkfs.ext3 /dev/md1 >/dev/null
[root@zwj ~]# mkdir -p /mnt/raid1
[root@zwj ~]# mount   /dev/md1 /mnt/raid1
[root@zwj ~]# cd /mnt/raid1/
[root@zwj raid1]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   13G  5.9G  69% /
/dev/vdb1        20G  936M   18G   5% /mydata
/dev/md127      2.0G  236M  1.7G  13% /mnt/raid0
/dev/md1        194M  5.6M  179M   4% /mnt/raid1        #只有200M #删除/dev/vdb13
[root@zwj ~]# mdadm --detail /dev/md126
/dev/md126:
        Version : 1.2
  Creation Time : Sun May  7 19:49:56 2017
     Raid Level : raid1
     Array Size : 204928 (200.13 MiB 209.85 MB)
  Used Dev Size : 204928 (200.13 MiB 209.85 MB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent     Update Time : Sun May  7 20:14:10 2017
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0            Name : zwj:1  (local to host zwj)
           UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
         Events : 23     Number   Major   Minor   RaidDevice State
       0     252       28        0      active sync   /dev/vdb12
       2       0        0        2      removed [root@zwj ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   13G  5.9G  69% /
/dev/vdb1        20G  936M   18G   5% /mydata
/dev/md126      194M  5.6M  179M   4% /mnt/raid1

RAID-10测试

  RAID 10 是组合 RAID 1 和 RAID 0 形成的。要设置 RAID 10,我们至少需要4个磁盘,提供更好的性能,在 RAID 10 中我们将失去一半的磁盘容量,读与写的性能都很好,因为它会同时进行写入和读取,它能解决数据库的高 I/O 磁盘写操作,也保证了数据的安全.

我们使用四个分区测试/dev/vdb{12..15} 大小各为200M

[root@zwj ~]# mdadm -C /dev/md10 -l  -n  /dev/vdb{..}
mdadm: /dev/vdb13 appears to be part of a raid array:
level=raid1 devices= ctime=Sun May ::
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
[root@zwj ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid10

Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :

Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : Layout : near=
Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : 3d1b1b2e:daa4597f:bf838bd1:c6b82c78
Events : Number Major Minor RaidDevice State
active sync set-A /dev/vdb12
active sync set-B /dev/vdb13
active sync set-A /dev/vdb14
active sync set-B /dev/vdb15
[root@zwj ~]# mkfs.ext3 /dev/md10 >/dev/null
[root@zwj ~]# mkdir /mnt/raid10;mount /dev/md10 /mnt/raid10
[root@zwj ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   13G  5.9G  69% /
/dev/vdb1        20G  936M   18G   5% /mydata
/dev/md10       386M   11M  356M   3% /mnt/raid10

除了上面的方法,还有一种创建RAID-10的方法,先使用4个分区创建两个RAID-1,/dev/md1和/dev/md2

再使用/dev/md1和/dev/md2创建一个RAID-0,/dev/md10

  • mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/vdb12 /dev/vdb13
  • mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/vdb14 /dev/vdb15
  • mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md1 /dev/md2

RAID-5测试

  奇偶校验信息存储在每个磁盘中,比如说,我们有4个磁盘(预备磁盘不计入内),其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一个磁盘出现故障,我们可以通过更换故障磁盘后,从奇偶校验信息重建得到原来的数据。

特点:

  • 提供更好的性能。
  • 支持冗余和容错。
  • 支持热备份。
  • 将用掉一个磁盘的容量存储奇偶校验信息。
  • 单个磁盘发生故障后不会丢失数据。我们可以更换故障硬盘后从奇偶校验信息中重建数据。
  • 适合于面向事务处理的环境,读操作会更快。

[root@zwj ~]# mdadm --create /dev/md5 -l  -n  --spare-devices= /dev/vdb{,,,}
mdadm: /dev/vdb12 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb13 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb14 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb15 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@zwj ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5

Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :

Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :

Failed Devices :

Spare Devices :
Layout : left-symmetric
Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events : Number Major Minor RaidDevice State
active sync /dev/vdb12
active sync /dev/vdb13
active sync /dev/vdb14 - spare /dev/vdb15
[root@zwj ~]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 vdb14[] vdb15[](S) vdb13[] vdb12[]
blocks super 1.2 level , 512k chunk, algorithm [/] [UUU] unused devices: <none>
[root@zwj ~]# mkfs.ext3 /dev/md5 >/dev/null
[root@zwj ~]# mkdir -p /mnt/raid5
[root@zwj ~]# mount /dev/md5 /mnt/raid5
[root@zwj ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G .9G % /
/dev/vdb1 20G 936M 18G % /mydata
/dev/md5 386M 11M 356M % /mnt/raid5
[root@zwj ~]# cd /mnt/raid5
[root@zwj raid5]# dd if=/dev/zero of=50_M_file bs=1M count=
+ records in
+ records out
bytes ( MB) copied, 0.1711 s, MB/s
[root@zwj raid5]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G .9G % /
/dev/vdb1 20G 936M 18G % /mydata
/dev/md5 386M 61M 306M % /mnt/raid5
[root@zwj raid5]# echo "assume /dev/vdb13 fail---";mdadm --manage /dev/md5 --fail /dev/vdb13;mdadm -D /dev/md5     #模拟/dev/vdb13损坏
assume /dev/vdb13 fail---
mdadm: set /dev/vdb13 faulty in /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent Update Time : Sun May ::
State : clean, degraded, recovering
Active Devices : 2                                   #活跃的2个磁盘,因为坏了1个                                
Working Devices :
3                                   #处于工作状态的有3个,1个spare
Failed Devices : 1                                   #坏了1个
Spare Devices :
1                                   #1个spare                   Layout : left-symmetric
Chunk Size : 512K Rebuild Status : 0% complete Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events : Number Major Minor RaidDevice State
active sync /dev/vdb12
3 252 31 1 spare rebuilding /dev/vdb15     #正在自动重建RAID5   
active sync /dev/vdb14 1 252 29 - faulty /dev/vdb13           #显示循坏的/dev/vdb13
[root@zwj raid5]# mdadm -D /dev/md5                          #检查是否重建完毕
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :

Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :

Spare Devices : 0                          #没有备用的了
Layout : left-symmetric
Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events : Number Major Minor RaidDevice State
active sync /dev/vdb12
3 252 31 1 active sync /dev/vdb15
active sync /dev/vdb14 1 252 29 - faulty /dev/vdb13
[root@zwj raid5]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 vdb14[4] vdb15[3] vdb13[1](F) vdb12[0]
blocks super 1.2 level , 512k chunk, algorithm [/] [UUU] unused devices: <none>
[root@zwj raid5]# mdadm --manage /dev/md5 --remove /dev/vdb13 --add /dev/vdb13;mdadm -D /dev/md5 #移除损坏的/dev/vdb13,并加入新的分区(这里还是/dev/vdb13)
mdadm: hot removed /dev/vdb13 from /dev/md5
mdadm: added /dev/vdb13
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :

Failed Devices :

Spare Devices :
Layout : left-symmetric
Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events : Number Major Minor RaidDevice State
active sync /dev/vdb12
active sync /dev/vdb15
active sync /dev/vdb14 252 29 - spare /dev/vdb13 [root@zwj raid5]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   13G  5.9G  69% /
/dev/vdb1        20G  936M   18G   5% /mydata
/dev/md5        386M   61M  306M  17% /mnt/raid5

软件磁盘阵列(RAID)的更多相关文章

  1. 软件磁盘阵列 (Software RAID)

    什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较 ...

  2. Linux学习-软件磁盘阵列 (Software RAID)

    什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容错式廉价磁盘阵列.RAID 可以透过一个技术(软件或硬 ...

  3. linux基础-磁盘阵列(RAID)实例详解

    磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 R ...

  4. 磁盘阵列RAID

                                                                                  磁盘阵列RAID 年提出的.RAID名为独立 ...

  5. 存储之磁盘阵列RAID

         存储之磁盘阵列RAID RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的.RAID名为独立冗余磁盘阵列(RedundantArray of Indepe ...

  6. 如何判断linux使用的是HDD还是SSD、HHD;磁盘阵列RAID

    硬盘种类:SSD固态硬盘.HDD机械硬盘.HHD混合硬盘(里面既有机械硬盘也有固态硬盘,固态硬盘用来高速缓存,机械硬盘用来存储). HHD是机械硬盘和固态硬盘的结合体.我们可以理解为其就是两块硬盘,固 ...

  7. (转)磁盘阵列RAID原理、种类及性能优缺点对比

    磁盘阵列RAID原理.种类及性能优缺点对比 原文:http://www.cnblogs.com/chuncn/p/6008173.html 磁盘阵列(Redundant Arrays of Indep ...

  8. 一张图看懂单机/集群/热备/磁盘阵列(RAID)

  9. 磁盘阵列 RAID 技术原理详解

    RAID一页通整理所有RAID技术.原理并配合相应RAID图解,给所有存储新人提供一个迅速学习.理解RAID技术的网上资源库,本文将持续更新,欢迎大家补充及投稿.中国存储网一如既往为广大存储界朋友提供 ...

随机推荐

  1. ubuntu 12.04上安装emacs24

    1.如果安装了emacs23的先删掉 sudo apt-get purge emacs23 2.默认的软件源中没有emacs24,需要添加新源 sudo add-apt-repository ppa: ...

  2. atitit.TokenService  token服务模块的设计

    atitit.TokenService  token服务模块的设计 1. Token的归类1 2. Token的用途2 2.1. 访问控制2 2.2. 编译原理术语)编辑2 2.3. 数据处理2 1. ...

  3. Atitit。sql2016标准化的规划方案 v3 q2a

    Atitit.sql2016标准化的规划方案 v3 q2a 1. Sql标准化的历史3 1.1. Sql92标准4 1.2. Sql99标准4 1.3. SQL:2003为例,它包括以下9个部分 5 ...

  4. MSP430WARE++的使用3:modbus模块的调用方法

    MSP430WARE++的使用3:modbus模块的调用方法     MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设. 本文将介绍modbus模块驱动程序的调 ...

  5. 李洪强经典面试题52-Block

    李洪强经典面试题52-Block   Block Block底层原理实现 首先我们来看四个函数 void test1() { int a = 10; void (^block)() = ^{ NSLo ...

  6. MySQL和hive对比表结构脚本

    #!/bin/bash source /etc/profile runlog='/tmp/zewei/check_schema_log' hive_database_schema=/tmp/hive_ ...

  7. codeblocks如何watch指针

    如果这个指针是指向一个一维数组,那么在watch窗口中右击并选择Dereference,会看到数组的第一个元素 如果这个指针是指向一个struct,那么在watch窗口中右击并选择Dereferenc ...

  8. Ubuntu vsftp复制文件到远端时错误,Permission denied

    Ubuntu 下复制文件到远端时错误,Permission denied 失败原因如下: (1)vsftp默认配置不允许上传文件 解决办法:修改配置文件 vi /etc/vsftpd.conf. 将& ...

  9. 查看文件内容- 删除某个运行程序的所有进程-nohup后台执行程序

    1 查看文件内容: tail -f test.txt 2 查看端口 netstat nlp 3 删除某个运行程序的所有进程 ps -ef|grep translateService.py|grep - ...

  10. Oracle----oracle编程总结

    1,SEQUENCE的使用 问题:在MSSQL中,我们可以通过设置自增长来作为主键,但是oracle里面没有这个 解决方案:使用SEQUENCE来实现,具体步骤如下 (1)首先建立一个序列(就是每次查 ...