回缩Undo表空间 释放过度占用空间
摘要:在使用Oracle9i/Oracle10g的自动Undo管理表空间(AUM)特性时,经常会因为各种原因而导致Undo表空间过度扩展。本文通过一则案例诊断,介绍如何收缩过度扩展的Undo表空间,释放占用空间。环境:OS: Red Hat Enterprise Linux AS release 4 (Nahant)DB: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 某日,一台Oracle10gR2数据库报出如下错误:[@more@]ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in tablespace SYSAUX ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERR
查看表的统计信息SQL脚本
此脚本可以统计表的统计信息,做成.SQL文件在SQLPLUS中执行,会让你输入SCHEMA和TABLENAME[@more@]set echo offset scan onset lines 150set pages 66set verify offset feedback offset termout offcolumn uservar new_value Table_Owner noprintselect user uservar from dual;set termout oncolumn TABLE_NAME heading "Tables owned by &Table_Owner" format a30select table_name from dba_tables where owner=upper('&Table_Owner') order by 1/undefine table_nameundefine ownerpromptaccept owner prompt 'Pleas
oracle10g 查看SQL执行计划
oracle10g查看SQL执行计划有很多方法:1.通过PL/SQL打开SQLWINDOW按F5可以看到执行计划,但是这里没有物理读等统计信息[@more@]2.使用dbms_xplan包,这里跟F5差不多,也是没有一些统计信息Oracle9i新引入的包dbms_xplanOracle9i新引入的包dbms_xplan。函数display有三个参数:Table_name——执行计划所存放的表,默认为PLAN_TABLE;STATEMENT_ID——PLAN_TABLE表中的字段;FORMAT——显示格式。 SQL> explain plan for 2 select 3 tA.n2, 4 tB.n2 5 from 6 t1 tA, 7 t1 tB 8 where 9 tA.n1 = 15 10 and tB.n1 = tA.n1 11 ; Explained. SQL&
oracle设置supplemental log
因为在oracle里在做update操作时候,有些信息是不技术redo log,例如主键或唯一键等,这样在根据redolog 来解析数据是时候你就不知道具体那行数据被修改,如果根据rowid 来做key值的,在不同数据库里脱离了块,rowid也就没有任何意义了,所以oracle提供了supplemenetal log,通过配置启动它,oracle会在redo log里技术主键或唯一键的信息。具体修改方法如下:[@more@]--停止supplemental logalter database drop supplemental log data--默认启动方法不是完全启动,建议使用下面的指定启动的方法alter database add supplemental log data
oracle job使用详解及job不运行的检查方法
每天1点执行的oracle JOB样例DECLAREX NUMBER;BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'ETL_RUN_D_Date;',next_date => to_date('2009-08-26 01:00:00','yyyy-mm-dd hh24:mi:ss'),interval => 'trunc(sysdate)+1+1/24',no_parse => FALSE);SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));COMMIT;END;/以上是明确指定每天的1点执行此job,如果指定是每天中午12点执行interval需要指定为'trunc(sysdate)+1+12/24',如果仅仅指定interval为一天,这样当你手工用dbms_job.run(job)去运行一次时,job每天的执行时
expdp 和impdp的笔记[转帖]
Oracle Database 10g引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中.数据泵导出导入(EXPDP和IMPDP)的作用1,实现逻辑备份和逻辑恢复.2,在数据库用户之间移动对象.3,在数据库之间移动对象4,实现表空间搬移.[@more@]数据泵导出导入与传统导出导入的区别在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户段工具程序,它们既可以在可
跨平台表空间迁移(传输表空间)
示例:准备两个数据库(ltdb和epras),从ltdb导出tsts表空间(用户ts,包含2个数据文件到epras。 详细的执行步骤: 1.ltdb导出可传输表空间(以sysdba执行导出)到dmp文件。 2.将ltdb的tsts表空间改为只读。 [@more@]3.用操作系统命令复制数据文件和dmp文件到另一个位置给另一个数据库epras使用。 如果在一台服务器上,dmp文件可以不必复制,复制完成后,将ltdb的tsts表空间改为可读写。 4.在epras数据库创建ts用户(此时不必授权)。 5.导入可传输表空间(以sysdba执行导入)到dmp文件到epras数据库。 6.将epras的tsts表空间改为可读写,给ts
oracle清理和重建临时表空间
清理临时表空间正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。这个问题在论坛中也常被网友问到,下面我总结一下,给出几种处理方法。[@more@] 法一、重启库 库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。 法二、Metalink给出的一个方法
oracle常用命令
第一章:日志治理 1.forcing log switchessql> alter system switch logfile;2.forcing checkpointssql> alter system checkpoint;[@more@]3.adding online redo log groupssql> alter database add logfile [group 4]sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;4.adding online redo log memberssql> alter database add logfile membersql> '/disk3/log1b.rdo' to group 1,sql> '/disk4/log2b.rdo' to group 2;5.changes the name of the online redo logfilesql> alter database rename file 'c:/
使用未写入文档参数_ALLOW_RESETLOGS_CORRUPTION进行崩溃恢复经典一例
什么情况可能使用该参数 有些时侯可能你的库处于非归档的模式下,而你的联机重做日志又currupted,你的数据文件不能完成完全的恢复。而这时当你试图打开数据库时,oracle提示你用resetlogs选项,当你使用该选项时oracle又不允许你使用该选项,总之你想打开数据库,可就是打不开。[@more@] 步骤: 1、最好做一个物理的库的全备 2、使用sqlplus 启动库至mount sqlplus /nolog sql>connect internal sql>startup mount 3、确保所有的数据文件都处于"END BACKUP"状态 s
oracle导成文本格式
在Oracle中你找不到来完成这个功能的工具. 我以前曾经用PowerBuilder的数据管道来完成这个任务, 后来在AskTom上看到有两个工具, 其中一个是用SQL*Plus的SPOOL命令来做的, 另一个是用Pro*C程序来写的. 用SQL*Plus的那种方法要比Pro*C的慢一些, 但是Pro*C因为和:[@more@]如何导出Oracle中的数据到文本文件? 在Oracle中你找不到来完成这个功能的工具. 我以前曾经用PowerBuilder的数据管道来完成这个任务, 后来在AskTom上看到有两个工具, 其中一个是用SQL*Plus的SPOOL命令来做的, 另一个是用Pro*C程序来写的. 用SQL*Plus的那种方法要比Pro*
oracle10g logmnr的使用
一.安装LogMiner$ sqlplus /nologSQL*Plus: Release 10.2.0.3.0 - Production on Tue Apr 15 12:30:58 2008Copyright (c) 1982, 2006, Oracle. All Rights Reserved.SQL> conn / as sysdba;Connected to an idle instance.SQL> startupORACLE instance started.[@more@]一.安装LogMiner$ sqlplus /nologSQL*Plus: Release 10.2.0.3.0 - Production on Tue Apr 15 12:30:58 2008Copyright (c) 1982, 2006, Oracle. All Rights Reserved.SQL> conn / as sysdba;Connected to an idle instance.SQL> startupORACLE instance st
Oracle常用dump命令介绍[转贴]
Oracle常用dump命令介绍链接:http://www.eygle.com/digest/2008/04/oracledump.html --------------------------------------------------------------------------------站内相关文章|Related Articles Oracle Internal Events Introduction9i Performance Tuning Guide 读书笔记二9i Performance Tuning Guide 读书笔记一Oracle GlossaryOracle IS The Information Company一.Memory Dumps1).Global AreaALTER SESSION SET EVENTS 'immediate trace name global_area level n';1 包含PGA2 包含SGA4 包含UGA8 包含indrect memory[@more@
将informix导出的文本数据导入oracle数据库
做项目的时候,做过数据库的移植工作。当时是从informix数据库移植到oracle数据库。其中对于一些涉及到的标准数据要做些移植。现在把它总结出来,希望对大家有点帮助。当然由于oracle和informix的数据类型有所不同,所以先要根据informix的建库脚本把 oracle数据库的表结构对应的建立起来。这里就不详细说明了。由于informix导出的是文本文件,而oracle数据库的导入导出的数据是oracle数据库识别的二进制文件。如果只是oracle数据库之间的导入的话,可以用oracle自带的import或者export工具导入导出。这里也不详细讨论了。[@more@]做项目的
外部表的另一种用途 数据迁移
外部表的另一种用途 数据迁移不用exp/imp,expdp/impdp来不同平台间迁移数据表由于条件所限,我的操作在两台linux机器上,不同平台的操作方法一样首先导出第一台机器上的数据[oracle@nsisdb application]$ sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 8月 5 14:38:03 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.[@more@]外部表的另一种用途 数据迁移不用exp/imp,expdp/impdp来不同平台间迁移数据表由于条件所限,我的操作在两台linux机器上,不同平台的操作方法一样首先导出第一
使用Oracle的外部表查询警告日志文件
使用Oracle的外部表查询警告日志文件Oracle 9i中开始引入外部表,什么是外部表? External table 和正规的表很相似,具体的定义可以参见《 Oracle 概念手册》,以下的几点需要注意: > 创建的语法类似于: "CREATE TABLE ... ORGANIZATION EXTERNAL" > 数据在数据库的外部组织,是操作系统文件。 [@more@]使用Oracle的外部表查询警告日志文件Oracle 9i中开始引入外部表,什么是外部表? External table 和正规的表很相似,具体的定义可以参见《 Oracle 概念手册》,以下的几点需要注意: > 创建的语法类似于: "C
自动通过trigger捕获DML语句
自动通过trigger捕获DML语句这是一个通过触发器来监控DML语句的例子.SQL> desc t1 Name Null? Type ----------------------------------------------------- -------- ------------------------------------ A NUMBER [@more@]自动通过trigger捕获DML语句SQL> desc t1 Name Null? Type ----------------------------------------------------- -------- ------------------------------------ A
oracle 9i/10g merge 用法
oracle 9i/10g merge 用法oracle9i的mergeMERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。[@more@]Oracle 9i/10g merge 用法oracle9i的mergeMERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行
Oracle10g审计
Oracle10g审计要使用oracle的审计功能必须先设定初始化参数audit_trailaudit_trail 参数的值可以设置为以下几种: 1. NONE:不开启审计功能。 2. DB:开启审计功能,并将审计记录保存在数据库系统提供的审计视图内,要求用于审计功能实现的视图已经创建。[@more@]Oracle10g审计要使用oracle的审计功能必须先设定初始化参数audit_trailaudit_trail 参数的值可以设置为以下几种: 1. NONE:不开启审计功能。 2. DB:开启审计功能,并将审计记录保存在数据库系统提供的审计视图内,要求用于审计功能实现的视图已经创建。 3. OS:审计记录写入
9i与10g的细粒度审计
表的查询语句用普通触发器是检测不到的,除非开启数据库审计,但是从ORACLE9i开始,提供了一个DBMS_FGA包,可以在线对单个的表进行审计并查询审计资料,这就是细粒度审计。但是这个包的审计过程要求数据库运行在CBO优化模式下,如果不是,可能会有意想不到的结果,这就要求对审计的表进行分析。下面将就这个包的使用做简单的介绍,这个包共有四个过程,[@more@]9i的细粒度审计表的查询语句用普通触发器是检测不到的,除非开启数据库审计,但是从ORACLE9i开始,提供了一个DBMS_FGA包,可以在线对单个的表进行审计并查询审计资料,这就是细粒