使用sql查看alert日志
- 格式:doc
- 大小:46.00 KB
- 文档页数:12
sql server 2008数据库操作日志SQL Server 2008数据库操作日志详解SQL Server 2008是微软推出的一款关系型数据库管理系统。
在数据库操作中,无论是进行插入、更新、删除等操作,都会在操作时生成一条日志记录,即数据库操作日志。
本文将深入解析SQL Server 2008数据库操作日志,从日志类型、作用、管理与分析等多个角度进行探讨,希望能为读者提供一个全面的了解。
一、数据库操作日志的类型SQL Server 2008数据库操作日志主要分为两种类型:事务日志和错误日志。
1. 事务日志事务日志是数据库操作中最重要的一部分,用于记录每个事务的操作信息。
事务被视为一组相互关联的操作,在其执行过程中要么全部成功提交,要么全部失败回滚。
事务日志记录了这些操作的顺序和内容,可以在事务提交或回滚时进行恢复和重做。
2. 错误日志错误日志主要用于记录数据库操作中的错误信息。
当数据库处于故障状态或者操作产生与预期结果不符的异常情况时,错误日志记录了相关的错误信息。
这些错误信息对于排查和解决问题非常重要。
二、数据库操作日志的作用数据库操作日志在数据库管理中起到了至关重要的作用,具体体现在以下几个方面。
1. 恢复和重做事务日志记录了数据库操作的完整历史,可以用于数据库故障后的恢复和重做。
当数据库遭受意外损坏或崩溃时,可以通过日志文件对数据库进行恢复,确保数据的丢失量最小。
2. 保证数据一致性数据库操作往往涉及多个数据表之间的关系,事务日志的存在可以保证多表操作的一致性。
如果某个操作在执行过程中发生了意外中断,数据库可以利用事务日志回滚到操作前的状态,确保数据库的一致性。
3. 监控和分析数据库操作日志可以用于监控和分析数据库的性能、资源使用情况和操作规律。
通过对日志的分析,可以发现系统瓶颈和异常情况,及时调整和优化数据库配置,提高数据库的性能和稳定性。
三、数据库操作日志的管理与分析对于SQL Server 2008数据库操作日志的管理和分析,有一些常用的操作方法和工具。
1.1.1 Oracle1.1.1.1 Oracle9i for Linux1.1.1.1.1 告警日志采集首先使用oracle客户端登陆oracle后进行下面操作1.创建目录,这里的‘/oracle/admin/nhgtfc/bdump’安装oracle的绝对路径,nhgtfc是数据库的实例名称;SQL > create directory BDUMP as ‘/oracle/admin/nhgtfc/bdump’ ;2.把alert_soc.log文件中的日志映射到一张新创建的数据库表中, alert_ nhgtfc.log中的nhgtfc为该数据库的实例名SQL > create table alert_log ( text varchar2(255) )organization external (type oracle_loaderdefault directory BDUMPaccess parameters (records delimited by newline)location('alert_ nhgtfc.log'))reject limit unlimited;1.1.1.1.2 审计日志采集使用sysdba身份登录oracle(在oracle数据库本地登录):sqlplus "/as sysdba"1.查看审计开关是否打开首先登陆oracle后输入show parameter audit_trail来查看审计是否打开SQL > show parameter audit_trail ;说明VALUE :返回值是NONE/FALSE表示审计未打开;返回值是DB/TURE表示审计功能已经打开2.审计开关未打开,需要打开审计开关SQL > alter system s et audit_trail=’DB’ scope=spfile ;这里对audit_trail=进行说明:audit_trail=’DB’ 表示把审计日志记录到数据库sys.audit$表中。
DG出现⼀些常见问题的解决办法DG⽇志不应⽤,GAP,主备切换解决思路与办法环境ORACLE 10G OS AIX6.5对于DG故障解决思路,DG⽇志切换不进⾏应⽤,DG出现GAP解决⽅法,DG主备库切换,当DG出现故障时,第⼀时间检测alert⽇志,服务器OS⽇志,⽹络是否通畅。
1、当DG出现⽇志不能传输到备库⼀、查看是不是TNS配置错误和监听配置错误。
⼆、主备库初始化参数⽂件配置错误(如archive_log_dest⽂件位置错误)。
三、备库控制⽂件过旧,从主库⽣成⼀个STANDBY CONTROL过去。
SQL> alter database create standby controlfile as '/bnerp_data1/bnerp/cntrl01.dbf';。
四、备库是否应⽤了Failovers 。
下⾯模拟备库应⽤了Failovers 。
备库执⾏SQL> alter database recover managed standby database finish;Database altered.备库:SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS-------------------- -------------------- ------------------------------ ---------------- --------------------MAXIMUM PERFORMANCE READ ONLY PRIMARY PHYSICAL STANDBY TO PRIMARY主库:SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;PROTECTION_MODE OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS-------------------- -------------------- ------------------------------ ---------------- --------------------MAXIMUM PERFORMANCE READ WRITE STANDBY PRIMARY SESSIONS ACTIVE主库alert⽂件:ARC1: All Archive destinations made inactive due to error 394ARC1: Failed to archive thread 1 sequence 1 (394)ARCH: Archival stopped, error occurred. Will continue retryingWed Oct 30 10:25:54 2013Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_arc1_1236.trc:ORA-16038: log 2 sequence# 1 cannot be archivedORA-00394: online log reused while attempting to archive itORA-00312: online log 2 thread 1:'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\STANDBY\ONLINELOG\O1_MF_2_96YY5JSW_.LOG' ARC1: All Archive destinations made inactive due to error 394*** 2013-10-30 10:25:54.796 58942 kcrr.ckcrrfail: dest:1 err:394 force:0 blast:16、检查备库是否还有⽇志GAPSQL> select * from V$ARCHIVE_GAP;no rows selected如果有⾏返回,则重复2-5步,直到查询结果是"no rows selected"。
使用Oracle的外部表查询警告日志文件从Oracle9i开始,Oracle的外部表技术(Oracle External Tables)被极大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互的能力,对于数据仓库和ETL来说,这些增强极大的方便了数据访问。
对于DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件或其他跟踪文件.以下一个例子用来说明外部表的用途。
首先需要创建一个Directory:[oracle@jumper oracle]$ sqlplus "/ as sysdba"SQL*Plus: Release 9.2.0.4.0 - Production on Sun Oct 15 21:42:28 2006Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to:Oracle9i Enterprise Edition Release 9.2.0.4.0 - ProductionWith the Partitioning optionJServer Release 9.2.0.4.0 - ProductionSQL> create or replace directory bdump2 as '/opt/oracle/admin/eygle/bdump';Directory created.SQL> col DIRECTORY_PATH for a30SQL> col owner for a10SQL> select * from dba_directories;OWNER DIRECTORY_NAME DIRECTORY_PATH---------- ------------------------------ ------------------------------SYS BDUMP /opt/oracle/admin/eygle/bdump然后创建一个外部表:SQL> create table alert_log ( text varchar2(400) )2 organization external (3 type oracle_loader4 default directory BDUMP5 access parameters (6 records delimited by newline7 nobadfile8 nodiscardfile9 nologfile10 )11 location('alert_eygle.log')12 )13 reject limit unlimited14 /Table created.然后我们就可以通过外部表进行查询警告日志的内容:SQL> select * from alert_log where rownum < 51;TEXT----------------------------------------------------------------------------------------- Mon Jun 26 12:00:24 2006Starting ORACLE instance (normal)Mon Jun 26 12:00:25 2006WARNING: EINVAL creating segment of size 0x0000000008c00000 fix shm parameters in /etc/system or equivalentLICENSE_MAX_SESSION = 0LICENSE_SESSIONS_WARNING = 0SCN scheme 2Using log_archive_dest parameter default valueLICENSE_MAX_USERS = 0SYS auditing is disabledStarting up ORACLE RDBMS Version: 9.2.0.4.0.System parameters with non-default values:processes = 150timed_statistics = TRUEshared_pool_size = 104857600large_pool_size = 0java_pool_size = 0control_files = /opt/oracle/oradata/eygle/control01.ctldb_block_size = 8192db_cache_size = 16777216db_cache_advice = ONcompatible = 9.2.0.0.0db_file_multiblock_read_count= 16fast_start_mttr_target = 300log_checkpoints_to_alert = TRUEundo_management = AUTOundo_tablespace = UNDOTBS1undo_retention = 10800remote_login_passwordfile= EXCLUSIVEdb_domain =instance_name = eyglejob_queue_processes = 10hash_join_enabled = TRUEbackground_dump_dest = /opt/oracle/admin/eygle/bdumpuser_dump_dest = /opt/oracle/admin/eygle/udumpcore_dump_dest = /opt/oracle/admin/eygle/cdumpsort_area_size = 524288db_name = eygleopen_cursors = 500star_transformation_enabled= FALSEquery_rewrite_enabled = FALSEpga_aggregate_target = 52428800aq_tm_processes = 0PMON started with pid=2DBW0 started with pid=3LGWR started with pid=4CKPT started with pid=5SMON started with pid=6RECO started with pid=750 rows selected.SQL>如果我们需要查看数据库中曾经出现过的ORA-错误,那么可以执行如下查询: SQL> select * from alert_log where text like 'ORA-%';TEXT----------------------------------------------------------------------------------- ORA-1652: unable to extend temp segment by 128 in tablespace TEMP ORA-1113 signalled during: alter database open...ORA-1113 signalled during: alter database datafile 3 online...ORA-09968: scumnt: unable to lock fileORA-1102 signalled during: ALTER DATABASE MOUNT...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/users01.dbf'ORA-27037: unable to obtain file statusORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/users01.dbf'TEXT----------------------------------------------------------------------------------- ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-27037: unable to obtain file statusORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-27037: unable to obtain file statusORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'TEXT----------------------------------------------------------------------------------- ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1113 signalled during: alter database open...ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-27037: unable to obtain file statusORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-1113 signalled during: alter database open...ORA-1122 signalled during: alter database open...ORA-283 signalled during: ALTER DATABASE RECOVER database ...ORA-1122 signalled during: alter database open...TEXT-----------------------------------------------------------------------------------ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1113 signalled during: ALTER DATABASE OPEN...ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1122 signalled during: ALTER DATABASE OPEN...ORA-1503 signalled during: CREATE CONTROLFILE REUSE DATABASE "EYGLE" NORESETL... ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1991 signalled during: ALTER DATABASE MOUNT...ORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-01115: IO error reading block from file 4 (block # 1)ORA-27069: skgfdisp: attempt to do I/O beyond the range of the fileORA-01122: database file 1 failed verification checkTEXT-----------------------------------------------------------------------------------ORA-01110: data file 1: '/opt/oracle/oradata/eygle/system01.dbf'ORA-01207: file is more recent than controlfile - old controlfileORA-1122 signalled during: alter database open...ORA-283 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-01115: IO error reading block from file 4 (block # 1)ORA-27069: skgfdisp: attempt to do I/O beyond the range of the fileORA-01194: file 1 needs more recovery to be consistentORA-1194 signalled during: alter database open resetlogs...ORA-283 signalled during: ALTER DATABASE RECOVER datafile 1 ...TEXT-----------------------------------------------------------------------------------ORA-283 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'ORA-01115: IO error reading block from file 4 (block # 1)ORA-27069: skgfdisp: attempt to do I/O beyond the range of the fileORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1: '/opt/oracle/oradata/eygle/system01.dbf'ORA-1194 signalled during: alter database open resetlogs...ORA-283 signalled during: ALTER DATABASE RECOVER datafile 1 ...ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1589 signalled during: ALTER DATABASE OPEN...ORA-01110: data file 4: '/opt/oracle/oradata/eygle/eygle01.dbf'TEXT-----------------------------------------------------------------------------------ORA-01115: IO error reading block from file 4 (block # 1)ORA-27069: skgfdisp: attempt to do I/O beyond the range of the fileORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1: '/opt/oracle/oradata/eygle/system01.dbf'ORA-1194 signalled during: alter database open resetlogs...ORA-1109 signalled during: alter database close...ORA-1503 signalled during: CREATE CONTROLFILE REUSE DATABASE "EYGLE" NORESETL... ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1113 signalled during: alter database open...ORA-00202: controlfile: '/opt/oracle/oradata/eygle/control01.ctl'ORA-27037: unable to obtain file statusTEXT----------------------------------------------------------------------------------- ORA-205 signalled during: ALTER DATABASE MOUNT...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-01501: CREATE DATABASE failedORA-01526: error in opening file '?/rdbms/admin/sql.bsq'ORA-07391: sftopn: fopen errorORA-01526: error in opening file ''ORA-1092 signalled during: CREATE DATABASE eygleORA-1079 signalled during: ALTER DATABASE MOUNT...ORA-1507 signalled during: alter database open...ORA-214 signalled during: alter database mount...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...TEXT----------------------------------------------------------------------------------- ORA-214 signalled during: ALTER DATABASE MOUNT...ORA-214 signalled during: alter database mount...ORA-1113 signalled during: ALTER DATABASE OPEN...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'ORA-27037: unable to obtain file statusORA-1113 signalled during: ALTER DATABASE OPEN...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'ORA-27037: unable to obtain file statusORA-1113 signalled during: alter database open...TEXT-----------------------------------------------------------------------------------ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'ORA-27037: unable to obtain file statusORA-283 signalled during: ALTER DATABASE RECOVER database ...ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1100 signalled during: alter database mount...ORA-1178 signalled during: alter database create datafile '/opt/oracle/produc...ORA-1516 signalled during: alter database create datafile '/opt/oracle/oradat...ORA-1991 signalled during: ALTER DATABASE MOUNT...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'TEXT-----------------------------------------------------------------------------------ORA-27037: unable to obtain file statusORA-283 signalled during: ALTER DATABASE RECOVER database ...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'ORA-27037: unable to obtain file statusORA-283 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1991 signalled during: ALTER DATABASE MOUNT...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/users01.dbf'ORA-27037: unable to obtain file statusTEXT-----------------------------------------------------------------------------------ORA-283 signalled during: ALTER DATABASE RECOVER database ...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/users01.dbf'ORA-27037: unable to obtain file statusORA-283 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/users01.dbf'ORA-27037: unable to obtain file statusORA-283 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-279 signalled during: ALTER DATABASE RECOVER database using backup cont... ORA-308 signalled during: ALTER DATABASE RECOVER CONTINUE DEFAULT ...TEXT-----------------------------------------------------------------------------------ORA-308 signalled during: ALTER DATABASE RECOVER CONTINUE DEFAULT ...ORA-1547 signalled during: ALTER DATABASE RECOVER CANCEL ...ORA-1589 signalled during: alter database open...ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1503 signalled during: CREATE CONTROLFILE REUSE DATABASE "EYGLE" NORESETL... ORA-1178 signalled during: alter database create datafile '/opt/oracle/produc...ORA-1991 signalled during: ALTER DATABASE MOUNT...ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'ORA-27037: unable to obtain file statusORA-1157 signalled during: alter database open...TEXT-----------------------------------------------------------------------------------ORA-1113 signalled during: alter database open...ORA-1991 signalled during: ALTER DATABASE MOUNT...ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1031 signalled during: alter database open...ORA-3217 signalled during: ALTER TABLESPACE TEMP DEFAULT STORAGE (INITIAL 10M... ORA-1507 signalled during: alter database close...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1507 signalled during: alter database close normal...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1106 signalled during: alter database dismount...ORA-1531 signalled during: alter database open...TEXT-----------------------------------------------------------------------------------ORA-1531 signalled during: alter database open...ORA-1531 signalled during: alter database open...ORA-1531 signalled during: alter database open...ORA-1531 signalled during: alter database open...ORA-1109 signalled during: alter database close...ORA-1507 signalled during: alter database close...ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-1185 signalled during: alter database add logfile group 6ORA-350 signalled during: alter database drop logfile group 3...163 rows selected.SQL>。
Oracle 11G数据库DataGuard灾备切换方案、检查1、确定MRP进程在正常运行real-time apply real-time apply SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;2、确定有足够的归档进程在所有的主备库实例上查询参数LOG_ARCHIVE_MAX_PROCESSES,确定其值大于等于4, 但不会太大3、确定目标备库的REDO为clear状态虽然在发起SWITCHOVER TO PRIMARY命令时,备库的REDO会自动转换为CLEAR 状态,但依然建议在SWITCHOVER前REDO为CLEAR状态。
确保正确设置了 LOG_FILE_NAME_CONVERT参数。
AND L.STATUS NOT IN (\UNUSED’,、CLEARING’,’CLEARING_CURRENT’);如果如上的查询有结果,4、确定没有大量的GAP5、确定主库以及目标备库的所有文件都为ONLINE主备库分别执行如下SQL,查看tempfile是否正常,如果备库上缺失文件则需要进行处、切换1、检查主库是否可切换至STANDBY如上的SQL查询结果如果为〃TO STANDBY”或者〃SESSIONS ACTIVE〃表示主库可切换至STANDBY,如果不为这两个值,则说明REDO传输存在问题。
2、停止主库第一个节点以外的所有实例(RAC)最好使用shutdown normal或者shutdown immediate方式停止数据库。
如果使用了shutdown abort将其他节点进行了关闭,则需等待RAC reconfig完成,且第一个节点将其余REDO正常前滚或回滚3、切换主库至STANDBY角色如果遇到ORA-16139报错,且V$DATABASE视图中DATABASE_ROLE字段的值已为“ PHYSICAL STANDBY”,则可继续(这种问题的出现其中一个可能是数据库有大量的数据文件)。
数据库维护处事脚册之阳早格格创做文档编号:文档称呼:编写:审核:批准: 接受日期:目录1概括22数据库监控3数据库监控处事真质3数据库监控处事步调3查看数据库日志3查看是可有做废的数据库对付象5查看数据库结余空间6沉面表查看6查看数据库是可寻常7死锁查看7监控SQL语句的真止7支配系统级查看8其余83数据库维护9数据库维护处事真质9数据库维护处事事项9页里建复9数据库对付象沉建9碎片回支(数据沉组)9简略不必的数据10备份回复10履历数据迁移11定期建改暗号11简略掉不需要的用户11其余124数据库管制时常使用SQL足本125凡是维护战问题管制23脚法23例止处事提议23相关挖表证明241概括数据库的凡是监控是使管制员即时相识系统非常十分的脚法.大部分情况下,系统经常寻常运止的.惟有对付寻常情况的充分相识,才搞通过对付比寻常情况创制非常十分情况.对付于数据库的凡是监控要有记录,笔墨记录大概者电子文档保存.对付于数据库非常十分举止分解,提出办理规划.凡是处事包罗监控战维护二个部分.此文档中关于数据库的运止下令示例主要针对付于ORACLE数据库,但是对付于SYBASE数据库共样有参照价格,只消换用相对付应的语句即可.数据库监控2数据库监控数据库监控处事真质制定战矫正监控规划,编写监控足本.对付于数据库举止凡是监测,提接记录.根据监测截止举止分解、预测,提接相映的系统矫正提议规划.数据库监控处事步调2.1.1查看数据库日志数据库的日志上会有洪量对付于管制员有用的疑息.ORACLE的Alert日志记录了数据库系统所报的系统级过得疑息,以及数据块做废等宽沉过得疑息.过得疑息的爆收,会爆收相映的逃踪文献,通过查看告诫日志战逃踪文献可查找过得本果,对付于创制的问题应即时办理战报告.如:1.表空间是可谦,是可需要举止增加大概者扩展.Alert文献中会隐现有表块无法扩展的提示.2.表的块大概者页里是可益坏.(往往那时alert文献中会隐现ora-600的过得.)3.数据库是可举止了非常十分支配.(如:droptablespace等等).真用下令:·报警日志文献(alert.log大概alrt<SID>.ora)记录数据库开用,关关战一些要害的堕落疑息.数据库管制员该当时常查看那个文献,并对付出现的问题做出纵然的反应.不妨通过以下SQL 找到他的路径select value from v$parameter where upper(name) ='BACKGROUND_DUMP_DEST',大概通过参数文献赢得其路径,大概者show parameter BACKGROUND_DUMP_DEST.·背景逃踪文献路径与报警文献路径普遍,记录了系统背景进程堕落时写进的疑息.·用户逃踪文献记录了用户进程堕落时写进的疑息,普遍不可能读懂,不妨通过ORACLE的TKPROF工具转移为不妨读懂的圆法.用户逃踪文献的路径,您不妨通过以下SQL找到他的路径select value from v$parameter where upper(name) ='USER_DUMP_DEST',大概通过参数文献赢得其路径,大概者show parameter USER_DUMP_DEST.不妨通过树立用户逃踪大概dump下令去爆收用户逃踪文献,普遍正在调试、劣化、系统分解中有很大的效用.可正在参数文献种用SQL_TRACE=TRUE挨开该文献(对付所有用户),也可用alter session set sql_trace=true挨开目前会话,也可用execute dbms_system.set_sql_trace_in_session(sid,serial#,true)挨开指定会话.2.1.2查看是可有做废的数据库对付象主要关注索引,触收器,保存历程,函数等等.如:查找user_objects数据字典,瞅其中是可有状态为invalid的对付象.推断做废本果(如:视图做废的本果有大概是由于创制视图的基表被简略等等),找出本果可举止对付象沉建大概建复.真用下令:Select object_name,object_typeFrom user_objectsWhere object_type=’INV ALID’;2.1.3查看数据库结余空间1.结余空间缺累时要扩展空间,普遍的,当结余空间小于10%时,要举止空间扩展.对付于ORACLE数据库,通过查找TABLESPACES相关的数据字典不妨瞅到有用的疑息.2.查看数据赶快删少的表,通过对付于DBA_SEGMENTS数据字典的监视不妨找到,当过快删万古,协做开垦人员,决定办理规划.2.1.4沉面表查看1.查看系统核心接易表.果为那些表健壮与可与凡是接易的寻常运止稀切相关.沉面查看那些表的索引是可做废,表的统计疑息是可即时革新,如:当那些表举止了大的数据拆载大概者简略支配之后.准则上需要查看所有的表,不过由于上头那些表更关键,提议管制员给以更多的关注.2.沉面查看数据量超出百万止的表,各天的情况大概纷歧样,当数据超出百万止之后,如果索引做废会引导表扫描,占用洪量系统IO,宽沉效用系统本能.2.1.5查看数据库是可寻常包罗数据库真例是可寻常处事、listener是可处事寻常,保证数据库系统环境寻常.数据库对接是可寻常、查看是可有超出寻常火仄的对接数.如:寻常500个,某天下午忽然达到600个.应记录那种非常十分情况.分解爆收那种情况的本果,如:正在矮版本的ORACLE中,很大概是一些其余非常十分的应用堕落后爆收的死对接.2.1.6死锁查看监控数据库运止历程中,出现的阻塞,记录局里,记录爆收阻塞的SQL语句,真止的用户,爆收时间,频次,处理(杀掉、等待自然解锁等).ORACLE版本中的死锁会正在alert文献中爆收记录,oracle会自动解锁(本去是采用一个杀掉).对付于死锁的处理历程要举止记录.不妨使用OEM工具大概者查找相关的V$视图去确认爆收阻塞的语句.2.1.7监控SQL语句的真止查找效用矮下的SQL语句,通联协做开垦人员,举止相关处理.可使用ORACLE提供的AWR举止,也可使用ORACLE提供的OEM工具真止,大概者自止体例的足本等等.2.1.8支配系统级查看运止vmstat,sar,topas(AIX系统),glance(HP系统)等下令查看CPU、内存、假制内存等的使用情况.运止df,du,iostat查看磁盘使用情况运止netstat查看搜集情况运止脚工体例的监控足本查看.针对付于支配系统的分歧,使用的下令也会有分歧,请参照相映的支配系统文档.提议使用man下令瞅察相映的助闲疑息.2.1.9其余每天查看早间定时真止的数据库疑息支集做业战备份做业的日志输出,确认皆已寻常完毕.往往不克不迭寻常完毕是由于如下的本果:请确认足本是可变动(过得的建变革成等等),设备(主机,磁盘阵列,磁戴库,搜集等等)是可寻常,空间是可足够等等.提议每天按接易峰值情况,对付数据库本能数据举止定时支集及分解.3数据库维护数据库维护处事真质包罗维护、障碍诊疗、过得建复、备份回复、履历数据迁移等历程.数据库维护处事事项3.1.1页里建复根据凡是监控的截止,举止页里(大概者数据库坏块)建复,如将表数据导出后沉建表,而后导进数据.提接建复记录.3.1.2数据库对付象沉建根据数据库监控的截止,沉建做废的对付象.如:索引、保存历程、函数、视图、触收器等等.真用下令:Alter index <索引名> rebuild [online];3.1.3碎片回支(数据沉组)当某些数据库运止一段时间后,表会爆收碎片,效用数据库的本能.可根据凡是查看的截止,使用功具大概足本对付于数据库空间举止沉组大概回支.由于ORACLE数据库自己的本果,正在举止了DELETE支配之后也不会使HWM (High Water Mark下火位线)落矮,果此不会释搁所占用的空间,所以提议正在举止了数据迁移之后将齐库举止EXP,而后举止IMP支配,以释搁占用的空间.3.1.4简略不必的数据此项处事要得到开垦圆、安排人员、以及相关人员的确认后,圆可真止.3.1.5备份回复需要定期对付于数据库备份举止灵验性检测,定期举止数据回复的演练支配.以预防万一的数据库事变时准备缺累.数据库需要采与正在线的热备份,不需要关关数据库举止,正在备份的共时不妨举止寻常的数据库的百般支配,谦足了7*24的系统的需要.数据库的备份不克不迭效用用户对付数据库的考察.目标需要正在线热备份多级删量备份并止备份,回复减小所需要备份量备份,回复使用简朴可参照如下的规划:1.每月搞一个数据库的齐备份(包罗只读表空间)2.每星期搞一次整级备份(不包罗只读表空间)3.每个星期三搞一次一级备份4.每天搞一个二级备份5.所有表空间改成只读状态后搞一个该表空间的备份.6.当需要时(如四个小时归档文献系统便要靠近谦了)备份归档文献.3.1.6履历数据迁移定期举止履历数据迁移,缩小死产数据库的压力.3.1.7定期建改暗号包罗SYS,SYSTEM等用户.3.1.8简略掉不需要的用户对付于系统拆置时的演示用户,如:hr,scott等.提议每周定期浑理战备份一周所爆收的Alert日志、逃踪文献战dump文献.分别位于$ORACLE_BASE/admin/$ORACLE_SID/bdump, $ORACLE_BASE/admin/$ORACLE_SID/udump, $ORACLE_BASE/admin/$ORACLE_SID/cdump,等目录下.定期对付表举止统计分解,(如可使用analyze等下令,8i 以上有dbms_stats包去真止,使SQL劣化器经常能找到最佳的查询战术.制定战真止记录包管死产库的仄安:应千万于克制正在死产库上举止开垦、尝试.3.1.9其余针对付分歧的数据库版本的分歧特性举止相映的维护支配.简直情况请拜睹ORACLE文档大概者考察metalink.4数据库管制时常使用SQL足本时常使用的SQL足本,正在真施时可供数据库管制员参照,正在真止时,需要举止相映的建改.1.结余空间查看SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /(1024*1024) ) as free_m, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunksFROM dba_free_spaceGROUP BY tablespace_name2.表空间数据量情况隐现SELECT tablespace_name, max_blocks, count_blocks, sum_free_blocks, to_char(100*sum_free_blocks/sum_alloc_blocks, '99.99') || '%' AS pct_freeFROM ( SELECT tablespace_name, sum(blocks) AS sum_alloc_blocksFROM dba_data_filesGROUP BY tablespace_name), ( SELECT tablespace_name AS fs_ts_name, max(blocks) AS max_blocks, count(blocks) AS count_blocks, sum(blocks) AS sum_free_blocksFROM dba_free_spaceGROUP BY tablespace_name )WHERE tablespace_name = fs_ts_name3.表战索引分解BEGINdbms_utility.analyze_schema ( '&OWNER', 'ESTIMATE', NULL, 5 ) ;END ;4.查看空间情况FROM all_tables a,( SELECT tablespace_name, max(bytes) as big_chunkFROM dba_free_spaceGROUP BY tablespace_name ) f5.查看已经存留的空间扩展FROM dba_tablespaces dt, dba_extents dxs AND dx.owner = '&OWNER'6.查看不主键的表SELECT table_nameFROM all_tablesWHERE owner = '&OWNER'MINUSSELECT table_nameFROM all_constraintsWHERE owner = '&&OWNER'AND constraint_type = 'P'7.查看做废的主键SELECT owner, constraint_name, table_name, statusFROM all_constraintsWHERE owner = '&OWNER' AND status = 'DISABLED’ AND constraint_type = 'P'8.沉建索引,简直参数请根据本质情况举止建改SELECT 'alter index ' || index_name || ' rebuild ', 'tablespace INDEXES storage ( initial 256 K next 256 K ) ; ' FROM all_indexesWHERE ( tablespace_name != 'INDEXES'OR next_extent != ( 256 * 1024 ))AND owner = '&OWNER'9.对付比二个真例的分歧SELECT object_name, object_typeFROM user_objectsMINUSSELECT object_name, object_typeFROM user_objects@&my_db_link10.查看动向本能视图Select * from V$FIXED_TABLE11.查看拘束select a.constraint_name, a.constraint_type,a.*from user_constraints awhere table_name='table_name';select constraint_name, column_namefrom user_cons_columnswhere table_name='table_name';12.查看索引user_indexes包罗索引的名字,user_ind_columns包罗索引的列.13.查看数据库开用参数:show parameter para,v$parameter提供目前会话疑息,v$system_parameter提供目前系统疑息.其中isses_modifiable,issys_modifiable表示是可允许动向建改.14.查看进程号:select p.spid, ernamefrom v$process p, v$session swhere p.addr=s.paddr;15.查看数据文献:select name, statusfrom v$datafile;select *from dba_data_files;16.查看数据文献状态from v$datafile d, v$datafile_header hwhere d.file#=h.file#;17.查看统制文献select namefrom v$controlfile;select type, record_size, records_total, records_used from v$controlfile_record_sectionwhere type=’DATAFILE’;18.查看是可归档模式:archive log listselect name, log_modefrom v$database;select archiverfrom v$instance;19.查看日志组:select groups, current_group#, sequence#from v$thread;select group#, sequence#, bytes, members, status from v$log;select *from v$logfile;其中status为空表示寻常.20.查看large poolselect *from v$sgastatwhere pool=’large pool’;21.查看归档位子show parameter archiveselect destination, binding, target, status from v$archive_dest;22.查看归档进程select *from v$archive_processes;23.查看正正在备份的数据文献select *from v$backup;24.查看需要回复的文献select *from v$recover_file;25.查看所有归档日志文献select *from v$archived_log;26.查看回复时要用到的日志文献select *from v$recovery_log;27.查看SGA的结构Show sga;select *from v$sgastat;28.提与library cache的掷中率select gethitratiofrom v$librarycachewhere namespace=’…’;29.查看正正在运止的SQL语句select sql_text, users_executing, executions, loadsfrom v$sqlarea;select *from v$sqltextwhere sql_text=’select * from emp%’;30.查看library cache reload情况:select sum(pins) “Executions”, sum(reloads) “cache Misses”, sum(reloads)/sum(pins)from v$librarycache;31.查看大藏名块select sql_text from v$sqlareawhere command_type=47and length(sql_text)>500;32.查看目前会话的UGA区select sum(value)||’bytes’ “Total session memory”from v$mystat, v$statnamewhere name=’session uga memory’and v$mystat.statistic#=v$statname.statistic#;33.查看所有MTS用户的UGA区:select sum(value)||’bytes’ “Total session memory”from v$sesstat, v$statnamewhere name=’session uga memory’and v$sesstat.statistic#=v$statname.statistic#;34.查看所有用户使用的最大的UGA区:select sum(value)||’bytes’ “Total session memory”from v$sesstat, v$statnamewhere name=’session uga memory max’and v$sesstat.statistic#=v$statname.statistic#;35.查看high-water mark以下的块数select table_name, blocksfrom dba_tableswhere table_name=’table_name’;36.查看会话的I/O:from v$sess_io io, v$session swhere s.audsid=USERENV(‘SESSIONID’)and io.sid=s.sid;37.查看Buffer pool的掷中率select name, 1-(physical_reads/(db_block_gets+consistent_gets)) “HIT_RATIO”from sys.v$buffer_pool_statisticswhere db_block_gets+consistent_gets>0;38.查看free list的比赛select class, count, timefrom v$waitstatwhere class=’segment header’;select event, total_waitsfrom v$system_eventwhere event=’buffer busy waits’;buffer busy waits可正在二种情况爆收:1dirty queue已谦,2free list比赛.39.查看free list比赛爆收正在哪个segment上select s.segment_name, s.segment_type, s.freelists, w.wait_time, from dba_segments s, v$session_wait wwhere w.event=’buffer busy waits’and w.p2=s.header_block;40.查看齐表扫描爆收的次数select name, valuefrom v$sysstatwhere name like ‘%table scan%’;41.查看大支配的真止情况select sid, serial#, opname,to_char(start_time, ‘HH24:MI:SS’) as start_t,(sofar/totalwork)*100 as percent_completefrom v$session_longops;42.查看数据文献的I/Ofrom v$datafile d, v$filestat fwhere d.file#=f.file# order by ;43.查看空闲块数少于10%的segment(blocks正在high-watermark以下,empty_blocks其上)select owner, table_name, blocks, empty_blocksfrom dba_tableswhere empty_blocks/(blocks+empty_blocks)<0.1and blocks+empty_blocks!=0;44.查看migration战chaininganalyze table table_name compute statistics;select num_rows, chain_cntfrom dba_tableswhere table_name=’table_name’;45.查看表的统计疑息analyze table table_name compute statistics;select num_rows, blocks, empty_blocks as empty, avg_space, chain_cnt, avg_row_lenfrom dba_tableswhere ow ner=’HR’ andtable_name=’table_name’;46.查看索引的统计疑息analyze index index_name validate structure;select (del_lf_rows_len/lf_rows_len)*100 as index_usagefrom index_stats;5凡是维护战问题管制脚法动做一名数据库管制员,数据库应用的寻常宁静运止是包管咱们应用系统的要害包管,而数据库的凡是监控战维护处事至关要害.搞佳它的查看处事的文档管制也是数据库管制的必不可少的处事之一,那有好处咱们逃踪问题战对付数据库的版本统制非常要害.例止处事提议每天例止处事:1.决定数据库真例处于运奇迹态2.查看ALERT 日志3.决定数据库乐成备份4.决定数据库归档到磁戴5.决定有足够的资材使数据库能运止正在良佳状态6.抽时间阅读DBA管制脚册每周例止处事:1.查看是可有对付象处于非寻常状态2.查看仄安战术3.查看SQL*NET 日志中是可有过得4.归档所有ALERT 日志每月例止处事:1.查看潜正在的妨害2.查看是可需要本能调劣及调劣时机3.查看I/O比赛4.查看数据库碎片5.制定将去的本能计划6.举止数据库调劣战维护相关挖表证明凡是维护查看表:是数据库管制员正在通常的凡是监控维护处事后搞的处事记录.只挖写查看的截止.仔细的问题管制记录妥协决历程便挖写问题管制记录表.如果正在查看历程中寻常正在相映栏目挨√,如果有非常十分情景挨X,共时正在后里写上相对付应的问题管制记录的编号.问题编号的命名圆法是12位,便是当时挖写记录表的日期战时间,比圆数据库管制员正在2010年04月11日14:00正在搞例止查看时创制了问题,那么正在挖写凡是维护查看表时便应正在相对付应的栏目写上问题编号201004111400.问题管制记录表是正在挖写凡是维护查看表的前提上创制了问题再挖写仔细的问题爆收妥协决历程.其中问题编号便是凡是维护查看表中的问题编号.变动记录表是咱们对付数据库搞支配前后的一个记录表.凡是查看维护表问题管制记录变动管制记录变动流火号:1.变动提出变动提出人变动提出日期变动本果简要形貌:2.变动评估变动评估人变动评估日期变动是可真施θ是θ可变动慢迫程度θ慢迫θ普遍θ不慢迫变动真施克日3.变动真施变动真施人变动真施日期。
sql 存储中查看临时表内容的方法在SQL存储中,临时表是一种临时存储数据的表,它只在当前会话中存在,并且在会话结束后自动删除。
在实际的数据处理中,我们经常需要查看临时表中的数据,以便进行后续的分析和处理。
本文将介绍几种常用的方法来查看临时表的内容。
方法一:使用SELECT语句查看临时表内容最简单直接的方法是使用SELECT语句来查看临时表的内容。
语法如下:SELECT *FROM #临时表名;其中,#临时表名是你创建的临时表的名称。
通过使用SELECT *语句,我们可以查看临时表中的所有列和行。
如果需要查看指定列的数据,可以将*替换成列名。
例如,我们创建了一个名为#temp的临时表,其中包含了id和name两列,可以使用以下语句查看临时表的内容:SELECT *FROM #temp;方法二:使用INSERT语句将临时表的内容插入到永久表如果临时表中的数据比较复杂,或者需要进行一些复杂的查询操作,我们可以将临时表的内容插入到一个永久表中,然后再通过查询永久表的方式来查看临时表的内容。
我们需要创建一个与临时表结构相同的永久表。
可以使用CREATE TABLE语句来创建永久表,例如:CREATE TABLE permanent_table(id INT,name VARCHAR(50));然后,使用INSERT INTO语句将临时表的内容插入到永久表中,如下所示:INSERT INTO permanent_tableSELECT *FROM #temp;可以使用SELECT语句查询永久表的内容来查看临时表的数据,如下所示:SELECT *FROM permanent_table;方法三:使用系统视图查看临时表内容在SQL Server中,我们可以使用系统视图sys.dm_db_session_space_usage来查看当前会话的临时表的使用情况。
这个视图返回了临时表的名称、行数、占用空间等信息。
可以使用以下语句来查询临时表的使用情况:SELECT[T able Name] = CASE WHEN [internal_obj_type] IN (202,204,207,211,212,213,214,215) THEN OBJECT_NAME([internal_obj_id], [internal_obj_subid]) ELSE 'N/A' END,[Rows] = SUM([row_count]),[Reserved Space (KB)] = SUM([reserved_page_count]) * 8, [Data Space (KB)] = SUM([data_page_count]) * 8,[Index Space (KB)] = SUM([used_page_count] - [data_page_count]) * 8FROM sys.dm_db_session_space_usageWHERE [internal_obj_type] IN (202,204,207,211,212,213,214,215)GROUP BY [internal_obj_id], [internal_obj_subid]ORDER BY [Reserved Space (KB)] DESC;这个查询会返回当前会话中所有临时表的名称、行数、占用空间等信息。
oracle sql操作日志概述及解释说明1. 引言1.1 概述Oracle SQL操作日志是一种记录数据库系统中执行的SQL语句细节和相关信息的功能。
通过启用和配置SQL操作日志,我们可以跟踪和监控数据库的操作行为,包括查询、更新和删除等操作。
这对于系统维护人员和开发人员来说非常重要,因为它们可以帮助我们理解数据库系统中发生的事情,并且在故障排查和性能优化方面提供有价值的信息。
1.2 文章结构本文将从多个方面详细介绍Oracle SQL操作日志。
首先,我们将解释SQL操作日志的含义,并阐明其在数据库系统中的作用。
接着,我们将讨论开启和配置SQL操作日志功能的方法。
然后,我们将深入探讨SQL操作日志中涉及的关键要点,如记录SQL语句执行细节的作用、日志文件保存路径和格式说明,以及使用SQL操作日志进行故障排查和性能优化的方法。
最后,在结论部分,我们将总结文章主要内容及观点,并对Oracle SQL操作日志未来的发展趋势进行展望。
1.3 目的本文旨在向读者提供关于Oracle SQL操作日志的全面概述及解释说明。
通过阅读本文,读者将了解到SQL操作日志的重要性和作用,以及如何开启和配置该功能。
此外,读者还将熟悉SQL操作日志中涉及的关键要点,并学习到使用SQL 操作日志进行故障排查和性能优化的方法。
最终,读者将对Oracle SQL操作日志有一个清晰的认识,并能够在实际工作中灵活应用该功能。
2. 正文正文部分将深入探讨Oracle SQL操作日志的概念、功能以及使用方法。
本节将具体介绍SQL操作日志的基本原理和应用场景。
2.1 Oracle SQL操作日志的基本原理在Oracle数据库中,SQL操作日志被用于记录对数据库进行的每个操作。
这些操作包括查询、更新、插入和删除等。
当用户执行一个SQL语句时,Oracle会自动将该SQL语句以及其执行结果等相关信息记录到日志文件中。
2.2 Oracle SQL操作日志的主要作用SQL操作日志起着重要的作用,尤其在故障排查和性能优化方面。
查看SQLServer操作⽇志(转载)SQL Server提供了⼀个undocumented的函数fn_dblog可以让我们查看活动的transaction log。
语法如下:::fn_dblog(@StartingLSN,@EndingLSN)如果参数都为NULL默认是抓取所有的交易信息。
使⽤这个函数我们可以查询DML,DDL信息,⽐如数据删除,修改更新等等。
下⾯我们来看⼀个数据更新的例⼦:create table test(namevarchar(10))--插⼊条数据insert into testvalues('allen test')go5---查询对表Test的修改select[Transaction Name],Operation,AllocUnitId,AllocUnitName,[Begin Time]fromfn_dblog(null,null)where AllocUnitName ='dbo.test'andOperation='LOP_INSERT_ROWS'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------NULLLOP_INSERT_ROWS72057594040090624 dbo.test NULLNULLLOP_INSERT_ROWS72057594040090624 dbo.test NULLNULLLOP_INSERT_ROWS72057594040090624 dbo.test NULLNULLLOP_INSERT_ROWS72057594040090624 dbo.test NULLNULLLOP_INSERT_ROWS72057594040090624 dbo.test--删除表drop table test----从Log中查询对表的删除select[Transaction Name],Operation,AllocUnitId,AllocUnitName,[Begin Time]fromfn_dblog(null,null)where[Transaction Name]='DROPOBJ'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------DROPOBJLOP_BEGIN_XACT NULL NULL--查询Page Splitselect Operation, AllocUnitName,COUNT(*)asNumberofIncidentsfrom ::fn_dblog(null,null)where Operation =N'LOP_DELETE_SPLIT'group byOperation, AllocUnitName注意:从fn_dblog 查出来的LSN是不能直接作为参数的,需要将16进制转化为numeric:The LSN we havefrom the log dump above is 0000009d:0000021e:0001.To convert it:Take the rightmost 4 characters (2-byte log record number) and convert to a 5-character decimal number, including leading zeroes, to get stringATake the middle number (4-byte log block number) and convert to a 10-character decimal number, including leading zeroes, to get stringBTake the leftmost number (4-byte VLF sequence number) and convert to a decimal number, with no leading zeroes, to get stringCThe LSN string we need is stringC + stringB + stringASo0000009d:0000021e:0001 becomes '157'+'0000000542'+'00001'='157000000054200001'.(来⾃SQLSkills)可以参考下⾯的脚本:DECLARE@pageID$ NVARCHAR(23), @pageIDNVARCHAR(50), @sqlCmdNVARCHAR(4000);SET@pageID$ ='0001:0000004d'--- PageIDSELECT@pageID=CONVERT(VARCHAR(4),CONVERT(INT,CONVERT(VARBINARY,SUBSTRING(@pageID$, 0, 5), 2)))+','+CONVERT(VARCHAR(8),CONVERT(INT,CONVERT(VARBINARY,SUBSTRING(@pageID$, 6, 8), 2)))---查看Page内容SET@sqlCmd='DBCC PAGE (''Crack_Me'','+@pageID+',3) WITH TABLERESULTS'EXECUTE(@sqlCmd)另外这个函数只能对当前活动的Log⽣效,如果Log备份之后就⽆法读取了,我们需要⽤另外⼀个函数(fn_dump_dblog /smithliu328/article/details/7817540)从备份中读取。
ALERT⽇志中常见监听相关报错之中的⼀个:ORA-609错误的排查參考MOS⽂档有:Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (⽂档 ID 1121357.1)Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (⽂档 ID 1538717.1)Fatal NI Connect 12560' And 'ORA-609 Opiodr Aborting Process' Errors In The Alert Log (⽂档 ID 987162.1)数据库的ALERT⽇志中常会见到ORA-609、ORA-3136/ORA-609 TNS-12537 and TNS-12547 or TNS-12170 12170, 'TNS-12535等相关错误,对此类型问题进⾏整理归纳,例如以下:1.ORA-609错误的排查指南:Alert log 能够看到例如以下错误信息:Fatal NI connect error 12537, connecting to:(LOCAL=NO)VERSION INFORMATION:TNS for Linux: Version 11.2.0.3.0 - ProductionOracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.3.0 - ProductionTCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - ProductionTime: 26-FEB-2013 02:23:51Tracing not turned on.Tns error struct:ns main err code: 12537TNS-12537: TNS:connection closedns secondary err code: 12560nt main err code: 0nt secondary err code: 0nt OS err code: 0opiodr aborting process unknown ospid (28725) as a result of ORA-609First an explanation of this kind of errors.The messageopiodr aborting process unknown ospid (.....) as a result of ORA-609is just a notifications that oracle database closed (aborted) a dedicated process because of ORA-609.ORA-609 means "could not attach to incoming connection" so the database process was 'aborted' (closed) because it couldn't attach to the incoming connection passed to it by the listener.The reason for this is found in the sqlnet error stack, in our case is:TNS-12537: TNS:connection closed.Basically the dedicated process didn't have a client connection anymore to work with.此报错类似通知:ORACLE由于ORA-609关闭或者叫中⽌了⼀个到数据库的专有连接--ospid (28725)。
undo表空间使用案例分析(UNDOTBS1使用率100%,enq:US问题描述:近几天发现Oracle10.2.0.4数据库undo tablespace表空间使用率很高(最高时达到100%),报警系统频繁报障undo tablespace 表空间使用率过高。
TABLESPACE_NAME TOTAL USED FREE PUSE D PFREE----------------- ---------- ---------- ---------- ---------- ----------UNDOTBS1 6141 % %查询所有表空间使用情况(今天发现自己创建的表空间在使用完的情况,这个查询语句或者其它查询语句查不出已经使用完的表空间,只能自己删除掉一些使用该表空间的用户,以便释放自己创建的表空间)SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTE S) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)"FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOT TE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 1;问题分析2.1 业务系统影响undo tablespace表空间使用率达到100%时,没有业务系统用户反映系统出现表空间不能扩展的报错(ORA-30036),但曾经出现过快照过旧报错(ORA-01555)。
检查指定时间段的数据库alert日志#!/usr/bin/ksh#输入ORACLE_SID变量echo -n "Enter ORACLE_SID:"read ORACLE_SIDecho $ORACLE_SIDexport $ORACLE_SID#输入oracle账户echo -n "Enter oracle_account:"read oracle_accountecho $oracle_account#输入oracle账户密码echo -n "Enter oracle_password:"read oracle_password#输入tnsname中的字符串名称echo -n "Enter oracle_strings"read oracle_stringsecho $oracle_strings#使用刚刚输入的内容登录连接指定的数据库,查询数据库的实例名并记录到oracle HOME 目录下的instance_name.txt文件中sqlplus -s $oracle_account/$oracle_password@$oracle_strings << !set echo onspool ?/instance_name.txtselect instance_name from v$instance;spool offexit#提取instance_name.txt中的实例名并更新instance_name.txt文件cat $ORACLE_HOME/instance_name.txt |awk 'NR=5' >$ORACLE_HOME/instance_name.txt read instance_name < $ORACLE_HOME/instance_name.txtecho $instnace_name#取出系统当前日期的前10列,比如Wed Oct 20date|cut -c1-10>$ORACLE_HOME/date.txtread date < $ORACLE_HOME/date.txtecho $date#在alert文件中找到第一条指定日期的记录所在的行数,并取出字符串“行数”grep -n "$date" /ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log |head -1>$ORACLE_HOME/first_num.txtcat $ORACLE_HOME/first_num.txt |awk -F":" '{print $1}' >$ORACLE_HOME/first_num.txt#在alert文件中找到最后一条指定日期的记录所在的行数grep -n "$date" /ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log |tail -1>$ORACLE_HOME/last_num.txtcat $ORACLE_HOME/last_num.txt |awk -F":" '{print $1}' >$ORACLE_HOME/last_num.txt read first_num < $ORACLE_HOME/first_num.txtread last_num < $ORACLE_HOME/last_num.txt#读取指定行数之间的所有行,并用grep 过滤关键字,看日志是否报错sed -n '$first_num,$last_nump' /ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log |grep ORAsed -n '$first_num,$last_nump' /ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log |grep Error。
sqllogs用法SQL日志是数据库管理系统(DBMS)中非常重要的组成部分,用于记录所有数据库操作、系统事件和错误信息。
它可以帮助系统管理员进行故障排除、性能优化和安全审计。
通过分析SQL日志,可以获得有关数据库的宝贵信息,如查询执行时间、事务日志、错误信息等。
SQL日志可以用于以下几个方面的应用:1.故障排除和错误诊断:SQL日志可以记录系统中的错误信息和异常情况。
这些信息对于排查导致数据库故障的原因非常有用。
通过查看SQL日志,可以找到导致数据库崩溃或运行异常的错误语句,进而采取相应的措施来修复问题。
2.性能优化:SQL日志可以帮助系统管理员找出数据库中的性能瓶颈。
通过分析SQL日志中的查询执行时间、索引使用情况和IO操作等信息,可以确定哪些查询或操作是性能瓶颈,并且可以采取适当的措施来提高数据库的性能。
3.安全审计:SQL日志可以记录所有数据库操作的详细信息,包括对表的增删改查操作,用户登录和退出日志等。
通过分析SQL日志,可以审计用户对数据库的操作,并且识别潜在的安全风险。
例如,检测是否有未授权的访问尝试,或者确定一些特定的用户是否在未授权的情况下访问了敏感数据。
4.数据恢复:SQL日志中可能包含有关数据库修改的所有信息,如插入、更新和删除操作。
这些信息可以用来恢复数据。
当数据库发生故障时,可以使用SQL日志中的信息来还原数据库到最近的一个一致的状态。
通过replaying log(重放日志)的方式,将日志中的操作重新执行,使数据库恢复到故障之前的状态。
5.监控和报警:通过监控SQL日志,可以实时获得有关数据库运行状态的信息,并且能够根据一些特定的条件进行报警。
例如,如果日志中出现了其中一种异常的错误信息,可以即时发送警报给管理员,以便及时采取措施来调整和修复问题。
6.合规性和法规要求:许多行业和法规要求数据库记录所有操作和事件的详细信息,以确保数据的合规性和安全性。
SQL日志可以满足这些要求,并提供一种可追踪的方式来验证数据的准确性,并防止潜在的欺诈和滥用。
关于“进销存”系统的登录方法——利用SQL注入进行登录“进销存”系统的登录存在着SQL注入的漏洞,利用这个漏洞可以绕过用户名和密码的判断,从而进入“进销存”系统。
下面,对于这个漏洞进行具体的说明。
(注:由于系统源代码可见,于是可以直接通过代码来分析SQL注入,因此不在这里进行源代码语句漏洞试探。
)1、首先打开登录页面,找到源代码位置。
图1——登录页面的源代码位置2、打开源代码,找到有关登录语句验证的代码,代码如下(重要部分已给出注释):<%elsenowusername=request.form("username")//声明一个变量nowusername,把页面中的登录名内容传值给此变量。
nowpwd=request.form("pwd")//声明一个变量nowpwd,把页面中的密码内容传值给此变量。
userip = Request.ServerVariables("bbb_X_FORW ARDED_FOR")If userip = "" Thenuserip = Request.ServerVariables("REMOTE_ADDR")end ifsql="select * from login where (username=' "&nowusername&" ' and pwd='"&md5(nowpwd)&" ') or (bianhao=' "&nowusername&" ' and pwd=' "&md5(nowpwd)&" ')"//声明一个sql语句,条件是调用login表中的username字段为页面中的登录名内容值且pwd字段为页面中的密码内容值,或者调用login表中的bianhao字段为页面中的登录名内容值且pwd字段为页面中的密码内容值。
查看SQL数据库操作日志方法在SQL数据库中,可以通过各种方法查看操作日志。
下面将介绍几种常用的方法:1.使用数据库自带的日志功能大多数SQL数据库都会记录操作日志,用于跟踪和审计数据库的活动。
可以通过查询数据库的系统视图或系统表来查看操作日志。
不同数据库有不同的实现方法,下面以MySQL为例进行说明:-使用`SHOWBINARYLOGS`语句可以查看二进制日志文件的列表。
-使用`SHOWMASTERSTATUS`语句可以查看主日志文件和当前写入位置。
-使用`SHOWSLAVESTATUS`语句可以查看备用服务器的复制状态。
2.使用数据库监控工具许多数据库监控工具提供了查看操作日志的功能,这些工具通常能够以图表形式显示数据库的活动情况。
一些著名的数据库监控工具如Nagios、Datadog、Prometheus等都支持查看SQL数据库的操作日志。
3. 使用SQL Profiler工具SQL Profiler是微软提供的一个用于监视和分析SQL Server数据库活动的工具。
通过SQL Profiler,可以实时查看数据库的操作日志,并根据需要进行过滤和分析。
SQL Server Management Studio(SSMS)中集成了SQL Profiler,可以方便地使用。
4.使用第三方工具除了数据库厂商提供的工具外,还有一些第三方工具也提供了查看数据库操作日志的功能。
这些工具通常具有更加强大和灵活的功能,可以对数据库活动进行更深入的分析和监控。
比较常用的第三方工具有Percona Toolkit、Mytop、SQLSentry等。
5.使用日志解析工具SQL数据库的日志文件通常是二进制格式的,难以直接阅读。
为了方便查看和分析日志,可以使用一些日志解析工具。
这些工具能够将日志文件转换为易于阅读和分析的文本格式。
比较常用的日志解析工具有MySQL binlog reader、Oracle logminer等。
select value from v$diag_info where name ='Diag Trace';/app/oracle/diag/rdbms/db2/DB2/trace/alert_DB2.log/104152/viewspace-139982/上周去巡检.结果一个用户问我如何使用sql语句来查看alert日志中的内容. 当时想着用存储过程来做.回来后想了想,用external 测试一下看看:SQL> !pwd/u01/app/oracle/admin/ORALINUX/bdumpcreate directory BDUMP as '/u01/app/oracle/admin/ORALINUX/bdump';SQL> !lsALERT_LOG_3220.bad alert_ORALINUX.log oralinux_lgwr_3202.trc oralinux_lgwr_7056.trcALERT_LOG_3220.log oralinux_lgwr_3123.trc oralinux_lgwr_6993.trc oralinux_pmon_7048.trccreate table alert_log ( text varchar2(80) )organization external (type oracle_loaderdefault directory BDUMPaccess parameters (records delimited by newline)location('alert_ORALINUX.log'))reject limit 1000;SQL> select * from alert_log where text like '%ORA-%';TEXT-------------------------------------------------------------------------------- ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/ORALINUX/redo01.log'ORA-27037: unable to obtain file statusORA-00313: open failed for members of log group 2 of thread 1ORA-00312: online log 2 thread 1: '/u02/oradata/ORALINUX/redo02.log'ORA-27037: unable to obtain file statusORA-00313: open failed for members of log group 3 of thread 1ORA-00312: online log 3 thread 1: '/u02/oradata/ORALINUX/redo03.log'ORA-27037: unable to obtain file status/22558114/viewspace-1097786-- 可以查询 alert 日志中的任何信息-- 创建 bdump 目录sys@DEMO> create directory b_dump_dir as 'D:\oracle\product\10.2.0\admin\demo\bdump'; Directory created.--sys@DEMO> select * from all_directories;OWNER DIRECTORY_NAME DIRECTORY_PATH----- --------------- -------------------------------------------SYS B_DUMP_DIR D:\oracle\product\10.2.0\admin\demo\bdump1 rows selected.-- 赋予用户权限sys@DEMO> grant read, write on directory b_dump_dir to go;Grant succeeded.sys@DEMO> conn go/go-- 创建外部表create table alert_log(text_line varchar(255))organization external(type oracle_loaderdefault directory b_dump_diraccess parameters(records delimited by newlinefieldsreject rows with all null fields)location('alert_demo.log'))reject limit unlimited/-- 执行查询语句selectto_char(last_time,'yyyy-mm-dd hh24:mi') shutdown, to_char(start_time,'yyyy-mm-dd hh24:mi') startup, round((start_time-last_time)*24*60,2) mins_down,round((last_time-lag(start_time) over (order by r)),2) days_up, casewhen (lead(r) over (order by r) is null )then round((sysdate-start_time),2)end days_still_upfrom(select r,to_date(last_time, 'Dy Mon DD HH24:MI:SS YYYY') last_time,to_date(start_time,'Dy Mon DD HH24:MI:SS YYYY') start_timefrom(selectr,text_line,lag(text_line,1) over (order by r) start_time,lag(text_line,2) over (order by r) last_timefrom(selectrownum r,text_linefromalert_logwheretext_line like '___ ___ __ __:__:__ 20__' ortext_line like 'Starting ORACLE instance %'))wheretext_line like 'Starting ORACLE instance %')/SHUTDOWN STARTUP MINS_DOWN DAYS_UP DAYS_STILL_UP ----------------- ----------------- ---------- ------- -------------2011-07-24 15:10 2011-07-24 15:10 02011-07-24 15:31 2011-07-24 15:31 .65 .012011-07-24 15:36 2011-07-24 15:39 2.48 02011-07-24 20:08 2011-07-24 20:57 49.08 .192011-07-25 21:51 2011-07-25 21:51 0 1.042011-07-29 10:18 2011-07-29 10:19 .9 3.522011-07-29 10:20 2011-07-29 10:22 2 02011-07-29 10:25 2011-07-29 10:25 .1 02011-08-07 11:32 2011-08-07 11:32 .07 9.052011-08-07 11:35 2011-08-07 11:36 .05 02011-08-07 12:38 2011-08-07 12:38 .5 .042011-08-07 17:16 2011-08-07 17:16 .13 .192011-08-07 17:21 2011-08-07 17:26 5.18 02011-08-07 17:32 2011-08-07 17:32 .12 02011-08-08 21:14 2011-08-08 21:14 0 1.152011-08-08 22:06 2011-08-08 22:06 .35 .042011-08-12 21:39 2011-08-12 21:39 0 3.982011-08-12 21:40 2011-08-12 21:40 .05 02011-08-13 09:25 2011-08-13 09:25 0 .49 .17 19 rows selected./26686207/viewspace-764596外部表:表中的数据以操作系统文件的方式来存放,现在表中的数据不是放在数据库中了而是放在操作系统上面,Oracle提供了一种直接读取外部数据的机制。
外部表好处:1.数据二次开发2.大数据量迁移3.充分利用操作系统空间4.不占用数据库空间5.支持标准SQL条件检索外部表也需要目录对象的支持,通过目录对象可以知道从哪个目录读取文本数据LEO1@LEO1>create directory alert as'/u02/app/oracle/diag/rdbms/leo1/LEO1/trace';Directory created.这是Oracle 11g 告警日志目录grant read,write on directory alert topublic; 对这个目录对象授予读/写权限,并授予所有用户LEO1@LEO1>select * from dba_directories;OWNER DIRECTORY_NAME DIRECTORY_PATH--------------------------------------------------------------------------------------------------------------SYS EXP_DUMP /home/oracle/exp_dumpSYS XMLDIR /u02/app/oracle/product/11.2.0/db_1/rdbms/xmlSYS ALERT /u02/app/oracle/diag/rdbms/leo1/LEO1/traceSYS DATA_PUMP_DIR /u02/app/oracle/admin/LEO1/dpdump/SYS ORACLE_OCM_CONFIG_DIR /u02/app/oracle/product/11.2.0/db_1/ccr/state我们下面就是Oracle告警日志文件当作数据库的一个外部数据源来访问,我们使用外部表的方式抽取alert日志数据,然后使用标准SQL语句来检索“ora-错误信息”。