首页 | 摘要显示 | 1 2 3 4 5 6 7 下一页

Tools Archives

August 24, 2006

指导人家用OTop来查找日志生成过量的原因

    有网友问我为什么他们的库每一分种就生成了1G的日志, 这种问题需要查SQL语句, 但如何找出那个SQL语句生成了过量的日志呢? OTop可以轻松地用"-o"选项来显示最近系统中生成日志最多的SQL语句(使用"-o REDO"选项), 命令如下:

otop -u system/manager@prod -o redo -q

    运行一分钟后按Control+C退出程序运行, 在运行otop的目录中生成一个文件, 检查文件内容, 发现以下信息(以下信息只显示Top Session中的一部份信息):

--VAL/S----PCT----OldPrev-----OldCur----NewPrev-----NewCur
  2225K  83.20 1425443843 1425443843 1425443843 1425443843
  449K  16.80  981151561  981151561 1425443843 2738583441

--VAL/S----PCT----OldPrev-----OldCur----NewPrev-----NewCur
  2248K  97.08 1425443843 1425443843 1425443843 1425443843
    67K  2.92 1425443843 2738583441 1321102934 1321102934
......

阅读全文

August 25, 2006

OTune工具提供的SQL优化的信息

    写OTune的原因是因为OPMon的输出的信息不够方便我们进行SQL的优化, 在改进后程序输出了以下几方面的信息.

    1, 执行信息

  • HASH : SQL语句的HASH_VALUE, [HASH: 1116368370]
  • EXEC : 在报告期内SQL被执行的次数, [Exec:1]
  • GETS : 在报告期内SQL引起的逻辑读的块数及其权重比例, [Gets:378663(4.8)]
  • DISK : 在报告期内SQL引起的物理读的块数及其权重比例, [Disk:0(0.0)]
  • SORT : 在报告期内SQL引起的内存排序的次数, [Sort:1]
  • GET/E : SQL每次执行的平均逻辑读块数, [Get/E:378663]
  • DISK/E: SQL每次执行的平均物理读块数, [Disk/E:0]
  • ROW/E : SQL每次执行的返回的平均记录数, [Row/E:0]
  • PCT : 按(GETS + 15 * DISK)计算的权重比例, 这也是OTune找出SQL的依据, [PCT:4.82]

    2, 完整的SQL语句

阅读全文

October 12, 2006

ociuldr可自动生成SQL*Loader装载的控制文件

    sqlldr工具现在可以生成SQL*Loader的控制文件信息了, 这样可以极大地方便我们移植数据了, 如下所示:

C:\TEMP> ociuldr user=anysql/anysql@prod query="select sysdate  from tab"
--
-- Generated by OCIULDR
--
OPTIONS(BINDSIZE=4194304,READSIZE=4194304,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE 'uldrdata.txt' "STR X'0a'"
INTO TABLE <table_name>
FIELDS TERMINATED BY X'2c' TRAILING NULLCOLS
(
  TNAME CHAR(30),
  TABTYPE CHAR(7),
  CLUSTERID CHAR(40)
)

       0 rows exported at 2006-10-11 18:10:13
      22 rows exported at 2006-10-11 18:10:13

    用时只要将表名(红色的部份)替换一下就行了.

热备份文件的小工具 -- HotCopy

    RMAN的数据文件拷贝功能很不错, 不过不易于脚本化, 因此我通过调用DBMS_BACKUP_RESTORE包来实现了自已的文件热拷贝功能, 这个工具命名为"HotCopy".

    命令行参数:

HotCopy for Oracle, version 2.0.0
(C) Copyright Lou Fangxin 2006, all rights reserved.

Usage:
  hotcopy [-a] -G -T tablespace -F file_id -D destfile

Notes:
  -A   Add a date tag as the copied data file name
  -G   Copy all database files
  -T   The tablespace name to be copied
  -N   File name pattern, '%' any string, '_' any char
  -F   A valid file number, FILE# column in V$DATAFILE
  -D   Destination file or directory name

    拷贝一个数据文件的例子:

C:\TEMP>hotcopy -F 1 -d data -a
HotCopy for Oracle, version 2.0.0
(C) Copyright Lou Fangxin 2006, all rights reserved.

From: C:\ORACLE\PRODUCT\ORADATA\LFXDB\SYSTEM01.DBF
To  : C:\TEMP\data\SYSTEM01.DBF.20061012
Copy Succeed.

    拷贝一个表空间的所有数据文件的例子:

阅读全文

October 13, 2006

使用HotCopy来移动数据文件

    在HotCopy中增加了一个"-M"参数, 用来方便地进行数据文件移动操作:

HotCopy for Oracle, version 2.0.0
(C) Copyright Lou Fangxin 2006, all rights reserved.

Usage:
  hotcopy [-a] -G -T tablespace -F file_id -D destfile

Notes:
  -A   Add a date tag as the copied data file name
  -G   Copy all database files
  -T   The tablespace name to be copied
  -N   File name pattern, '%' any string, '_' any char
  -F   A valid file number, FILE# column in V$DATAFILE
  -M   Move datafile in (NONE,PRINT,STANDBY, PRIMARY) mode
  -D   Destination file or directory name

    在MOUNT方式下将数据文件4拷贝到C:\TEMP\DATA目录下, 指定了"-M STANDBY"表示只需要做RENAME操作.

C:\TEMP>hotcopy -F 4 -D C:\TEMP\DATA -M STANDBY
HotCopy for Oracle, version 2.0.0
(C) Copyright Lou Fangxin 2006, all rights reserved.

From: C:\ORACLE\PRODUCT\ORADATA\USERS01.DBF
To  : C:\TEMP\DATA\USERS01.DBF
RUN: ALTER DATABASE RENAME
RUN:    FILE 'C:\ORACLE\PRODUCT\ORADATA\USERS01.DBF'
RUN:    TO 'C:\TEMP\DATA\USERS01.DBF';
Copy Succeed.

    打开数据库, 在OPEN状态下将文件4, 拷贝回去到原来的目录, 指定了"-M PRIMARY"表示要运行在线移文件的4个SQL操作.

阅读全文

1 2 3 4 5 6 7 下一页

当前分类: Tools

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql