TOAD使用笔记

1、把鼠标停在sql所在行,然后ctrl+Enter直接执行当前sql。

2、解决Toad对中文显示乱码问题(如果数据库所在主机的NLS_LANG是AMERICAN_AMERICA.WE8ISO8859P1):
系统环境变量加 NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

 

3、toad中自动提示功能,就像plsql developer那样:
输入表名前几个字母,然后用Ctrl + .就可以弹出,如你输入select * from emp t where t. 这时候停顿一下,会弹出emp的字段来供你选择

 

4、如何支持代码自动更正,如输入ndf,自动替换成NO_DATA_FOUND,输入sf自动替换成select * from:
点开菜单edit->editer_options->auto_replace中,自己去设定。可以设置任何你想自动替换的单词

 

5、toad如何实现多线程,像plsql developer那样可以取消当前的操作:
安装的时候有选项设置,如果未设置进入view-options-oracle-transactions,把第一个选项选上。

6、在TOAD的SQL Editor中修改查询的数据:
   select rowid,b.* from acc_bill b 就可以修改数据了......

7、使用Object Palette吧,很棒:
在VIEW——Object Palette找到入口。点击后在SQL Editor窗口右侧产生一个窗口,里面可以根据schema选择对象类型,比如table,出现的表名双击后就出现在SQL编辑器里了,下面还有字段名,是不是很方便啊。

8、关于TOAD启动的一些问题:
有的时候安装完成后突然发现无法同时打开两个TOAD,其实这是一个option控制的。进入 option界面,选择General,右侧第四个 “Allow multiple copies ...”,那个就是选项了,打勾后重启程序就可以了。同一个界面里第五个是控制是否显示进入画面,觉得麻烦可以删掉,去掉那个勾就可以了。

9、安装好toad后根据需要使用到的特性,需要运行一些脚本:(都在Toad\temps目录下)
ü 如果需要用Toad来查看执行计划,必须运行脚本PrepToad.sql或者notoad.sql
n 如果希望专门建立一个Toad 用户来存放Toad需要使用的对象的话,就运行preptoad.sql。
n 如果希望在当前连接用户模式下建立toad需要使用的对象的话,就运行notoad.sql。
n 注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。
ü 需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql
ü 需要加强Toad的安全性,必须运行ToadSecurity.sql

10、以下都是指toad8.0xpert下:
执行toad自带的执行计划的方法:
view->options->oracle->general配置explain plan的表名和用户名,如图:

如果还没有建立计划表plan_table请执行以下脚本:
-----------------------------------------------------------------------------
SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql
SQL> create public synonym plan_table for plan_table;
SQL> grant select,update,insert,delete on plan_table to public;
-----------------------------------------------------------------------------

11、TOAD 9.0.1.8 版本的几个不错的功能:
Utilities-Unix Job Scheduler 有不少DBA、Backup、Table和Index维护的相关shell脚本,可供学习参考。
Utilities-Network Utilities 有telnet/RExec/Ping/TNSPing/SSH等功能。
Utilities-Script Manager 有不少常用的数据库查询和维护SQL语句,并且能直接执行测试。
View-Object Palette 选上后,会在toad右侧显示数据库对象面板,双击可以在输入区输入对象名,且方便查询。
按F8显示最近执行的sql语句,方便查询,并可选择出来修改、执行。
Database-Compare-Single Objects 可以比较两个对象脚本之间的差异。
Database-Report-HTML Schema Doc Generator 可以生成超文本格式的数据库对象及其代码详细信息文档。
Database-Optimizer-Unix Kernel Parms 计算unix主机(包括Solaris/AIX/HPUX/Tru64/Linux)的内核参数信息。
Database-Optimizer-Repair Chained Rows 可以计算和修复行链接
Database-Optimizer-Rebuild Table 可以生成重建表的脚本(包括索引、约束及其重编译对应存储过程信息)。
Database-Optimizer-Pinned Code 可以查询共享池中的代码信息,并且能Fulsh SGA和pin指定的对象到共享池中。

12、Toad Database Health Check功能执行前操作:
SQL> conn /as sysdba
Connected.
--为了分析alert.log文件
SQL> CREATE OR REPLACE DIRECTORY TOAD_BDUMP_DIR as '/opt/oracle/db01/app/oracle/admin/ORCL/bdump';
Directory created.
SQL> GRANT READ, WRITE on DIRECTORY TOAD_BDUMP_DIR to wacos;
Grant succeeded.
[FK Constraints with nonmatching column definitions]太耗时,建议取消

13、如何设置使得注释字体是立体字而不是斜体字(Toad 9.1.0.62)
编辑区右击 - 选择edit options - 查看Language组合框 - 选择PL/SQL语言 - 点击Edit按钮 - 选择Highlighting标签 - 从左侧Styles里选择Comment - 把Font Style组合框里的Italic选择框的小勾去掉

 

vi 替换回车符

在windows下编辑的文件提交到unix下,在行尾,一般会多一个和车符,大家都知道的。so可以用vi的替换命令:

:%s/<C-Q><C-M>//g

 

增加swap空间大小

1. 先决定SWAP文件的大小,然后指定区块大小:bs,再指定区块数量count,则SWAP文件的大小是:count*bs
2. 在root用户下执行如下命令:
   [root@OCS_Test root]#dd if=/dev/zero of=/swapfile bs=1024 count=65536
   则产生的文件大小为64M
3. [root@OCS_Test root]#mkswap /swapfile
4. [root@OCS_Test root]#swapon /swapfile
5. 如需在开机时启用该swap,则在/etc/fstab添加如下内容:
   /swapfile    swap           swap    defaults        0 0
6.确认swap已经被使用:
  用free或cat /proc/swaps可察看哪个swap在使用
7.关闭swap
  swapoff /swapfile

linux/arch /home分区 扩容/扩展

今天在我的 virtuabox arch虚拟机下,发现挂在在/home上分区,空间有点不够,由于要装oracle11g吧;so想办法给扩容了一下;

第一步:给我.vdi的虚拟硬盘扩容了一下:仅一条命令

VBoxManage modifyhd <path to your vdi> --resize <new size in megabytes>

第二部:扩容分区

由于我没有使用lvm,所以扩起来有点麻烦:

root 用户下:

cp -a /home /opt/tmp/  ##备份/home分区

fdisk -l

mount

##查看 分区信息,以及文件类型

我的/home分区在 /dev/sda4上 so

fdisk /dev/sda

删除 sda4分区,重新分配一个主分区,空间比较大的,这里我给了8G,记住这里分配给分区标志符,我这里的主分区仍然是/dev/sda4

mkfs.ext2 /dev/sda4 ##格式化这个分区,注意正确的文件类型

vim /etc/fstab/ ##修改,重启后会自动挂载

这里可以用UUID来挂载分区

sudo blkid ## 查看 UUID

这里我碰到了一个问题,由于我没有直接修改/etc/fstab 就重启了,so,arch起来后,文件系统是只读,这是/etc/fstab 就无法直接修改了,从网上查了一下,解决办法:

(1)mount -w -o remount /

(2)然后通过 mount /dev/sda1 /mnt

然后就可以 修改 /etc/fstab

重启后,arch系统正常

将backup的 /home 重新复制 到 /home分区

LVM扩容

在原先的基础上添加了一块20G的硬盘,给lvm分区扩容

#df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda5             7.1G  2.1G  4.7G  31% /
/dev/mapper/VolGroup00-LogVol00
                       12G  159M   11G   2% /home
/dev/hda1              92M   12M   76M  13% /boot
tmpfs                 125M     0  125M   0% /dev/shm

 

#fdisk -l

Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          12       96358+  83  Linux
/dev/hda2              13        1598    12739545   8e  Linux LVM
/dev/hda3            1599        1663      522112+  82  Linux swap / Solaris
/dev/hda4            1664        2610     7606777+   5  Extended
/dev/hda5            1664        2610     7606746   83  Linux

Disk /dev/hdb: 21.4 GB, 21474836480 bytes
15 heads, 63 sectors/track, 44384 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

Disk /dev/hdb doesn't contain a valid partition table

 

很明显/home目录是我们所要扩容的lvm分区,而新添加20G硬盘还未被格式化成LVM格式,现在我们就将他格式化成LVM

#fdisk  /dev/hdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 44384.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):n     //创建一个新分区

Command action
   e   extended
   p   primary partition (1-4)

p          //分区编号

Partition number (1-4): 1
First cylinder (1-44384, default 1):                    //起始块,默认为1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-44384, default 44384):                  //结束块,默认最大 
Using default value 44384

Command (m for help):t            //更变分区格式
Selected partition 1
Hex code (type L to list codes):8e          //分区格式代码,L可查看所有编码
Changed system type of partition 1 to 8e (Linux LVM)

 

Command (m for help): p             //打印分区情况

Disk /dev/hdb: 21.4 GB, 21474836480 bytes
15 heads, 63 sectors/track, 44384 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       44384    20971408+  8e  Linux LVM

 

Command (m for help): w               //保存并退出分区
The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks. 

打下面指令可以不用重开机

# partprobe

这样一来格式化分区就做完了,就剩下的任务就是扩容:

首先查看下当前有哪些PV

#pvscan or pvdisplay

/dev/cdrom: open failed: Read-only file system
  Attempt to close device '/dev/cdrom' which is not open.
  PV /dev/hda2   VG VolGroup00   lvm2 [12.12 GB / 0    free]
  Total: 1 [12.12 GB] / in use: 1 [12.12 GB] / in no VG: 0 [0   ]


然后将新划分的/dev/hdb1做成PV

#pvcreate /dev/hdb1

 Physical volume "/dev/hdb1" successfully created

 

再看下,PV的情况

#pvscan or pvdisplay

/dev/cdrom: open failed: Read-only file system
  Attempt to close device '/dev/cdrom' which is not open.
  PV /dev/hda2   VG VolGroup00   lvm2 [12.12 GB / 0    free]
  PV /dev/hdb1   VG VolGroup00   lvm2 [19.97 GB / 19.97 GB free]
  Total: 2 [32.09 GB] / in use: 2 [32.09 GB] / in no VG: 0 [0   ]

 

可以发现新创建的PV还有19.97G空闲,然后给VolGroup00卷组添加剩余的空闲空间

#lvextend -L +19G /dev/VolGroup00/LogVol00

  Extending logical volume LogVol00 to 31.12 GB
  Logical volume LogVol00 successfully resized

 

最后,resize卷组

#resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /home; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 8159232 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 8159232 blocks long.

见证奇迹吧

#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda5             7.1G  2.1G  4.7G  31% /
/dev/mapper/VolGroup00-LogVol00
                       31G  165M   29G   1% /home
/dev/hda1              92M   12M   76M  13% /boot
tmpfs                 125M     0  125M   0% /dev/shm

磁头、磁道、柱面、扇区

1.磁道,扇区,柱面和磁头数 
  硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为: 
存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数 
要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头 
   (2)盘片被划分为多个扇形区域即扇区 
   (3)同一盘片不同半径的同心圆为磁道 
   (4)不同盘片相同半径构成的圆柱面即柱面 
   (5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数 
   (6)信息记录可表示为:××磁道(柱面),××磁头,××扇区 

2.簇 
  “簇”是DOS进行分配的最小单位。当创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。DOS视不同的存储介质(如软盘,硬盘),不同容量的硬盘,簇的大小也不一样。簇的大小可在称为磁盘参数块(BPB)中获取。簇的概念仅适用于数据区。 
本点:(1)“簇”是DOS进行分配的最小单位。 
   (2)不同的存储介质,不同容量的硬盘,不同的DOS版本,簇的大小也不一样。 
   (3)簇的概念仅适用于数据区。 

3.扇区编号定义:绝对扇区与DOS扇区 
  由前面介绍可知,我们可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域,或是说柱面/磁头/扇区与磁盘上每一个扇区有一一对应关系,通常DOS将“柱面/磁头/扇区”这样表示法称为“绝对扇区”表示法。但DOS不能直接使用绝对扇区进行磁盘上的信息管理,而是用所谓“相对扇区”或“DOS扇区”。“相对扇区”只是一个数字,如柱面140,磁头3,扇区4对应的相对扇区号为2757。该数字与绝对扇区“柱面/磁头/扇区”具有一一对应关系。当使用相对扇区编号时,DOS是从柱面0,磁头1,扇区1开始(注:柱面0,磁头0,扇区1没有DOS扇区编号,DOS下不能访问,只能调用BIOS访问),第一个DOS扇区编号为0,该磁道上剩余的扇区编号为1到16(设每磁道17个扇区),然后是磁头号为2,柱面为0的17个扇区,形成的DOS扇区号从17到33。直到该柱面的所有磁头。然后再移到柱面1,磁头1,扇区1继续进行DOS扇区的编号,即按扇区号,磁头号,柱面号(磁道号)增长的顺序连续地分配DOS扇区号。 
公式:记DH--第一个DOS扇区的磁头号 
    DC--第一个DOS扇区的柱面号 
    DS--第一个DOS扇区的扇区号 
    NS--每磁道扇区数 
    NH--磁盘总的磁头数 
   则某扇区(柱面C,磁头H,扇区S)的相对扇区号RS为: 
RS=NH×NS×(C-DC)+NS×(H-DH)+(S-DS) 
   若已知RS,DC,DH,DS,NS和NH则 
S=(RS MOD NS)+DS 
H=((RS DIV NS)MOD NH)+DH 
C=((RS DIV NS)DIV NH)+DC 
要点:(1)以柱面/磁头/扇区表示的为绝对扇区又称物理磁盘地址 
   (2)单一数字表示的为相对扇区或DOS扇区,又称逻辑扇区号 
   (3)相对扇区与绝对扇区的转换公式 

4.DOS磁盘区域的划分 
  格式化好的硬盘,整个磁盘按所记录数据的作用不同可分为主引导记录(MBR:Main Boot Record),Dos引导记录(DBR:Dos Boot Record),文件分配表(FAT:File Assign Table),根目录(BD:Boot Directory)和数据区。前5个重要信息在磁盘的外磁道上,原因是外圈周长总大于内圈周长,也即外圈存储密度要小些,可靠性高些。
要点:(1)整个硬盘可分为MBR,DBR,FAT,BD和数据区。 
   (2)MBR,DBR,FAT,和BD位于磁盘外道。 

5.MBR 
  MBR位于硬盘第一个物理扇区(绝对扇区)柱面0,磁头0,扇区1处。由于DOS是由柱面0,磁头1,扇区1开始,故MBR不属于DOS扇区,DOS不能直接访问。MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区。记录区就是记录有关分区信息的一张表。它从主引导记录偏移地址01BEH处连续存放,每个分区记录区占16个字节。 
分区表的格式 
分区表项的偏移 意义   占用字节数 
   00 引导指示符 1B 
   01 分区引导记录的磁头号 1B 
   02 分区引导记录的扇区和柱面号 2B 
   04 系统指示符 1B 
   05 分区结束磁头号 1B 
   06 分区结束扇区和柱面号 2B 
   08 分区前面的扇区数 4B 
   0C 分区中总的扇区数 4B 
4个分区中只能有1个活跃分区,即C盘。标志符是80H在分区表的第一个字节处。若是00H则表示非活跃分区。例如: 
80 01 01 00 0B FE 3F 81 3F 00 00 00 C3 DD 1F 00 
00 00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
要点:(1)MBR位于硬盘第一个物理扇区柱面0,磁头0,扇区1处。不属于DOS扇区, 
   (2)主引导记录分为硬盘的主引导程序和硬盘分区表。 

6.DBR 
  DBR位于柱面0,磁头1,扇区1,即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息,BPB位于DBR偏移0BH处,共13字节。它包含逻辑格式化时使用的参数,可供DOS计算磁盘上的文件分配表,目录区和数据区的起始地址,BPB之后三个字提供物理格式化(低格)时采用的一些参数。引导程序或设备驱动程序根据这些信息将磁盘逻辑地址(DOS扇区号)转换成物理地址(绝对扇区号)。BPB格式 
序号 偏移地址 意义 
1 03H-0AH OEM号 
2 0BH-0CH 每扇区字节数 
3 0DH 每簇扇区数 
4 0EH-0FH 保留扇区数 
5 10H FAT备份数 
6 11H-12H 根目录项数 
7 13H-14H 磁盘总扇区数 
8 15H 描述介质 
9 16H-17H 每FAT扇区数 
10 18H-19H 每磁道扇区数 
11 1AH-1BH 磁头数 
12 1CH-1FH 特殊隐含扇区数 
13 20H-23H 总扇区数 
14 24H-25H 物理驱动器数 
15 26H 扩展引导签证 
16 27H-2AH 卷系列号 
17 2BH-35H 卷标号 
18 36H-3DH 文件系统号 
DOS引导记录公式: 
文件分配表≡保留扇区数 
根目录≡保留扇区数+FAT的个数×每个FAT的扇区数 
数据区≡根目录逻辑扇区号+(32×根目录中目录项数+(每扇区字节数-1))DIV每扇区字节数 
绝对扇区号≡逻辑扇区号+隐含扇区数 
扇区号≡(绝对扇区号MOD每磁道扇区数)+1 
磁头号≡(绝对扇区号DIV每磁道扇区数)MOD磁头数 
磁道号≡(绝对扇区号DIV每磁道扇区数)DIV磁头数 
要点:(1)DBR位于柱面0,磁头1,扇区1,其逻辑扇区号为0 
   (2)DBR包含DOS引导程序和BPB。 
   (3)BPB十分重要,由此可算出逻辑地址与物理地址。 

7.文件分配表 
  文件分配表是DOS文件组织结构的主要组成部分。我们知道DOS进行分配的最基本单位是簇。文件分配表是反映硬盘上所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。DOS在给一个文件分配空间时总先扫描FAT,找到第一个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内。即形成了“簇号链”。FAT就是记录文件簇号的一张表。FAT的头两个域为保留域,对FAT12来说是3个字节,FAT来说是4个字节。其中头一个字节是用来描述介质的,其余字节为FFH 。介质格式与BPB相同。 
第一个字节的8位意义: 
7 6 5 4 3 2 1 0 
└—————-┘ │ │ │┌0非双面 
置1 │ │ └┤ 
│ │ └1双面 
│ │┌0不是8扇区 
│ └┤ 
│ └1是8扇区 
│┌0不是可换的 
└┤ 
└1是可换的 
FAT结构含义 
FAT12 FAT16 意义 
000H 0000H 可用 
FF0H-FF6H FFF0H-FFF6H 保留 
FF7H FFF7H 坏 
FF8H-FFFH FFF8H-FFFFH 文件最后一个簇 
×××H ××××H 文件下一个簇 
对于FAT16,簇号×2作偏移地址,从FAT中取出一字即为FAT中的域。 
逻辑扇区号=数据区起始逻辑扇区号+(簇号-2)×每簇扇区数 
簇号=(逻辑扇区号-数据区起始逻辑扇区号)DIV每簇扇区数+2 
要点:(1)FAT反映硬盘上所有簇的使用情况,它记录了文件在硬盘中具体位置(簇)。 
   (2)文件第一个簇号(在目录表中)和FAT的该文件的簇号串起来形成文件的“簇号链”,恢复被破坏的文件就是根 
据这条链。 
   (3)由簇号可算逻辑扇区号,反之,由逻辑扇区号也可以算出簇号,公式如上。 
   (4)FAT位于DBR之后,其DOS扇区号从1开始。
8.文件目录 
  文件目录是DOS文件组织结构的又一重要组成部分。文件目录分为两类:根目录,子目录。根目录有一个,子目录可以有多个。子目录下还可以有子目录,从而形成“树状”的文件目录结构。子目录其实是一种特殊的文件,DOS为目录项分配32字节。目录项分为三类:文件,子目录(其内容是许多目录项),卷标(只能在根目录,只有一个。目录项中有文件(或子目录,或卷标)的名字,扩展名,属性,生成或最后修改日期,时间,开始簇号,及文件大小。 
目录项的格式 
字节偏移 意义 占字节数 
00H 文件名 8B 
08H 扩展名 3B 
0BH 文件属性 1B 
0CH 保留 10B 
16H 时间 2B 
18H 日期 2B 
1AH 开始簇号 2B 
1CH 文件长度 4B 
目录项文件名区域中第一个字节还有特殊的意义:00H代表未使用 
05H代表实际名为E5H 
EBH代表此文件已被删除 
目录项属性区域的这个字节各个位的意义如下: 7 6 5 4 3 2 1 0 
                      未 修 修 子 卷 系 隐 只 
                      用 改 改 目 标 统 藏 读 
                        标 标 录   属 属 属 
                        志 志     性 性 性 
注意:WINDOWS的长文件名使用了上表中所说的“保留”这片区域。 
要点:(1)文件目录是记录所有文件,子目录名,扩展名属性,建立或删除最后修改日期。文件开始簇号及文件长度的一张 
      登记表. 
   (2)DOS中DIR列出的内容训是根据文件目录表得到的。 
   (3)文件起始簇号填在文件目录中,其余簇都填在FAT中上一簇的位置上。 

9.物理驱动器与逻辑驱动器 
  物理驱动器指实际安装的驱动器。 
  逻辑驱动器是对物理驱动器格式化后产生的。

GRUB引导Win8,Win7,linux

Win8安装过程是将原有Win7的Bootmgr和BCD覆盖升级并加入Win8引导项目,换句话说,Win7和Win8是共用一个Bootmgr和 BCD的,这使得GRUB无法直接引导Win7和Win8,需要在进入Bootmgr后在选择,能不能直接在GRUB中直接集成 Ubuntu,Win7,Win8引导项目呢?当然可以。

1.原理

Win7,Win8操作系统引导原理简简介

POST->MBR->VBR(PBR)->Bootmgr->BCD->winload.exe->ntoskrnl.exe...

GRUB引导原理简简介

POST->MBR->grub->grub.cfg->kernel image or VBR(PBR)...

2.步骤

2.1.安装Win8时,会生成VBR和Bootmgr,但没有BCD,它在Win7的安装目录下,由于Win8系统盘下没有BCD,需要手工生成:

进入Win8,在cmd中:

bcdboot c:\windows /s c:

2.2.将Win7下的BCD默认设为启动Win7,删除Win8启动项

2.3.这时进入Ubuntu,update-grub后可以发现两个Windows启动盘了

vim 大小写转换

整篇文章大写转化为小写

打开文件后,无须进入命令行模式。键入:ggguG

解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束

整篇文章小写转化为大写

打开文件后,无须进入命令行模式。键入:gggUG

解释一下:gggUG分作三段gg gU G
gg=光标到文件第一个字符
gU=把选定范围全部大写
G=到文件结束

只转化某个单词

guw 、gue
gUw、gUe
这样,光标后面的单词便会进行大小写转换
想转换5个单词的命令如下:
gu5w、gu5e
gU5w、gU5e

转换几行的大小写

将光标定位到想转换的行上键入:1gU 从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0        :从光标所在位置到行首,都变为大写
gU$        :从光标所在位置到行尾,都变为大写
gUG        :从光标所在位置到文章最后一个字符,都变为大写
gU1G      :从光标所在位置到文章第一个字符,都变为大写