我向来懒得写总结的,慢慢发现记性已大不如全,还是用“烂笔头”记下这一过程吧!
目的:对已经跑了三年多的旧系统进行改造,对数据库磁阵做条带化!
原因:系统运行较慢,当年建数据库时没对磁阵做“条带化”!(领导说的,俺没仔细考证,呵呵。。)
环境:HP superdome ,hp-ux 11i.11 , sybase ASE 12.0.0.8, cics 4.3.3 ,EMC Symmetrix 磁阵
过程:1,dump备份数据库
2,重建数据库设备
3,load回数据库。(因load回数据库,后认为结构没有变化,后改为bcp回数据库,第一步也改为
dump,bcp双重备份 )。
总结:1,dump备份很重要!,bcp数据最好,异地备两份(呵呵。。,建好库后,用改过的bcp out脚本bcp
in 时,没有把out 参数改为in,导致所有bcp文件都变为空
,dump的重要性就表现出来了!)
2,底层磁阵的条带化,是这次调整的重点。EMC的工程师,说底层没做条带化(我们没要求,我晕,
领导联系的呀。只有os层做了。
个人理解:条带化的要求就是尽可能的跨更多的盘,这些盘又不能同时在同一个大的物理盘上。
尽可能的盘数量:其实就是lun的个数;不超过lun的个数,建立的lv就不会在同一个物理盘上。
AIX,HDS磁阵,HDS工程师会告诉你,lun数,lun的分布,建lv时,选定物理盘,
跨盘的时候INTER-POLICY 选maximum,就会跨该选定物理盘,性能最优,十分方便;
hp-ux,EMC磁阵,工程师不晓得lun,只告诉我,顺序用就性能最好,沟通后,就告诉他,
我选定多少块盘会选在同一物理大盘上?最后告诉我一个很大的数24
最后,建lv 的时候,用了lvcreate -i 8 -I 64 -L 32768 -n lvsybdat1 /dev/vg01
-i 8 跨8块盘,-I64 用64K的size条带化!
(当然,不知道,这是否是最优的条带化方案)
3,因为重建server,要导入syslogins表。在用sa登陆的情况下,为防止重复,
从syslogins表中删除了sa用户,才发现就不可能导入syslogins表了!(想想为什么。。?)
处理步骤:1,sa登陆的删除的那一屏一定不退出!
2,删除之前做了个select ,然后根据select的结果,insert syslogins一条sa
的记录,明明一样,可惜还是不能登陆。(密码有变化了)
3,sp_password更改sa的密码,不成功!(再想想,为什么?)
4,添加一用户ssa;授予sa_role,sso_role角色;执行sp_addalias ssa ,sa
让其在master库就成为sa;用ssa更改sa的口令!
哈哈。。。,sa就恢复成功了。这就是sa被删除的处理办法
4,bulk copy的时候,日志比想象中用的大的多。没有删除index,bcp,因为,12.0建index
速度较慢,时间不可控。所以,选择有index的bcp,之后做update all statistics即可。
如果,是bcp 2G的数据,日志空间可能要4-5G,十分消耗日志的。所以,建议bcp in 时,
加 -b选项。还有就是,bcp in 没加-b选项,日志空间又满的情况下,千万不要中断bcp进程
,先扩日志,让其继续导,因为中断了也不会释放日志,而且也不会回滚日志,除非你重启数据库,
但,这就耗费你巨大的recovery时间...
5,如果一个数据库recovery 的时间较长,想不恢复,重建。那么,将数据库的状态改为-32768
重启server后,用drop database就可以删除了!
6,字符集,又是字符集!!
字符集的问题也是个头痛的问题。有各种各样的可能改server端的或者是client的字符集。
AIX,默认安装的字符集是iso_1;hp-ux,默认安装的是roman8。
server端字符集更改:根据sybase安装目录下的init/sample_source_file/sqlloc.rs
里面的注解,根据需要设置后执行sqllocrs -r sqlloc.rs即可更改。前提是你安装了该字符集
clinet端字符集更改:$SYBASE/locales/locales.dat根据需要更改。
eg:你是hp,LANG=C,要将isql的字符集改为iso_1 ,只要更改locales.dat 中的hp中的
locale = C, us_english, iso_1 即可!
阅读(1694) | 评论(0) | 转发(0) |