Archive for 一月, 2009

给大家拜年了

星期二, 一月 27th, 2009

09年已经来了,新的一年里祝大家身体健康,工作顺利,每个人都能实现自己心中的梦想,买房子的买房,结婚的结婚,找GF的找GF,找BF的联系我好了,哈哈,现在已经回到家了,上网不是太方便。
也祝ORACLE+*NIX群员们继续支持群的发展。

新年快乐!Happy new Year!

如何分析自己的时间耗用情况

星期六, 一月 24th, 2009
[转载请保留] 作者:yibie 原文: http://www.gtdstudy.com/?p=205
在看了德鲁克的《卓有成效的管理者》这本书之后,对为什么要记录自己的时间耗用这个问题有了更清晰的认识。
 
记录时间的耗用,能知道:
 
做一件事情耗用了多少时间
究竟做了什么事
从这连点延伸出去,能知道:
 
毫无意义的事情占用了多少时间
一天做了多少毫无意义的事情
做了什么重要的事情
做完这些重要的事情究竟用了多少时间
再从这些资料,可以分析出:
 
什么活动最占用时间
做什么事情是高效率的
做什么事情是低效率的
从分析得出的结论,可以让我们更清楚自己的能力,清楚自己的能力的界限,从而为自己分配时间上可以更精确。比如,如果你面对的事情,是你不擅长的,那么就预定多一点时间来去做完它。如果面对的事情,是你擅长的,那么可以预定少一点时间来做完它。通过精确的时间安排,可以更加自由的统一分配自己的时间,可以为自己空出更多的自由时间。
 
如果某一样活动占用了你大量的时间,先分析这个活动是否必要。 必要的活动,是指那些,如果不参与,就不能得出自己想要的结果的活动。而不必要的活动,就是无论参加与否,都不会影响最终结果的活动。 不必要的活动,以后就不再参与。必要的活动,分析占用时间之后,在以后设置时间区间的时候,可以更清楚应该如何设 置。
 
做好时间耗用记录,可以对自己更加了解,在这个基础上,更可以帮助我们建立起最适合自己的时间管理系统,或是
GTD系统。

kfed disk header

星期三, 一月 21st, 2009


kfbh.endian: 1 ; 0×000: 0×01 定义平台的类型是little还是big,其中little是1 big 0
select * from GV_$TRANSPORTABLE_PLATFORM
2*
SQL> /

INST_ID PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
———- ———– ——————————————————————————– ————–
1 1 Solaris[tm] OE (32-bit) Big
1 2 Solaris[tm] OE (64-bit) Big
1 7 Microsoft Windows IA (32-bit) Little
1 10 Linux IA (32-bit) Little
1 6 AIX-Based Systems (64-bit) Big
1 3 HP-UX (64-bit) Big
1 5 HP Tru64 UNIX Little
1 4 HP-UX IA (64-bit) Big
1 11 Linux IA (64-bit) Little
1 15 HP Open VMS Little
1 8 Microsoft Windows IA (64-bit) Little

INST_ID PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
———- ———– ——————————————————————————– ————–
1 9 IBM zSeries Based Linux Big
1 13 Linux 64-bit for AMD Little
1 16 Apple Mac OS Big
1 12 Microsoft Windows 64-bit for AMD Little
1 17 Solaris Operating System (x86) Little
1 18 IBM Power Based Linux Big

17 rows selected.

kfbh.hard: 130 ; 0×001: 0×82 HARD.magic and block size
kfbh.type: 1 ; 0×002: KFBTYP_DISKHEAD 元数据块类型 这个就是磁盘头
kfbh.datfmt: 1 ; 0×003: 0×01
kfbh.block.blk: 0 ; 0×004: T=0 NUMB=0×0
kfbh.block.obj: 2147483649 ; 0×008: TYPE=0×8 NUMB=0×1
kfbh.check: 580165501 ; 0×00c: 0×22949f7d
kfbh.fcn.base: 212 ; 0×010: 0×000000d4
kfbh.fcn.wrap: 0 ; 0×014: 0×00000000
kfbh.spare1: 0 ; 0×018: 0×00000000
kfbh.spare2: 0 ; 0×01c: 0×00000000
kfdhdb.driver.provstr: ORCLDISK ; 0×000: length=8
kfdhdb.driver.reserved[0]: 0 ; 0×008: 0×00000000
kfdhdb.driver.reserved[1]: 0 ; 0×00c: 0×00000000
kfdhdb.driver.reserved[2]: 0 ; 0×010: 0×00000000
kfdhdb.driver.reserved[3]: 0 ; 0×014: 0×00000000
kfdhdb.driver.reserved[4]: 0 ; 0×018: 0×00000000
kfdhdb.driver.reserved[5]: 0 ; 0×01c: 0×00000000
kfdhdb.compat: 168820736 ; 0×020: 0×0a100000
kfdhdb.dsknum: 1 ; 0×024: 0×0001
kfdhdb.grptyp: 2 ; 0×026: KFDGTP_NORMAL
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER
kfdhdb.dskname: TEST_ASM_0001 ; 0×028: length=13
kfdhdb.grpname: TEST_ASM ; 0×048: length=8
kfdhdb.fgname: TEST_ASM_0001 ; 0×068: length=13
kfdhdb.capname: ; 0×088: length=0
kfdhdb.crestmp.hi: 32917154 ; 0×0a8: HOUR=0×2 DAYS=0×15 MNTH=0×1 YEAR=0×7d9
kfdhdb.crestmp.lo: 954749952 ; 0×0ac: USEC=0×0 MSEC=0×215 SECS=0xe MINS=0xe
kfdhdb.mntstmp.hi: 32917167 ; 0×0b0: HOUR=0xf DAYS=0×15 MNTH=0×1 YEAR=0×7d9
kfdhdb.mntstmp.lo: 2410016768 ; 0×0b4: USEC=0×0 MSEC=0×17c SECS=0×3a MINS=0×23
kfdhdb.secsize: 512 ; 0×0b8: 0×0200
kfdhdb.blksize: 4096 ; 0×0ba: 0×1000
kfdhdb.ausize: 1048576 ; 0×0bc: 0×00100000
kfdhdb.mfact: 113792 ; 0×0c0: 0×0001bc80
kfdhdb.dsksize: 1019 ; 0×0c4: 0×000003fb
kfdhdb.pmcnt: 2 ; 0×0c8: 0×00000002
kfdhdb.fstlocn: 1 ; 0×0cc: 0×00000001
kfdhdb.altlocn: 2 ; 0×0d0: 0×00000002
kfdhdb.f1b1locn: 2 ; 0×0d4: 0×00000002
kfdhdb.redomirrors[0]: 0 ; 0×0d8: 0×0000
kfdhdb.redomirrors[1]: 1 ; 0×0da: 0×0001
kfdhdb.redomirrors[2]: 2 ; 0×0dc: 0×0002
kfdhdb.redomirrors[3]: 65535 ; 0×0de: 0xffff
kfdhdb.dbcompat: 168820736 ; 0×0e0: 0×0a100000
kfdhdb.grpstmp.hi: 32917154 ; 0×0e4: HOUR=0×2 DAYS=0×15 MNTH=0×1 YEAR=0×7d9
kfdhdb.grpstmp.lo: 954423296 ; 0×0e8: USEC=0×0 MSEC=0xd6 SECS=0xe MINS=0xe
kfdhdb.ub4spare[0]: 0 ; 0×0ec: 0×00000000
kfdhdb.ub4spare[1]: 0 ; 0×0f0: 0×00000000
kfdhdb.ub4spare[2]: 0 ; 0×0f4: 0×00000000
kfdhdb.ub4spare[3]: 0 ; 0×0f8: 0×00000000
kfdhdb.ub4spare[4]: 0 ; 0×0fc: 0×00000000
kfdhdb.ub4spare[5]: 0 ; 0×100: 0×00000000
kfdhdb.ub4spare[6]: 0 ; 0×104: 0×00000000
kfdhdb.ub4spare[7]: 0 ; 0×108: 0×00000000
kfdhdb.ub4spare[8]: 0 ; 0×10c: 0×00000000
kfdhdb.ub4spare[9]: 0 ; 0×110: 0×00000000
kfdhdb.ub4spare[10]: 0 ; 0×114: 0×00000000
kfdhdb.ub4spare[11]: 0 ; 0×118: 0×00000000
kfdhdb.ub4spare[12]: 0 ; 0×11c: 0×00000000
kfdhdb.ub4spare[13]: 0 ; 0×120: 0×00000000
kfdhdb.ub4spare[14]: 0 ; 0×124: 0×00000000
kfdhdb.ub4spare[15]: 0 ; 0×128: 0×00000000
kfdhdb.ub4spare[16]: 0 ; 0×12c: 0×00000000
kfdhdb.ub4spare[17]: 0 ; 0×130: 0×00000000
kfdhdb.ub4spare[18]: 0 ; 0×134: 0×00000000
kfdhdb.ub4spare[19]: 0 ; 0×138: 0×00000000
kfdhdb.ub4spare[20]: 0 ; 0×13c: 0×00000000
kfdhdb.ub4spare[21]: 0 ; 0×140: 0×00000000
kfdhdb.ub4spare[22]: 0 ; 0×144: 0×00000000
kfdhdb.ub4spare[23]: 0 ; 0×148: 0×00000000
kfdhdb.ub4spare[24]: 0 ; 0×14c: 0×00000000
kfdhdb.ub4spare[25]: 0 ; 0×150: 0×00000000
kfdhdb.ub4spare[26]: 0 ; 0×154: 0×00000000
kfdhdb.ub4spare[27]: 0 ; 0×158: 0×00000000
kfdhdb.ub4spare[28]: 0 ; 0×15c: 0×00000000
kfdhdb.ub4spare[29]: 0 ; 0×160: 0×00000000
kfdhdb.ub4spare[30]: 0 ; 0×164: 0×00000000
kfdhdb.ub4spare[31]: 0 ; 0×168: 0×00000000
kfdhdb.ub4spare[32]: 0 ; 0×16c: 0×00000000
kfdhdb.ub4spare[33]: 0 ; 0×170: 0×00000000
kfdhdb.ub4spare[34]: 0 ; 0×174: 0×00000000
kfdhdb.ub4spare[35]: 0 ; 0×178: 0×00000000
kfdhdb.ub4spare[36]: 0 ; 0×17c: 0×00000000
kfdhdb.ub4spare[37]: 0 ; 0×180: 0×00000000
kfdhdb.ub4spare[38]: 0 ; 0×184: 0×00000000
kfdhdb.ub4spare[39]: 0 ; 0×188: 0×00000000
kfdhdb.ub4spare[40]: 0 ; 0×18c: 0×00000000
kfdhdb.ub4spare[41]: 0 ; 0×190: 0×00000000
kfdhdb.ub4spare[42]: 0 ; 0×194: 0×00000000
kfdhdb.ub4spare[43]: 0 ; 0×198: 0×00000000
kfdhdb.ub4spare[44]: 0 ; 0×19c: 0×00000000
kfdhdb.ub4spare[45]: 0 ; 0×1a0: 0×00000000
kfdhdb.ub4spare[46]: 0 ; 0×1a4: 0×00000000
kfdhdb.ub4spare[47]: 0 ; 0×1a8: 0×00000000
kfdhdb.ub4spare[48]: 0 ; 0×1ac: 0×00000000
kfdhdb.ub4spare[49]: 0 ; 0×1b0: 0×00000000
kfdhdb.ub4spare[50]: 0 ; 0×1b4: 0×00000000
kfdhdb.ub4spare[51]: 0 ; 0×1b8: 0×00000000
kfdhdb.ub4spare[52]: 0 ; 0×1bc: 0×00000000
kfdhdb.ub4spare[53]: 0 ; 0×1c0: 0×00000000
kfdhdb.ub4spare[54]: 0 ; 0×1c4: 0×00000000
kfdhdb.ub4spare[55]: 0 ; 0×1c8: 0×00000000
kfdhdb.ub4spare[56]: 0 ; 0×1cc: 0×00000000
kfdhdb.ub4spare[57]: 0 ; 0×1d0: 0×00000000
kfdhdb.acdb.aba.seq: 0 ; 0×1d4: 0×00000000
kfdhdb.acdb.aba.blk: 0 ; 0×1d8: 0×00000000
kfdhdb.acdb.ents: 0 ; 0×1dc: 0×0000
kfdhdb.acdb.ub2spare: 0 ; 0×1de: 0×0000
(全文…)

ASM相关转换

星期三, 一月 21st, 2009
ASM涉及到的几种转换
 
一 从非
ASM文件转换到ASM文件,用RMAN
 
1 首先连接到RMAN
 
 
rman>connect target
 
2 首先将要转换的表空间离线或者READ ONLY
 
alter tablespace test offline;
 
3 复制数据文件到ASM磁盘组内
 
backup as copy tablespace test format '+TEST_ASM';
 
4 文件切换到ASM
 
switch datafile 6 to copy;
 
二、默认的
ASM只有2个控制文件
 
SQL> /
 
STATUS  NAME                                                                             IS_ BLOCK_SIZE FILE_SIZE_BLKS
-----
-- -------------------------------------------------------------------------------- --- ---------- --------------
        +
TEST_ASM/boson/controlfile/current.256.676757355                                NO       16384            430
        +
TEST_ASM/boson/controlfile/current.257.676757357                                YES      16384            430
 
添加控制文件的步骤如下:
 
1alter system set controfile_files=''
 
2 关闭数据库
 
shutdown immediate
 
3 启动到nomount状态
 
startup nomount
 
4RMAN恢复到指定的位置
 
restore controlfile to 'TEST_ASM/boson/controlfile/controlfile3.ctl' from
'TEST_ASM/boson/controlfile/current.257.676757357';
 
5 打开数据库
 
alter database mount;
alter database open;
 
三、数据库级转换和单个表空间差不多
步骤如下:
 
Step 1: 创建ASMinit.ora
touch init+ASM.ora ;
*.
instance_type='asm'
*.
remote_login_passwordfile='SHARED'
*.
large_pool_size=12M
*.
asm_power_limit=10
*.
background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'
*.
core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'
*.
user_dump_dest='/u01/app/oracle/admin/+ASM/udump'
*.
asm_diskstring='/dev/raw/raw*
Step 2: 创建ASM的SPFILE
export ORACLE_SID=+ASM
sqlplus / as sysdba
create spfile from pfile=
'/tmp/init+ASM.ora';
 
Step 3: 启动ASM实例
 
startup nomount
Step 4: 创建需要的磁盘
Step 5: 更改磁盘文件的权限
chown oracle:oinstall /dev/rdisk*3
 
Step 6: 创建磁盘组
 
根据硬件和应用的要求选择合适的冗余度
create diskgroup test_asm normal redundancy failgroup fail_1 disk
'/dev/raw/raw1*' name  test_asm_0001,failgroup fail_2 disk'/dev/raw/raw2*' name test_asm_0002;
 
 
Step 7: 准备转换数据库到ASM
ALTER SYSTEM SET DB_CREATE_FILE_DEST=
'+TEST_ASM' SCOPE=BOTH;
 
Step 8: RMAN转换
RMAN> BACKUP BACKUPSET ALL DELETE INPUT;
RMAN> BACKUP AS COPY DATAFILECOPY ALL DELETE INPUT;
RMAN> BACKUP AS COPY ARCHIVELOG ALL DELETE INPUT;
RMAN> BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 0 AS COPY TAG
'ASM_Migration' DATABASE FORMAT '+DATA_AREA';
step 9:
转换REDO和TEMP 先DROP 在在DISKGROUP 添加REDO 和TEMP
 
step 10:
switch
 
 
四、使用DBMS_FILE_TRANSFER 也可以做以上转换
http://blue-prince.spaces.live.com/Blog/cns!12D6E6CCFACF4283!996.entry
从Oracle 10g开始,Oracle提供了DBMS_FILE_TRANSFER这么一个程序包,可以方便地在本地数据库和远程数据库,ASM和文件系统间传输数据库文件。这样数据库文件的传输就方便了许多,尤其是在传输基于ASM存储的数据文件时,不再局限于利用RMAN来进行传输。下面介绍一下这个包的用法。
 
DBMS_FILE_TRANSFER包一共包含了3个存储过程,分别提供本机之间、本机从远程主机抓取以及本机上传至远程主机三种传输数据库文件的功能。要求传输用户有对源目录读和对目标目录写的权限,单个数据库文件必须是512字节的整数倍并且文件大小必须小于或者等于2TB。
 
1、COPY_FILE。可以在数据库本机的文件系统之间,ASM磁盘组之间或者文件系统和ASM磁盘组之间方便地传输数据库文件。
 
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object IN VARCHAR2,–源目录
source_file_name IN VARCHAR2,–源文件名
destination_directory_object IN VARCHAR2,–目标目录
destination_file_name IN VARCHAR2);–目标文件名
 
SQL> create directory data as ‘+DATA/HELLODB/DATAFILE’;
SQL> create directory test as ‘+TEST/HELLODB/DATAFILE’;
SQL> exec DBMS_FILE_TRANSFER.COPY_FILE(’DATA’,’system.286.650339101′, ‘TEST’,’system.dbf’)
ASMCMD> ls -a
+TEST/HELLODB/DATAFILE/system.dbf => COPY_FILE.256.654701983
 
 
2、GET_FILE。从远程数据库读取数据库文件并在本机的文件系统或者ASM磁盘组上创建一份复制文件。
 
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2, –到远程数据库的db link名
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2);
 
begin
DBMS_FILE_TRANSFER.COPY_FILE(’DATA’,’system.286.650339101′, ‘lnk_test’,’TEST1′,’system.dbf’);
end;
/
 
 
3、PUT_FILE。在本地数据库将数据库文件传输至远程数据库的文件系统或者ASM磁盘组。
 
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2,
destination_database IN VARCHAR2); –到目标数据库的db link名
 
begin
DBMS_FILE_TRANSFER.COPY_FILE(’DATA’,’system.286.650339101′, ‘TEST2′,’system.dbf’, ‘lnk_test’);
end;

asm failgroup and css

星期三, 一月 21st, 2009
ASM有三种冗余度
external redundancy
normal redundancy
high redundancy
 
第一种是外部冗余,也就是说通过硬件级别的
RAID来保护数据
第二种是正常冗余,也就是
2路镜像来保护数据,默认的
第三种是高度冗余,也就是通过
3路镜像来保护数据
还有要说明的
ASM镜像是数据文件extent级别的镜像,不是整个磁盘的镜像,因此最好保持磁盘大小一样
并且在
normal redundancy中,又有primary extentsecond extent,写的时候两个并行写,读的时候默认从主的读,并且2extent一定分布在不同的failgroup里,也就是FAILGROUP的意义