站内搜索:
免费注册 登陆     
您现在的位置:TT数据库 > 技巧 > Sybase数据库的全量备份方案(二)
Sybase数据库的全量备份方案(二)
2008-7-22   | |

  (1)先编辑一个名为mkbcpout.sql的文件,内容如下: 


select "echo bcp ’"+name+" out ……………………’ 
  "+"bcp "+name+" out ./+"name+".table -c -t ’|’ 
  -Uuser -Ppassword -S SERVER" from sysobjects where type=’U’ 
  go 

  (2)执行isql命令,以此文件作为输入,执行结果输出到另外一个文件里:


isql -Uuser -Ppassword -S server -I mkbcpout.sql -O bcpout ; 

  (3)对bcppout文件稍微修改,增加可执行权限: chmod +x bcpout;

  (4)执行bcpout,导出数据文本:./bcpout;

  3、数据库恢复:

  业务生产机可能为小型机,而实验开发环境的硬件环境为PC server,安装好win nt或SCO unix下的Sybase服务器后,根据需要创建空间足够大的数据库和tempdb(系统临时数据库),创建数据库用户,并将其更改为此数据库的所有者,要注意两点:1)此数据库允许bcp拷贝,2)此数据库自动清除log。命令格式为: 


1> sp_dboption databasedbname ,"select into/bulkcopy",true 
  2> go 
  1> sp_dboption databasename,"trunc log on chkpt",true 
  2> go 

  上述两个配置可能与生产机的配置不同。

  然后以新创建的数据库用户登录,导入数据结构,注意要首先导入表结构,然后才是存储过程、触发器等等。命令格式: 


1、 isql -Uusername -Ppassword -I table.ddl -o error.log.table 
2、 isql -Uusername -Ppassword -I proc.ddl -o error.log.proc 

  为了提高bcp导入数据的速度,需要将比较大的表的索引和主键删除,否则的话,每bcp进一条数据,数据库都自动写一条log日志,记载此数据的上一条和下一条记录,确定本记录在此表中的准确位置,一是影响bcp速度,二是数据库的log飞速膨胀。数据库的自动清除log功能只有在一个事务结束后才起作用。

  准备工作做完后,开始倒入数据记录。使用类似做bcpout的方法做一个bcpin的脚本,然后执行: ./bcpin |tee error.bcpin ;

  使用tee管道输出的目的是让计算机完整记录下倒入过程,自动存入error.bcpin文件中,待倒入结束后,我们只需要检查日志文件,不需要一直紧盯着计算机屏幕。

  所有工作做完之后,不要忘记重新将删除的主键和索引建上。

  如果有现成的数据库,只需要单纯地导入数据记录,则首先将数据库中所有用户表(也就是所有type=“U”的表)清空,命令格式:


1> truncate table tablename 
2> go 


  当然最好也是利用做bcpout脚本的做一个truncate脚本,通过执行此脚本将所有用户表清空。然后的数据导入、处理索引和主键的过程与上面类似。

  三、利用做bcp备份脚本的方法做数据库碎片整理。

  Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。具体表现为:业务繁忙时出现死锁(dead lock),数据库的输入/输出资源被大量占用,业务处理速度慢。其解决办法是:

  1、清空数据库中的所有表,命令格式:

isql -Uusername -Ppassword -I truncate.sql -o error.truncate 

  2、 删除所有表的索引和主键: 


isql -Uusername -Ppassword -I dropindex.sql -o error.dropindex 

  3、 导入数据:./bcpin

  4、 添加索引和主键:


isql -Uusername -Ppassword -I addindex.sql -o error.addindex 

  5、 更新数据库状态:


1> update statistics tablename 
2> go 

  上述操作都是针对数据库中的所有用户表进行的,利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易行,还克服了直接使用isql语句操作风险大、没有操作日志的毛病。

  笔者在实际工作中,使用第一种方法对生产机做日常全量备份,日终通过unix的crontab定时批量作业bcp出全部数据。使用高档PC server 搭建模拟运行环境,在需要的情况下导入生产机数据,处理运行中后台server的各种问题,待研究出解决办法后再在生产机上做相应调整,这样做风险小,效果好。

 原文出处:http://tech.ccidnet.com/art/1105/20080717/1510129_1.html
 来源:赛迪网    作者:Alizze    
相关的新闻
 
相关的技巧
在具体的使用中,发现集中式的数据管理有其优点,即数据风险范围大为缩小,作为Sybase服务器一端,数据风险比较集中。如何做好数据库的数据备份成为至关重要的问题。
相关的专家答疑
 
相关的白皮书
随着Sybase WorkSpace 1.5的发布,用户可以以所见即所得的体验可视化的构建网站应用。可视化的网站应用开发和代码自动生成是这个工具……
在具体的使用中,发现集中式的数据管理有其优点,即数据风险范围大为缩小,作为Sybase服务器一端,数据风险比较集中。如何做好数据库的数据备份成为至关重要的问题。
在具体的使用中,发现集中式的数据管理有其优点,即数据风险范围大为缩小,作为Sybase服务器一端,数据风险比较集中。如何做好数据库的数据备份,成为至关重要的问题。
当某一正常运行的大事务(例如:update、delete操作)被终止,且重新启动server后,运行该事务的数据库处于恢复状态,如果恢复时出现异常,如何终止恢复过程呢?
本文将逐步详细讲述如何单独在备份机上启动Sybase ASE12.5,并让它恢复到正常状态。首先,停止HACMP的服务进程……
Sybase数据库如何实现远程磁带备份?本文将以实例讲述远程磁带备份的具体步骤。即在 intdb 上添加磁带设备……
作为Oracle E-Business Suite的初学者,应该从哪一部分开始学习?是Oracle Financials还是Oracle M
在上一个技术专题中我们提到了数据库安全,本篇继续介绍数据库安全的内容,包括如何限制用户的访问权限,并详细阐述了有关如何限制单一用户的访问权限、限制多个用户的访问权限、确保不同用户的
今天我们更加需要注意确保数据库安全。数据库安全当然包括数据库的用户名和密码安全问题。本文介绍设置用户名和密码的最佳方法、在授予或撤消用户访问权限时我们应该注意的事项以及我们能采取的
最新更新
专家答疑
技巧
Ian Abramson
我们想决定是否每晚都该进行增量更新和插入而不是复制产品系统。我知道增量表更新速度要快得多,但是有没有对该程序持反对意见的呢?有没有可能让文件脱离sync?
Ian Abramson
我是一名Oracle DBA。我想开始学习DW原理和其他的DW的其他资料。我还想紧跟这个行业的变化形势。你能给我们相关书籍和资料的建议吗?
Brian Peasland
数据仓储能在灾难恢复热站点上进行吗?Data Guard的优点之一就是你能将备用示例放在READ ONLY模式里,这样你就能在不影响Primary示例的情况下使报表接触到数据库。
TechTarget中国旗下网站群
All Rights Reserved, Copyright 2008, TechTarget中国
TechTarget中国