网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.VMware下RedHat安装Oracle 9i RA.
.导出oracle数据库对象--同义词,系.
.Solaris下Oracle的基本操作.
.如何使用Oracle全文检索功能.
.如何使用归档日志进行完全恢复.
.Oracle数据库PL/SQL介绍.
.ORACLE常用傻瓜问题1000问(之八).
.oracle9i中list partitioning方法.
.网络关系型数据库的代表Oracle 9i.
.Oracle中Number(p,s)的意义.
.[技术]Oracle数据库空间的使用和.
.解决Oracle 9i和Tomcat端口冲突.
.详细讲解Oracle数据库9i穿过防火.
.Oracle9i中的电子商务平台开发一.
.oracle热备份和恢复自动产生sql源.
.经典的问题与解答(2).
.关于 SELECT N 问题.
.Oracle10g 自动工作负载信息库.
.oracle 使用杂记2.
.各种启动程序方式详细介绍.

缩小数据库日志的另类方法代码分析

发表日期:2008-2-9



  SET NOCOUNT ON
  DECLARE @LOGICALFILENAME SYSNAME,
      @MAXMINUTES INT,
      @NEWSIZE INT
  USE abc---要操作的数据库
  SELECT @LOGICALFILENAME = 'abc_LOG',---日志文件名
      @MAXMINUTES = 10,---LIMIT ON TIME ALLOWED TO WRAP LOG.
      @NEWSIZE = 1---你想设定的日志文件大小(M)
  --SETUP /INITIALIZE
  DECLARE @ORIGINALSIZE INT
   SELECT @ORIGINALSIZE = SIZE
    FROM SYSFILES
   WHERE NAME = @LOGICALFILENAME
  
   SELECT 原日志大小='ORIGINAL SIZE OF ' + DB_NAME() + ' LOG IS ' +
      CONVERT(VARCHAR(30),@ORIGINALSIZE)+'8K PAGES OR '+
      CONVERT(VARCHAR(30),(@ORIGINALSIZE*8/1024))+'MB'
    FROM SYSFILES
   WHERE NAME = @LOGICALFILENAME
  
   CREATE TABLE DUMMYTRANS
         (DUMMYCOLUMN CHAR(8000) NOT NULL)
  
  DECLARE @COUNT INT,
      @STARTTIME DATETIME,
      @TRUNCLOG VARCHAR(255)
   SELECT @STARTTIME = GETDATE(),
      @TRUNCLOG = 'BACKUP LOG '+DB_NAME()+' WITH TRUNCATE_ONLY'
    DBCC SHRINKFILE (@LOGICALFILENAME,@NEWSIZE)
  EXEC(@TRUNCLOG)
  --WRAP THE LOG IF NECESSARY
  WHILE @MAXMINUTES >DATEDIFF(MI,@STARTTIME,GETDATE()) --TIME HAS NOE EXPIRED
   AND @ORIGINALSIZE =(SELECT SIZE FROM SYSFILES WHERE NAME = @LOGICALFILENAME)
   AND (@ORIGINALSIZE*8/1024)>@NEWSIZE
  BEGIN --OUTER LOOP.
    SELECT @COUNT = 0
      WHILE((@COUNT<@ORIGINALSIZE/16) AND (@COUNT<50000))
      BEGIN -- UPDATE
        INSERT DUMMYTRANS VALUES ('FILL LOG')
        DELETE DUMMYTRANS
        SELECT @COUNT = @COUNT + 1
      END
  EXEC (@TRUNCLOG)
  END
  SELECT 新日志大小='FINAL SIZE OF ' + db_NAME() +' LOG IS '+
  CONVERT(VARCHAR(30),SIZE)+'8K PAGES OR '+
  CONVERT(VARCHAR(30),(SIZE*8/1024))+'MB'
  FROM SYSFILES
  WHERE NAME = @LOGICALFILENAME
  DROP TABLE DUMMYTRANS
  SET NOCOUNT OFF
上一篇:深入分析Oracle数据库日志文件(2) 人气:973
下一篇:导出/导入与字符集之间问题的解决 人气:640
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐