关于数据字典的查询效率优化
最近因为测试需要对一些数据文件做压缩,腾出更多的空间来为其他环境做准备,压缩数据文件,最开始采用了如下的sqlcol name for a40col resizecmd for a80select a.file#,a.name,a.bytes/1024/1024 CurrentMB, ceil(HWM * a.block_size)/1024/1024 ResizeTo, ...
一条sql语句“导致”的数据库宕机问题及分析
最近测试环境需要做一些变更,把测试环境切分成两套环境,存储空间也需要压缩压缩和整理。unix组的人已经开始做空间划分了,然后我们需要在此基础上重建一套环境。有些数据文件使用空间不大,所以准备压缩一下。用了下面的sql语句,结果跑了十几秒中就抛了下面的错误。SQL> set linesize 200SQL> col name for a40SQ...
服务器增加内存后无法重启数据库的问题及解决
前几天生产环境需要做服务器的扩容,把原本64G的内存扩到了128G.然后调整了一些其他的kernel参数,在此基础上需要调整sga的大小,以便分配更多的缓存。环境是11gR2的RAC环境,这时候rac有一个明显的优点就显现出来了,就是没有downtime。一个实例一个实例的改动,调整kernel,db参数都很方便管理。所在的每个服务器只有一个...
jdk版本导致tomcat,eclipse无法启动的问题
这几天从官网 下载了swingweb的demo,是一个打包好的tomcat,里面的jar包和脚本都是完整的,直接启动tomcat就可以,通过命令行java -version可以看到jdk也是安装好的。但是启动tomcat的时候就是报错。提示jdk,jre的配置不对,我检查了几遍,环境变黄没有问题啊。重新设置了JAVA_HOME然后再path,classpath里面重新引...
分区表放入keep pool,recycle pool的问题及解析
因为生产环境的性能瓶颈,经过诊断,给出的结论是需要把几个表和索引放入keep pool,几个索引放入recycle pool.其实放入keep pool 确实对于频繁访问的数据,而且数据量不大的情况下,性能有一定的改善。避免了大量的物理读。大家的大体感觉都是把表放入keep pool,其实在一定的情况下,把索引放入keep pool也有一定的道理,...
临时表空间损坏的修复
最近测试环境需要把一些现有的存储空间匀出一部分来给新增的环境使用。unix组的人很快就空间按照指定的比例重新切分好了。环境交给我的时候,我先把数据库起来,没有任何问题,因为需要到处一个创建用户的语句,就简单执行了一个查询。select dbms_metadata.get_ddl('USER',u.username) from dba_users u WHERE USERNAME ...
sqlplus无法启动的问题及解决
今天性能测试部门的同事问我一个问题,说他跑一个shell脚本调用sqlplus结果报错Error 6 initializing SQL*PlusSP2-0667: Message file sp1<lang>.msb not foundSP2-0750: You may need to set ORACLE_HOME to your Oracle software directory我记得自己之前碰到过类似的问题,也是sqlplus启动不了。参见日志http:/...
redo日志文件学习笔记(一)
关于redo日志文件,今天因为要做redo日志的在线迁移,所以特意做了个简单的总结。1. 如果要把redo的切换信息显示到alert日志中,需要设置个参数。Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> s...
数据库文件的迁移
关于数据库中的文件迁移,需要考虑普通数据文件,redo日志文件(还需要考虑是否为current状态),undo表空间,临时表空间,system,sysaux表空间。文件迁移可以参考下面的伪代码:move_non_system_tablespace ,需要在open状态 {&nb...
excel文件内容导入数据库的问题及解决
今天需要导一些数据,从excel导入到数据库中。没有装现成的plsqldev,只能用sql*loader来弄了。首先我把excel文件的内容转换成csv文件,以逗号分隔,在另存外excel文件的时候有那个选项。然后我在目标库中创建了如下的表。create table sql_summary(sql_time varchar2(100),sql_id varchar2(100),cpu_time varchar2(1...
ORACLE 11g导入9i dump的问题及解决
因为系统迁移,需要将一部分的9i的数据导入11g的库里,目标库是11.2.0.3.0 64位的环境。导入dump的时候,有一个比较大的分区表,需要用导入分区的方式,就写了如下的命令。但是奇怪的是过了一会,抛出来一个imp的错误就完事了。-bash-4.1$ imp n1/n1@testdb tables=TEST_DB:TEST_DB_PAR_P1  ...
alert日志中出现ash size的警告
今天查看数据库的alert日志总出现了如下的警告。Archived Log entry 202 added for thread 1 sequence 202 ID 0x1ed7a02c dest 1:Sat Mar 15 01:37:30 2014Completed checkpoint up to RBA [0xca.2.10], SCN: 267711453Sat Mar 15 01:44:58 2014Active Session History (ASH) performed an emergency flush. This may ...
数据库突然宕机的问题及分析
昨天晚上,某个环境的数据库在做一个压力测试的时候突然宕机了。这个问题比较急。马上查看日志文件。看到了如下的一段,报了os级的linux错误。提示没有空间了。Fri Mar 14 19:16:47 2014Archived Log entry 192 added for thread 1 sequence 192 ID 0x1ed7a02c dest 1:Fri Mar 14 19:39:24 2014Incremental checkpoin...
探索ASH
老是在用ASH,昨天心血来潮,想看看ash视图里面是怎么样的,过程也算曲折,不过也算抛砖引玉。先看看v$active_session_history的情况。-->是个同义词SQL> select owner,object_name,object_type from dba_objects where object_name='V$ACTIVE_SESSION_HISTORY';OWNER &nb...
手工创建/删除数据库的步骤
今天和大家分享下数据库的创建和删除的步骤,里面有很多细节需要大家考虑。创建数据库不只是一个create database语句。删除数据库 drop database也不是随时都能执行的。--创建数据库的步骤。1.用户,文件系统,挂载点和网络的配置,内核参数配置这个需要提前准备好。2.ORACLE_HOME的安装和PSUoracle_home的安装,这个...
DBMS_STATS收集统计信息的问题及解决
收集数据库的统计信息是dba工作的一部分,如果在数据快速增长的库上,统计信息如果收集的频率太慢,会对执行计划有一定的影响。而对于逐渐客户饱和的系统来说,统计信息就可以很长时间收集或者尽量不收集。对于统计信息的收集,如果是很大的表,收集100%也是不现实的,如果收集的百分比太小,统计信息又失真,对系统系统...
数据库突然宕机无法open的问题及解决
测试的数据库有一天突然宕机,然后无法正常open了,这个问题虽然过去了一段时间,也在这儿总结一把。从alert日志中的信息如下。Fri Jan 10 16:09:42 2014Archived Log entry 6837 added for thread 1 sequence 6863 ID 0x19db56aa dest 1:Fri Jan 10 16:12:59 2014Errors in file /oravl01/oracle/adm/FETABP2/diag/rd...
ORA-01461问题的对比测试
昨天生产环境有个严重问题,报了ora-01461的错误,这个问题看似应该是开发那边的问题,但dba这边也得提供一些信息,自己模拟测试了一把。为问题的排查也提供了一些帮助。这个问题可以使用一下场景来对比测试。--》场景 #1使用关键字values来插入。using key word “values” toinsert.SQL> Declare...
关于segment的一个小问题
今天统计数据的时候,发现一个奇怪的小问题,通过segment去判断一个表的大小,然后查表的count,有一个表明明在,但是从segment里面去查的时候查不出来。SQL> select distinct segment_name,to_number(to_char(sum(bytes/1024/1024/1024))) from user_segmentswhere segment_name in (select table_name...
shell动态脚本和pl/sql动态脚本的比较
实现的目标如下,对于同时含有table1--5的db schema才需要执行指定的脚本,脚本内容都是些dml操作。目前的情况只能够得到db schema的列表,对于里面是否还有5个表,还没有细粒度的管理。脚本需要从db schema的列表中筛选出符合的 db schema,然后执行脚本内容。