清理 Oracle archivelog

1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;
2、可以手工来处理,步骤如下
1)将/oracle下的相关ARCHIVELOG日志文件移到别的文件系统下(保留一段时间的ARCHIVELOG日志即可,其他的可移走,用系统命令mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的/oracle打包了,否则空间占满了就有些麻烦了。
2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,进入rman
3)在rman中执行
RMAN>list archivelog all; /*列出所有的归档日志文件
RMAN>crosscheck archivelog all; /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在/oracle目录下找不到的归档日志标记为expired
RMAN>list expired archivelog all; /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired
RMAN>delete expired archivelog all; /*在oracle中删除所有过期的expired文件
RMAN>list archivelog all; /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了
RMAN>exit /*退出

下载苹果官方视频

一直想下载一些苹果官方的视频留着演示或者欣赏,终于找到了办法。
http://macing.info/2011/05/15/如何下载苹果官网的视频/

1、打开一个视频,视频开始播放
2、打开终端,输入命令:

open $TMPDIR

3、在打开的缓存文件里打开MediaCache文件夹

4、打开diskcacherepository.plist文件:

找到后缀为mov的两个地址(地址可能稍有不同,大家举一反三)。

把apple-ipad2-feature-cn-20110328_848x480.mov

替换下面地址

http://images.apple.com/media/cn/ipad/2011/tours/apple-ipad2-feature-cn-20110328_r848-9cie.mov

中的

apple-ipad2-feature-cn-20110328_r848-9cie.mov

得到

http://images.apple.com/media/cn/ipad/2011/tours/apple-ipad2-feature-cn-20110328_848x480.mov

这就是这个视频的真实地址了。

Noteshelf 推出 4.0 版

虽然我还没下载完,但是看到有如此之多的新功能,而且有的就是我一直想要的,忍不住翻译出来,供英文不太好的朋友参考。

  • 笔记本分组
  • 密码保护
  • 封面和纸张可以分开选择
  • 新的横向模式
  • VGA输出支持
  • 高亮显示(应该是类似荧光笔的功能吧)
  • 剪切/复制/粘贴(赞!)
  • 同一笔记本中可以选择不同的纸张
  • 自定义模板
  • 只读模式(赞!)
  • 全屏幕查找器
  • 纸张/封面/书架商店(想赚老用户的钱呐……)
  • 新的用户界面和许多可用性的改善

图标改了,个人感觉比以前的更容易使人联想到笔记。

可能是用过几次那个 Penultimate 之后先入为主了,想记笔记的时候,它原来那个图标我老是找不到。

快速删除 iPhone 里的照片

女儿拿我的手机咔嚓咔嚓拍了数不清的照片,要是用手机里的删除功能一个一个删除真是要累的手酸。

偶然看到杂志上的批量删除的好办法,赶紧共享出来。那就是--Mac 自带的「图像捕捉」英文名「Image capture」。

用这个程序就可以不用导入,就可以快速选择多张照片彻底删除掉。

Image Capture

从 Subclipse 到 Subversive: 第一印象

部分翻译自:Switching from Subclipse to Subversive: First Impressions

译者注:虽然是翻译的,但基本上和我现在的状态比较吻合。

对于个人的项目,我已经彻底转换成用 Git 来做版本管理。而工作中我不得不继续使用 Subversion 以便团队的每个人都能共享。我不是说 Git 不好用,只是我的团队还没有准备好这种转换。

我对采用 Git 作为 Subversion 的客户端使用的前景极其好奇——我知道这不是很难——然而我还没有在工作这么重要的场合尝试的勇气。我不能承受万一出什么问题。因此到目前为止我依然使用原生的 SVN 作为我的客户端。

最近我决定尝试一下 Subversive 。我刚开始使用 Subversion 的时候是用的 TortoiseSVN 。后来我开始用 Eclipse 和 CFEclipse 进行开发,(经过少许调查发现)似乎很多人认为 Subclipse 是更好的客户端。所以近几年我一直在用这个。

我本人和至少一个使用 Subclipse 的合作者碰到一些问题,我们认为是 Subclipse 特有的。我们经常将项目 checkout 到共享的目录里。有时候会出现顶层目录无法 commit 的状况,有时选择不同目录的若干个文件后也不行。这很令人恼火。命令行工具就没问题,如果IDE集成环境也能正常使用就好了。

这就是我为何要尝试新的工具。不仅因为 Subversive 是 Eclipse 的官方子项目(这是很好的认可),而且我还听到不少人的称赞。我要弄清楚当初选择 Subclipse 是不是正确的决定。

速度

我的第一印象是 Subversive 好快。我没有做过并列对比,但主观上用它浏览很大的仓库的时候非常快。checkout 看上去也很快。

管用吗

这是我决定要不要转换的重要原因。回答简单而干脆:管用!目前我还没有碰到在 Subclipse 中出现的问题。

快捷键

Update? Ctrl+Alt+U
Commit? Ctrl+Alt+C
与仓库的最新版本比较? Ctrl+Alt+L

有缺点吗

实际上,有。从 Eclipse 的更新站点安装完客户端之后,还得再装另外一样东西的做法很是让人纳闷。似乎开始装的只是个框架,当我第一次使用的时候它提示要装个 connector ——而 Subclipse 一次安装就搞定了。

这也许不是什么大问题。(译者:接下来是抱怨由此造成的 CFBuilder 和 Windows UAC 的苦恼。译者不感兴趣,略过。)

我推荐它吗

当然。有快捷键,速度又快。在我不能用 Git 地方就用 Subversive。

实战给装了 VMWare ESXi 的 DELL PERC H700 添加硬盘

公司有台带有 PERC H700 RAID 控制器的 DELL 服务器,上面安装了 VMWare ESXi 4.1。
由于业务扩张,硬盘空间不足,我们买了块新硬盘要加进去。
原来是3块300G的硬盘构成了RAID5,现在要通过重新配置阵列加一块进去。

中间费尽周折,会过头来再看,其实也不是那么难。相信下次就会顺利多了。

缘由
公司有台带有 PERC H700 RAID 控制器的 DELL 服务器,上面安装了 VMWare ESXi 4.1。
由于业务扩张,硬盘空间不足,我们买了块新硬盘要加进去。
原来是3块300G的硬盘构成了RAID5,现在要通过重新配置阵列加一块进去。

步骤0 备份数据

步骤1 扩展阵列

在 LSI 的主页上下载 MegaRAID VMWare Release
然后解开把文件通过 vSphare Client 上传到服务器上。然后在控制台上执行下面的命令:

/tmp/MegaCLI # ./MegaCli -LDRecon start r5 [Add PhysDrv[32:3]] L0 -a0*
 
Start Reconstruction of Virtual Drive Success.
 
Exit Code: 0x00
 
/tmp/MegaCLI # ./MegaCli -LDRecon ShowProg L0 -a0*      
 
Reconstruction on VD #0 (target id #0) Completed 0% in 0 Minutes.
 
Exit Code: 0x00

第二个命令是查看进展的。我们这个300G的硬盘大约花了不到三个小时的时间。

/tmp/MegaCLI # ./MegaCli -cfgdsply -aAll
 
==============================================================================
Adapter: 0
Product Name: PERC H700 Integrated
Memory: 512MB
BBU: Present
Serial No: 11B05V7
==============================================================================
Number of DISK GROUPS: 1
 
DISK GROUP: 0
Number of Spans: 1
SPAN: 0
Span Reference: 0x00
Number of PDs: 4   << 从3变成4了。
Number of VDs: 1
Number of dedicated Hotspares: 0
Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :Virtual Disk 0
RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3
Size                : 836.625 GB  << 从557.75 GB变成836.625 GB了。
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 4
Span Depth          : 1

步骤2 扩展VMWare的存储区
先调查好系统状况:

~ # esxcfg-scsidevs -l
...
naa.6782bcb00f7de00014fe794f0593cfee
   Device Type: Direct-Access
   Size: 856704 MB
   Display Name: Local DELL Disk (naa.6782bcb00f7de00014fe794f0593cfee)
   Multipath Plugin: NMP
   Console Device: /vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfee
   Devfs Path: /vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfee
   Vendor: DELL      Model: PERC H700         Revis: 2.10
   SCSI Level: 5  Is Pseudo: false Status: on
   Is RDM Capable: false Is Removable: false
   Is Local: true
...
 
~ # fdisk -l
 
Disk /dev/disks/naa.6782bcb00f7de00014fe794f0593cfee: 898.3 GB, 898319253504 bytes
64 heads, 32 sectors/track, 856704 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
 
                                           Device Boot      Start         End      Blocks  Id System
/dev/disks/naa.6782bcb00f7de00014fe794f0593cfeep1             5       900    917504    5  Extended
/dev/disks/naa.6782bcb00f7de00014fe794f0593cfeep2           901      4995   4193280    6  FAT16
/dev/disks/naa.6782bcb00f7de00014fe794f0593cfeep3          4996    571136 579728384   fb  VMFS
/dev/disks/naa.6782bcb00f7de00014fe794f0593cfeep4   *         1         4      4080    4  FAT16

开始按照最下面的参考文献删除VMFS分区然后重建。

~ # fdisk /vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfee
 
The number of cylinders for this disk is set to 856704.
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)
 
Command (m for help): p
 
Disk /vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfee: 898.3 GB, 898319253504 bytes
64 heads, 32 sectors/track, 856704 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
 
                                                    Device Boot      Start         End      Blocks  Id System
/vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfeep1             5       900    917504    5  Extended
/vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfeep2           901      4995   4193280    6  FAT16
/vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfeep3          4996    571136 579728384   fb  VMFS
/vmfs/devices/disks/naa.6782bcb00f7de00014fe794f0593cfeep4   *         1         4      4080    4  FAT16

然后去 vSphere Client 看,可用空间已经增长了。

最初的状态:

加入硬盘后:

改好分区表之后的最终结果:

参考文献
MegaCli常用参数介绍
http://www.mysqlsupport.cn/megacli-study/
MegaCli -adpCount 【显示适配器个数】
MegaCli -AdpGetTime –aALL 【显示适配器时间】
MegaCli -AdpAllInfo -aAll 【显示所有适配器信息】
MegaCli -LDInfo -LALL -aAll 【显示所有逻辑磁盘组信息】
MegaCli -PDList -aAll 【显示所有的物理信息】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充电状态】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL【显示BBU状态信息】
MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aALL【显示BBU容量信息】
MegaCli -AdpBbuCmd -GetBbuDesignInfo -aALL 【显示BBU设计参数】
MegaCli -AdpBbuCmd -GetBbuProperties -aALL 【显示当前BBU属性】
MegaCli -cfgdsply -aALL 【显示Raid卡型号,Raid设置,Disk相关信息】
MegaCli -cfgdsply -aALL |grep Policy 【查看Cache 策略设置】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Relative State of Charge’【查看充电进度百分比】
磁带状态的变化,从拔盘,到插盘的过程中。
Device |Normal|Damage|Rebuild|Normal
Virtual Drive |Optimal|Degraded|Degraded|Optimal
Physical Drive |Online|Failed –> Unconfigured|Rebuild|Online
Use of LSI MegaCli tool in ESX 4
http://communities.vmware.com/thread/228615

PERC H700 Online Capacity Expansion or RAID Level Migration
http://lists.us.dell.com/pipermail/linux-poweredge/2011-March/044451.html

MegaCli -LDRecon {-Start -rX [{-Add | -Rmv} -Physdrv[E0:S0,…>}|-ShowProg|-ProgDsply -Lx -aN
>

I was able to successfully reconfigure the VD from a 3 drive RAID5 set
to a 4 drive RAID5 set using the following command:
*# /opt/MegaRAID/MegaCli/MegaCli64 -LDRecon start r5 [Add PhysDrv[32:3]]
L0 -a0*
Start Reconstruction of Virtual Drive Success.

And could check the status using:
*# /opt/MegaRAID/MegaCli/MegaCli64 -LDRecon ShowProg L0 -a0*
Reconstruction on VD #0 (target id #0) Completed 76% in 200 Minutes.

Four hours later I’ve gone from from:
> Virtual Drive: 0 (Target Id: 0)
> Name :
> RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
> Size : 837.25 GB
> State : Optimal
> Strip Size : 64 KB
> Number Of Drives : 3
To:
> Virtual Drive: 0 (Target Id: 0)
> Name :
> RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
> Size : 1.225 TB
> State : Optimal
> Strip Size : 64 KB
> Number Of Drives : 4
/opt/MegaRAID/MegaCli/MegaCli64 -getLdExpansionInfo
>>> -Lall -aALL
>>>
>>>
>>> Virtual Disk: 0 (Target Id: 0)
>>> Expansion : Not
>>> Possible
>>>
>>> Exit Code: 0x00

使用MegaCli和Smartctl获取普通磁盘和SSD磁盘信息_1
http://hi.baidu.com/stealth_space/blog/item/416e91acde14e8a4cb130c97.html

Adding a VMFS Extent using vmkfstools
http://www.zealkabi.com/2009/03/adding-vmfs-extent-using-vmkfstools.html

Extending an Existing VMFS-3 Volume

vmkfstools -Z –extendfs

This option adds another extent to a previously created VMFS volume
. You must specify the full path name, for example
/vmfs/devices/disks/vmhba0:1:2:1, not just the short name vmhba0:1:2:1. Each
time you use this option, you extend a VMFS-3 volume with a new extent so that the
volume spans multiple partitions. At most, a logical VMFS-3 volume can have 32
physical extents.

Example for Extending a VMFS-3 Volume:

vmkfstools -Z /vmfs/devices/disks/vmhba0:1:2:1 /vmfs/devices/disks/vmhba1:3:0:1

This example extends the logical file system by allowing it to span to a new partition.
The extended file system spans two partitions.vmhba1:3:0:1 and vmhba0:1:2:1. In
this example, vmhba1:3:0:1 is the name of the head partition.

Listing Attributes of a VMFS Volume

vmkfstools -P –queryfs [-h –human-readable]

When you use this option on any file or directory that resides on a VMFS volume, the
option lists the attributes of the specified volume. The listed attributes include the
VMFS version number (VMFS-2 or VMFS-3), the number of extents comprising the
specified VMFS volume, the volume label if any, the UUID, and a listing of the device
names where each extent resides.

You can specify the -h suboption with the -P option. If you do so, vmkfstools lists the capacity of the volume in a
more readable form, for example, 5k, 12.1M, or 2.1G.

For example:

# vmkfstools -P /vmfs/volumes/MSALUN12/AM_W2k3/AM_W2k3-flat.vmdk
VMFS-3.31 file system spanning 1 partitions.
File system label (if any): MSALUN12
Mode: public
Capacity 83214991360 (79360 file blocks * 1048576), 8964276224 (8549 blocks) avail
UUID: 47669f06-beeb8164-ed10-000e7fb4371c
Partitions spanned (on “lvm”):
vmhba1:0:12:1
(One or more partitions spanned by this volume may be offline)

How to increase the size of a local datastore … on an ESXi4?

fdisk /vmfs/devices/disks/mpx.vmhba1:C0:T0:L0

As you can see on the picture, the local VMFS datastore is only 651MB. Also if you add up all the partitions you end up with a bit more than 1500MB. I’m definitely +500MB short.

Press d then Enter 2 to delete /vmfs/devices/disks/mpx.vmhba1:C0:T0:L0p2
Press n and Enter to start creating a new partition.
Press p and Enter to identify that you are creating a primary partition.
Press 2 and Enter to identify that you are creating a second partition. A primary partition already exists.
Press Enter to accept the default ending value.
Press t and Enter to identify that you want to change the type of a partition. We want to change partition# 2.
Type fb and press Enter. This sets the volume to type VMFS.
Press w and press Enter to save the changes and exit fdisk.

Now that we have set properly the partition table, we need to grow the file system on it. The :2 in the command identifies that this operation is performed on the second partition. Run the following command:
vmkfstools –growfs /vmfs/devices/disks/vml.0000000000766d686261313a303a30:2 /vmfs/devices/disks/vml.0000000000766d686261313a303a30:2
Now in the Configuration tab of my ESXi4.0 host, I go to Storage, select the local datastore (datastore1), right click and select Refresh. Now the local VMFS datastore is 1120MB (1.12GB) and uses all remaining disk space.

[UPDATE] In certain occasion, you cannot grow the VMFS disk because it doesn’t exist anymore. In that case you will have to create a VMFS datastore. By default it will take all space available. The command is: vmkfstools -C vmfs3 /vmfs/devices/disks/vml.0000000000766d686261313a303a30:2
Note that you will have to add that new VMFS datastore to your host using the vCenter Client. You will be able to give it a name, for instance ‘datastore1′, and the set the block size (1MB by default).

Growing a datastore from the Service Console in ESX 4.0

给 MySQL 的 root 用户赋予或取消权限

[HOWTO] Grant and Revoke Remote root Access to MySQL
To grant root access from all hosts (except for localhost):

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'topsecret';

To revoke root access from all hosts (except for localhost):

DELETE FROM mysql.user WHERE USER = 'root' AND Host = '%';
FLUSH PRIVILEGES;

To enable MySQL service to accept connections from all hosts change the following line in file mysql.conf:

bind-address=127.0.0.1

to

bind-address=0.0.0.0

or better just comment out:

#bind-address=127.0.0.1

and restart the MySQL service.

Notes:
*) The percent symbol (“%”) in the notation root@”%” means “any host”, but it doesn’t imply localhost. You need to repeat the commands above with root@localhost in order to grant/revoke permissions for localhost.

来源:http://ptankov.wordpress.com/2008/04/09/howto-grant-and-revoke-remote-root-access-to-mysql/

列出 Java 环境可用的所有字体名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.awt.GraphicsEnvironment;
 
public class ListJavaFonts
{
 
  public static void main(String[] args)
  {
    String fonts[] = 
      GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
 
    for ( int i = 0; i < fonts.length; i++ )
    {
      System.out.println(fonts[i]);
    }
  }
 
}