最近公司的blog系统由于sql脚本访问性能低下,原因一:写的sql脚本实在够复杂,子句嵌套子句,多表关联,一个语句一长串脚本。原因二:开发过程中,多次强调的系统上线前需要把新增加的DAO层脚本发给我们DBA人员检查过,分析过效率如何,趁此也可以进行表结构的设计优化,可惜这个步骤没有贯彻执行,导致全表扫描的脚本也有诸多上线。由于这两个原因导致了,在sql执行过程中产生的worktable庞大,吃tempdb没每秒几兆增长,而且执行sql驻留时间过长后,tempdb无法释放。导致10g的tempdb经常满,而导致数据库挂起,我们DBA在忙着抓取低效sql同时只能通过进程管理以及先添加tempdb空间来暂时解决这个问题,突然今天下午数据库访问出问题了,通过后台日志查看确定在访问tempdb时候出现错误。数据库问题重现。
根据以往曾经处理过的经验,决定进行tempdb的重建修复,然后进行系统数据字典信息转储来恢复用户库,下面是这次重建tempdb,转储恢复用户库的过程步骤:
1.导出备份系统数据字典信息
bcp master..sysusages out sysusages.txt -c -Sblog_sbar -Usa -P123456
bcp master..sysdevices out sysdevices.txt -c -Sblog_sbar -Usa -P123456
bcp master..sysdatabases out sysdatabases.txt -c -Sblog_sbar -Usa -P123456
bcp master..syslogins out syslogins.txt -c -Sblog_sbar -Usa -P123456
bcp master..sysconfigures out sysconfigures.txt -c -Sblog_sbar -Usa -P123456
2.移走备份系统库以及用户库设备文件
mkdir datbak
mv *.dat databak
3.备份配置文件
mv blog_sbar.cfg blog_sbar.cfg.bak
3.重建服务
清空interfaces的内容
srvbuildres -r ~/rs/blog_sbar.rs
srvbuildres -r ~/rs/blog_sbar_BACKUP.rs
4.字符集设置
cd ~/charsets/utf8/
charset -Sblog_sbar -Usa -P binary.srt utf8
isql -Sblog_sbar -Usa -P
sp_configure "default character set id",190
--完成后重新启动两次
vi ~/locales/locales.dat
5.导入备份的系统数据字典信息
先设置系统数据字典允许修改
isql -Sblog_sbar -Usa -P
sp_configure "allow updates to system tables",1
delete from sysconfigures;
go
exit
去掉txt文件中关于服务刚创建时的系统信息,master,model,tempdb,systemproc....
bcp master..sysusages in sysusages.txt -c -Sblog_sbar -Usa -P
bcp master..sysdevices in sysdevices.txt -c -Sblog_sbar -Usa -P
bcp master..sysdatabases in sysdatabases.txt -c -Sblog_sbar -Usa -P
bcp master..syslogins in syslogins.txt -c -Sblog_sbar -Usa -P
bcp master..sysconfigures in sysconfigures.txt -c -Sblog_sbar -Usa -P
6.添加tempdb空间
disk init name = 'tempdb',physname = '/sda/blog_sbar/tempdb.dat',size = '10240M',cntrltype= 0,dsync = false
go
alter database tempdb on tempdb=10240 with override
go
7.剥离tempdb占用master的8m设备空间,进行tempdb优化
use tempdb
go
sp_dropsegment "default",tempdb,master
go
sp_dropsegment logsegment,tempdb,master
go
sp_dropsegment system,tempdb,master
go
use master
go
sp_configure "allow updates to system tables",1
go
delete from sysusages where dbid=2 and lstart=0----dbid=2是tempdb,lstart=0是master设备
go
update sysusages set lstart=0 where dbid=2 ----这里只考虑一个tempdb设备,多个则不更新
go
sp_configure "allow updates to system tables",0 ----恢复系统表不允许修改
以上的处理步骤同样适用于其他的系统数据库的恢复。
分享到:
相关推荐
Sybase ASE 12.5.4 ODBC驱动包, 4.0.x 版本 将zip解到d:\\sybasease目录下边,然后注册下边的内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] ...
Sybase ASE ODBC Driver 驱动
SybaseASE15.0 Enhanced Full-Text Search Specialty Data Store.pdf SybaseASE15.0 HA_故障切换.pdf SybaseASE15.0 Historical Server用户指南.pdf SybaseASE15.0 Job Scheduler用户指南.pdf SybaseASE15.0 Monitor...
Sybase ASE 参考手册,中文版全四卷:第一卷 构建块;第二卷 命令;第三卷 过程;第四卷 表格。
sybase ase 12.5数据库windows版,上传权限不够拆分成两个压缩包。
在window下安装使用Sybase ASE 12.5在window下安装使用Sybase ASE 12.5
自由软件库中已经包括了Sybase ASE for Linux、Oracle for Linux、Informix for Linux等数据库软件以及其他各种软件。 在上述几种Linux平台上的数据库产品中,Sybase ASE的性能很好,紧凑的程序分发包里包含了全部...
SybaseASE1503 linux安装文档。Sybase IQ相关其他文档。 SybaseASE1503 linux安装文档。Sybase IQ相关其他文档。
Sybase ASE作为处理关键业务计算的最有效的数据管理平台之一而确立了其在业界的领先地位,并通过不断提升产品性能为IT人员创造领先的运行优势而声名远扬。Sybase ASE15新增了磁盘内加密功能、智能分区功能、专利的...
sybase ase参考手册:配置参数.pdf
是sybase ase for linux企业版本在REDHAT AS5的安装纤细说明
为了帮助这些管理VLDB的DBA,Sybase ASE15引入了分区技术。分区技术可以将大的表或者索引分割成小的数据分区,并存放在不同的段中,不同的段可以存放在不同的逻辑或物理设备上。这样DBA可以更快捷地管理和维护这些较...
SybaseASE12.5.2安装参考手册
1.1 什么是Sybase Adaptive Server Enterprise (ASE)? 5 1.2 Sybase 具有哪些Server以及这些Server的用途? 5 Backup Server 5 1.3 什么是登录帐户? 5 1.4 什么是角色,Sybase具有哪些常用的系统角色以及这些系统...
Sybase ASE15.0.3 Windows 32bit x86版(7之5_)
Sybase ASE12.5 Windows 32bit x86版(8之3)
Sybase ASE 15.0.4 破解 破解文件在 Crack 目录
Sybase ASE12.5 Windows 32bit x86版(8之2)
SYBASE_ASE 15.7.0 for windows 64bit 客户端
Sybase ASE 15.0.4 破解 破解文件在 Crack 目录