reverse index的like测试和dbms_stats具体参数意义
由于主键产生的默认索引会增大索引的竞争,此前系统也出现了大量的db file sequential read等待事件,不过此事件大量出现并不能说明系统存在性能瓶颈,很有可能是高效利用索引的情况,而是否应该在创建主键索引时利用反转索引来平衡索引的IO竞争了,这不是能很简单的说明的,利用反转索引虽然能打散数据分布不过无疑增加了IO消耗,不过下面测试的是关于反转索引是否能利用like ‘TEST002%’这种谓词查询的。SQL> create table test002 as select distinct object_name,object_id,object_type,created,status from dba_objects; Table c
_sort_elimination_cost_radit和sort排序
摘自ITPUB的一篇帖子http://www.itpub.net/thread-1605027-1-1.htmlOracle 9I下optimizer_mode为first_rows,而此时的一个隐含参数_sort_elimination_cost_radit为0,也就是cbo会尽量避免sort,认为sort消耗巨大,此参数可能会引起执行计划的不合理,而在10g中该参数已经修改为1,也就是排序与不排序的成本是一样的。SQL> alter session set optimizer_mode=first_rows; Session altered SQL> create table test01 as select * from dba_objects; Table created SQL> insert into test01 select * from dba_objects; 49745 rows
用户被锁-中间件配置引起的
虽然不是很深刻的错误,但是还是需要我们去注意的,一个是用户登录不停的被锁住,刚开始用alter user username account unlock,然后解锁后用户登录又被锁住了,由于是oracle10g下,缺省的profile的failed_login_attempts为10,怀疑是中间件连接导致SQL> select profile,resource_name,limit from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS'; PROFILE RESOURCE_NAME LIMIT------------------------------ -------------------------------- --------
主机名导致的ora-00600[keltnfy-1dmInit] [46] [1]
[oracle@wj_gaj_database,localhost admin]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 23 21:14:54 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.SQL> startup nomount;ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []警告日志Mon Apr 23 20:57:30 2012Starting ORACLE instance (normal)LICENSE_MAX_SESSION = 0LICENSE_SESSIONS_WARNING = 0Picked latch-free SCN scheme 1Using LOG_ARCHIVE_DEST_10
跟锁相关的几个视图
转载以下三思的blog http://junsansi.itpub.net/post/29894/477753v$lock视图的各个列及其说明:ADDR RAW(4) 在内存中锁定的对象的地址KADDR RAW(4) 在内存中锁的地址SID NUMBER 保持或申请锁的会话的标识号TYPE VARCHAR2(2) 锁的类型。TX=行锁或事务锁;TM=表锁或DML锁;UL=PL/SQL用户锁ID1 NUMBER 锁的第1标识号。如果锁的类型是TM,该值表示将要被锁定的对象的标识号;如果锁的类型是TX,该值表示撤销段号码的十进制值ID2 NUMBER 锁的第2标识号。如果锁的类型是TM,该值为0;如果锁的类型是TX,该值表示交换次数LMODE NUMBER 会话保持
又是信号量和共享内存没有释放的db待机
连接以前公司工作的一个生产库,出现了下列错误。SQL> conn / as sysdbaConnected to an idle instance.SQL> select * from dual;select * from dual*ERROR at line 1:ORA-01012: not logged onSQL> conn / as sysdbaConnected to an idle instance.以为是数据库内部hang住了,用hanganalyze工具查看下是否有直接在os可以kill的进程SQL> oradebug setmypidStatement processed.SQL> oradebug hanganalyze 3Hang Analysis in /usr/oracle/admin/jhql/udump/jhql_ora_24770.trcSQL>SQL> quitDisconnected警告日志并没有
自身想法-突破
理解db这行-突破不知不觉来北京已经一个半月了,在新公司工作都快一个月了,其实一切都还算顺利,从一个地点到了另一个起点,从一个城市到了另一个城市,不变的是依然从事自己喜欢的行业。其实每天都还算充实,自己这段时间对于自己技术水平的定位也有了新的了解,其实每隔断时间自己都在整理自己的位置,既然做技术的,也就没有太多的装饰的,内心的自信和自身技能是自己最大的资本,也是赢得周围人肯定的资本。想想前一个月时,自身把自己对于oracle理解定位上很高,但是随着新的环境,新的接触的人(当然更
无备份归档的db意外断电处理-2662和4193
公司生产库崩溃,没有备份和归档,想碰碰运气在mount下利用没有覆盖的redo来recover database,其实还算运气好刚好可以recover然后顺利open db,下面的警告日志中提到了我们经常说的db如何会恢复,db找到corrupted block然后不停的利用redo来恢复,从下面的recover记录中可以看出来Media Recovery Start parallel recovery started with 7 processes并行recovery以及利用redo和archivelog具体恢复信息。SQL> recover database;Media recovery complete.SQL> alter database open;Database altered.警告日志记录:Thu Apr 12 08:54:
control file parallel write等待事件
Control file parallel write事件,控制文件的写入等待,控制文件中记录了db的scn,数据文件的scn,当前redo log号,归档日志信息,备份集信息等等,很多信息都需要定期更新,很有可能会引起control file parallel write事件。1) 日志文件过小,或者dml操作过多,导致日志切换太快,每次日志切换都需要进行检查点,记录相应的日志切换的信息。2) 增量检查点发生,也会记录scn信息和检查点到控制文件中,10g的自动增量检查点会记录也会更新一次控制文件中记录的RBA信息。3) nologging下频繁更新数据文件,对数据文件在nologging选项下
关于循环嵌套nested loops的一点分析
nested loops连接 /*+use_nl(tab01 tab02)*/ 循环嵌套连接:oracle优化器根据基于rbo和cbo原则,选择两个表中一个为驱动表,也就是外部表,另一个作为内部表。注意hint写法中表如果用的别名,hint中必须写相应的别名,不然相应的hint不能生效。 在oracle9I后优化器推出两种执行方式,方式1先从外部表取第一行然后和内部表数据进行比较,此时会逐行取出数据,重复上述步骤直到外部表中所有记录全部处理完毕。 SQL> desc tab01;Name Type Nullable Default Comments ---- ------------ -------- ------- -------- ID NUMBER
oracle 10g的db_file_multiblock_read_count参数
Oracle 10G下的参数db_file_multiblock_read_count参数,是代表oracle的多块读取一次的IO的block数量,数据库创建初期oracle会默认设置相应额db_file_multiblock_read_count参数。SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64biPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for Linux: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - ProductionSQL> sho
awr的top sql分析
连续看了两天的awr报表,发现此db中存在大量的等待事件。Log file sync、全表扫描,全索引扫描、latch等待,热点块(很可能是由于全表全索引扫描导致的热点快竞争)、检查点未完成,队列锁的竞争等的。 这个db的awr报表出现了很大的问题,其实在生产库中也没有几次看awr报表的经验,虽然对buffer hit、buffer nowait等系统评估有一定了解,但是要说去具体如何查处性能瓶颈乃至解决性能瓶颈自身还存在很多不足。 公司内网服务器192.168.0.119有32g的内存和16个cpu,硬件性能上面应该不存在太多问题,要说问题就是做的rai
mysql下创建索引让其index全扫描
第一次用mysql数据库,优化sql语句: SELECT COUNT(id) AS id FROM robots_article WHERE DATE_FORMAT(lastupdated,'%Y-%m-%d') = '2012-03-26'查看执行计划发觉:该表的执行计划是all也就是全表扫描,由于robots_article是个大表,怀疑是索引关键字转换导致的。mysql> explain SELECT COUNT(id) AS id FROM robots_article WHERE DATE_FORMAT(lastupdated,'%Y-%m-%d') = '2012-03-26';+----+-------------+----------------+------+---------------+------+---------+------+---------+-------------+| id | select_type | table
vnc图形界面登陆和信号无法分配而db无法nomount
工作第一天,更多的是熟悉环境,一直以为远程控制linux服务器图形化界面多么不可触摸,其实用个远程连接软件就可以达到,realvnc客户端的图形客户端就可以实现了!不过配置上面需要我们设置下。Linux下开启nvcserver服务,切换到root用户执行[root@linux ~]# nvcserverNew 'linux.xiaoyu:2 (root)' desktop is linux.xiaoyu:1Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/linux.xiaoyu:1.log这里开启一个vncserver连接的服务是linux.xiaoyu:1,如果再次打开nvcserver就会依次增长为linux.xiaoyu:2,
随想
随想 来北京已经一个多星期了,这些天住了一个多星期的宾馆,慢慢找到了现在的租房,也算安定了一半吧,要说不完美的就是工作还在等通知,十多天没有工作,真的是浑身不舒服,看着别人在为未来打拼,此时的自己闲得让自己都受不了,莫名的郁闷,真的!好些天没有上ITPUB交流了,好些天没有写有关于oracle技术的blog了,好些天没有和群的网友聊关于技术的话题了等。刚开始说服自己:是工作一年半来的休息,其实真不是,正是因为参加工作前自己休息的太过了,现在真的不喜欢休息。回想一年前自己就慢慢打算来北
北漂求职第一记
北漂求职记载01网上投简历的一天:一天又过去了!明后两天可能是真正把自己的工作定性的时间了,今天在网上投了n多的简历,眼睛真的很涩,依然清晰上次和朋友第一次求职的时候,可能真是选择太多,怕压低了自己的待遇和成长,好的工作远远自己真的还远远不够,其实好的与不好的最终判断是看能最大的冲击自己的潜能,而如何快速成长了,而对于自己有一个很不厚道的想法:”进入一个新的团队,你的技术等方面里面比较靠后的位置,而通过一段时间工作,你能快速的赶上甚至超过他们,将他们远远甩在后面。“ 其实这
nocatalog模式下rman备份下controlfile记录备份信息的一点探究
源于pub中的一篇帖子http://www.itpub.net/thread-1584375-1-1.htmldelete obsolete; --能删除7天前的备份delete expired backup; --不能删除7天前的备份, 为什么?Rman有两种备份策略,一种是基于时间的,默认的是认为7天的备份有效,还有一种是基于冗余的,会认为最后一次的备份有效。Delete obsolete会删除过期的备份,而如果在物理上删除的备份,还是会存储在rman备份信息中并置为有效,nocatalog下controlfile保留备份集信息,删除的备份集信息依然记载在controlfile中,只是用flag来标记状态,这
sysauth$基表的用户权限的一点分析
源于itpub的一篇帖子http://www.itpub.net/thread-1581904-1-1.html说到sysauth$表被频繁访问。select privilege#,level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0如上的sql语句频繁执行,其实对于递归sql对于自己初始oracle才一年的菜鸟一般是略去不看的,eygle前辈们有时别太相信oracle内部的sql,他们很可能会成为系统性能的瓶颈,记得eygle的一个案例说到某个版本的oracle上开启oem很可能导致后台一个递归sql反复执行而影响系统运行,也建议自己和大家多去
9I下的db和client版本问题DBMS_EXPORT_EXTENSION"."FUNC_INDEX_DEFAULT无法exp-升级db
记载一次数据库版本低于软件版本导致无法exp。最近安装数据库和weblogic应用后,软件中嵌套的导出功能报错,查看如下的报错信息。Weblogic报错信息:java.lang.Exception: EXP/ORACLE命令在本地系统中执行失败:Export: Release 9.2.0.8.0 - Production on 星期四 2月 23 14:19:42 2012Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.连接到: Oracle9i Enterprise Edition Release 9.2.0.8.0 - ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.8.0 - Production已导出
windows上的又一次ora-07445
又遇到了windows 32位sys用户长时间不响应。发现数据库可能又Cmd>sqlplus /nologAlert_xiaoyu.log警告日志的部分内容Errors in file d:oracleproduct10.2.0db_1rdbmstracexiaoyu_ora_1992.trc:ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x7C931669] [ADDR:0x0] [UNABLE_TO_READ] []Errors in file d:oracleproduct10.2.0adminxiaoyuudumpxiaoyu_ora_1916.trc:………………又是ora-07445是因为核心转储失败导致,也是bug引起,sga和windows服务器上的病毒等因素导致,由于之前没有调整