表闪回操作及解决闪回表时出现的ORA-08189故障
转自:http://hi.baidu.com/danghj/item/9344d05f19e1ee454eff208f闪回的表首先要先允许行移动:alter table xx enable row movement;接着就是闪回了:flashback table xx to timestamp to_timestamp('2009-06-01 10:00:00','yyyy-mm-dd hh24:mi:ss'); 记住这个时间,下次做事要甚而尤甚,因为不是所有的事都有后悔药吃的!select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER------------------------152713033SQL> select count(*) from testvarchar;COUNT(*)----------10000000操作如下:SQL&g
Oracle数据库提高命中率及相关优化
转自:http://database.51cto.com/art/201001/181466.htm本文是关于Oracle数据库调试与优化方面的文章,主要介绍Oracle数据库中命中率相关的问题,包括不同的算法之间性能的比对。51CTO编辑向您推荐《Oracle数据库调试与性能优化》关于Oracle中各个命中率的计算以及相关的调优1)Library Cache的命中率:.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)SQL>SELECT SUM(pinhits)/sum(pins) FROM V$LIBRARYCACHE; 通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。2)计算共享池内存使用
查看 library cache 命中率
转自:http://blog.csdn.net/robinson1988/article/details/4716814SQL> desc v$librarycacheName Null? Type----------------------------------------- -------- ----------------------------NAMESPACE VARCHAR2(15) GETS NUMBER 可以理解为某个object解析的时候查找的次数(解析阶段)GETHITS NUMBER get命中次数GETHITRATIO NUMBER 这个值等于gethits/gets PINS NUMBER 某个object 解析过后被执行的次数(发生在执行阶段) PINHITS NUMBER pin命中次数 PINHITRATIO NUMBER 这个值等于pinhits/pins RELOADS NUMBER 某个object 解析过后
Oracle中truncate table后的数据恢复(Oracle数据恢复工具-ODU)
转自:http://oracle.chinaitlab.com/backup/823430.html参考:http://1327236.blog.51cto.com/1317236/515191http://steve-111.iteye.com/blog/750326 前几天在工作中不小心truncate了一个表, 而该表中的数据又是很重要的数据。并且该表数据又没有备份的,有备份的也不是最新的,一时之间不知如何是好。在网上找了很多资料,但没有一个很适合的,有适合的但又没详细说明,很无奈。经过多方面的查找,以下是我综合网上的资料,成功恢复表数据的详细步骤,供大家参考。以便遇到同样的问题,可以很好的恢复。[@more@]1、首先下载odu数据
ORA-00031:session marked for kill处理oracle中杀不掉锁的进程
转自:http://www.cnblogs.com/ReadCafe/archive/2013/06/06/3120742.html一般Oracle 中的进程会通过PL/SQL 执行以下语句select c.owner, c.object_name, c.object_type, b.sid, b.serial#, b.status, b.osuser, b.machine fromv$locked_object a, v$session b, dba_objects cwhere b.sid = a.session_idand a.object_id = c.object_id;上面的语句得出 SID 和 SERIAL#alter system kill session '137,1681' immediate;其中 "137" 为 SID"1681" 为SERIAL#来进行"Killed" ,执行完之后,状态为"Killed&qu
dataguard系列之六------备用数据库的维护
由于逻辑备用模式模式到9i还不太稳定,所以这里只讨论物理备用模式的维护1、启动1、1 启动到恢复模式 SQL>shutdown immediateSQL>startup nomount pfile=?/dbs/inittbdbsdby.oraSQL>alter database mount standby databaseSQL>alter database recover managed standby database disconnect from session;1、2 启动到只读模式 SQL>shutdown immediateSQL>startup nomount pfile=?/dbs/inittbdbsdby.oraSQL>alter database mount standby databaseSQL>alter database open read only1、3两个模式之间的切换 在管理
转:Oracle删除数据文件
在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。一、使用offline数据文件的方法非归档模式使用:alter database datafile '...' offline drop;归档模式使用: alter database datafile '...' offline;说明:1) 以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。该数据文件的信息在控制文件种仍存在。查询v$datafile,仍显示该文件; 2) 归档模式下offline和offline drop效果是一样的;3) offline后,存在此datafile
Oracle 数据库整理表碎片
表碎片的来源当针对一个表的删除操作很多时,表会产生大量碎片。删除操作释放的空间不会被插入操作立即重用,甚至永远也不会被重用。怎样确定是否有表碎片-- 收集表统计信息SQL> exec dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME',tabname=> 'TABLE_NAME');[@more@]-- 确定碎片程度SQL> 或者使用如下gist中的脚本找出某个 Schema 中表碎片超过25%的表。使用此脚本前,先确定 Schema 中表统计信息收集完整。SELECT table_name, ROUND((blocks * 8), 2) "高水位空间 k", ROUND((num_rows * avg
转载:使用SQL_TRACE进行数据库诊断
SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。本文就SQL_TRACE的使用作简单探讨,并通过具体案例对sql_trace的使用进行说明。[@more@]一、 基础介绍(a) SQL_TRACE说明SQL_TRACE可以作为初始化参数在全局启用,也可以通过命令行方式在具体session启用。1. 在全局启用在参数文件(pfile/spfile)中指定:sql_trace =true 在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境
转载:Oracle审计功能(Oracle10g)
1、什么是审计审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/).。默认情况下审计是没有开启的。当数据库的审计是使能的,在语句执行阶段产生审计记录。审计记录包含:(1)有审计的操作、(2)用户执行的操作、(3)操作的日期和时间等信息。不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭
转:ORA-08177: 无法连续访问此事务处理
转自:http://blog.csdn.net/wyzxg/article/details/4842769 最近我们的一套总是报 ORA-08177: 无法连续访问此事务处理,刚开始以为是系统压力大,并发一起的,但最近发现,及时系统压力小时,也会报这个错误,于是上网仔细查找,发现下面的文章,让我收益非浅 今天在消息的接受日志中,发现一个错误.ORA-08177: 无法连续访问此事务处理.觉得有点束手无策,于是停下许多工作,开始解决此错误.首先怀疑,错误就是并发造成.根据日志显示,同一秒内,处理了7,8笔数据.所以就先从这里下手.后根据ORA-08177在网上查处错误解释
Oracle 数据库隔离级别,特性,问题和解决方法
引自:http://www.cnblogs.com/1-2-3/archive/2012/04/05/oracle-isolation-level-ora-08177.html“……老手根本就不会照着指示去做,他边做边取舍,因此必须全神贯注于手上的工作,即使他没有刻意这样做,他的动作和机器之间也自然有一种和谐的感觉。他不需要遵照任何书面的指示,因为手中的机器给他的感觉决定他的思路和动作,同时也影响他手中的工作。所以机器和他的思想同时不断地改变,一直到把事情做好了,他的内心才真正地安宁下来。” “听起来好像艺术一样。” ——罗伯特·M.波西格 《禅
重建OCR与Voting Disk
转自:http://www.dbaroad.me/archives/2012/05/ocr_votingdisk_recreate.html 环境:AIX 5.3 RAC 10.2.0.4问题描述:由于存储故障,OCR及Voting Disk都需要重建,而且重新划出来的OCR及Voting Disk名称与原来不同。以下是重建步骤,除DD外操作在两个节点上都要执行:1、修改/etc/oracle/ocr.loc#cat /etc/oracle/ocr.loc ocrconfig_loc=/dev/rvg_ua01_ocr_1 ocrmirrorconfig_loc=/dev/rvg_ua02_ocr2_2 local_only=FALSE2、修改$CRS_HOME/install/paramfile.crsCRS_OCR_LOCATIONS=/dev/rvg_ua01_ocr_1,/dev/rvg_ua02_ocr2_2 CRS_VOTIN
10G下从ASM复制文件到文件系统
转自:http://www.dbaroad.me/archives/2012/03/10g_copy_asm_to_fs.html 版本10.2.0.51、使用RMAN:$ sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.5.0 - Production on Fri Mar 16 10:02:41 2012 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 2147483648 bytes Fixed Size 2097696 bytes Variable Size 503320032 bytes Database Buffers
RAC 环境Library Cache Lock的处理方法
我要监控某个Job,该session 处于 Library cache lock 等待中数据库有2个节点SQL> select inst_id from gv$instance; INST_ID---------- 2 1SQL> select inst_id,sid,serial#,event ,p1raw,machine,status from gv$session where username='BX5685'; INST_ID SID SERIAL# EVENT P1RAW MACHINE STATUS---------- ---------- ---------- ------------------------------ ---------------- -------------------- --------------- 1 453
MySQL Master/Slave Master/Master
文章转自:http://liuping0906.blog.51cto.com/2516248/879877MySQL Master/Slave原理分析: 单向同步是基于MySQL的二进制日志的(binlog),所以要开启二进制日志功能(默认开启)。MySQL将所有更新的内容记录到二进制日志中,Master/Slave通过三个线程来完成同步。在Master上有一个线程,用来发送二进制日志,在Master上show processlistG可以查看线程的名字(Binlog Dump)。在Slave上有两个线程,I/O线程用来连接Master,接受来自Master的更新二进制日志,并把它保存到中继日志(relay log)中,SQL线程用来读取中继日志中SQL语句并执行更新操
RAC环境中的SERVICE_NAMES参数
文章引自:http://blog.sina.com.cn/s/blog_465a4a1e0100qt32.htmlRAC环境中的各个节点的SERVICE_NAMES参数的设置可以不同。由于SERVICE_NAMES是动态参数,修改这个参数可以不关闭实例随时进行,使得这个参数的设置可以在各个实例上个性化的设置。SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, HOST_NAME2 FROM V$INSTANCE;INSTANCE_NUMBER INSTANCE_NAME HOST_NAME--------------- ---------------- -----------------------------------------1 testrac1 racnode1SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, HOST_NAME2 FROM GV
经历Oracle patch 5496862补丁
转载:http://www.aixchina.net/home/space.php?uid=9154&do=blog&id=241621. 环境数据库平台硬件架构如下:生产机:IBMp6 570安装AIX5L ML 5308 。数据库平台:Oracle Server - Enterprise Edition - Version: 9.2.0.8生产机:两台IBMp6 570 OS均为 5300-08-01-0189 应用系统:OA2、故障现象: 系统管理员发现应用系统后台总是报错,错误如下:ORA-01115:IO error reading block from file 6 (block #2707)ORA-01110: data file 6 : ‘/oradata/smis1.dbf’ORA-27091: skgfqio :unable to quere I/OORA-27072: skgfdisp : I/O er
How to resolve ORA-19706 error when select from dblink
由于通过database link进行远程数据库的数据读取时,会自动同步当前库和远程库的SCN,老杨在文章中做过描述,并且提到: 而对于实际环境中,SCN的增加可能是几倍、几十倍甚至是上百倍,从而引发一些其他的bug。[@more@] 下面就来看一个问题。该错误会在应用了2012年1月份CPU的Oracle数据库中出现,而在原始版本中,比如10.2.0.5.0之中不会出现此错误。--通过dblink进行简单的查询报ORA-19706错误 SQL> SELECT sysdate FROM dual@AIX12; SELECT sysdate FROM dual@AIX12 ORA-19706: invalid SCN --登录远程库,检
SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别
SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:IN:确定给定的值是否与子查询或列表中的值相匹配。IN 关键字使您得以选择与列表中的任意一个值匹配的行。当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5然而,如果使用 IN,少键入一些字符也可以得到同样的结果:SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)IN 关键