- 博客(14)
- 收藏
- 关注
原创 如何 找出未收集统计信息,以及统计信息过期的表
下面这个查询可以找到从未收集过统计信息或者统计信息过期的表。EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;SELECT OWNER,TABLE_NAME,OBJECT_TYPE,STALE_STATS,LAST_ANALYZED FROMDBA_TAB_STATISTICS WHERE (STALE_STATS=YES OR
2010-03-29 15:28:00 6307 1
原创 exp,imp问题
今天接了封邮件,项目经理要俺做个数据迁移,将开发环境中的某个表迁移到测试环境。很简单的需求。常用的迁移有 EXP,IMP,DATAPUMP,DBLINK等等。由于无法登陆数据库主机操作系统,所以无法用DATAPUMP。另外也没有创建DBLINK权限,而且数据库中也没有创建好了的DBLINK,这也否定了,我只能用EXP,IMP这种最原始的方法。下面说说导入导出应该注意的事项 一:
2010-03-24 22:30:00 5166 3
原创 Oracle对字符转义的处理
以前总是忘记单引号转义,为了以后工作方便,现在记录下来SQL> select ||nvl(sql_id,prev_sql_id)|| sql_id , , ||nvl(sql_child_number,prev_child_number) sql_child_number from v$session where sid=159;SQL_ID SQL
2010-03-24 14:24:00 2745
原创 SQL 语句中对于like 的调优
SQL> create table test as select * from dba_objects;表已创建。SQL> select owner,object_name from test where owner like ROBINSON%;OWNER OBJECT_
2010-03-23 14:45:00 9857 4
原创 bitmap index 的研究
前一篇blog探讨了 bitmap index 的 start rowid,end rowid 是怎么存储的,现在 继续研究 bitmap index SQL> create table test as select * from dba_objects where 1=2;Table createdSQL> insert into test select * f
2010-03-21 23:33:00 3550
原创 ORACLE进制转换函数
oracle中没有16进制转2进制的函数,为了工作方便,自己写了一个create or replace function hex_to_bin(hex varchar2) return varchar2 is v_hex varchar2(10000); v_len number; v_var varchar2(10000); v_result varchar2(10
2010-03-21 01:28:00 7401
原创 怎么将dump 出来的 bitmap index 中的rowid 还原回 file_id,block_id
今天在研究Bitmap Index internal的东东,不过刚开始就被卡住了,dump出来了bitmap index 根据DSI知道有个叫start rowid,end rowid的东东,却不能将rowid还原回file_id,block_id。现在终于搞懂了呵呵,写出来分享下。哎,前面的路还很长,很长..................SQL> create table test(n
2010-03-19 15:22:00 2772
原创 Hash Join 一定是选择小表作为驱动表吗
今天下午,群里面有人讨论HASH JOIN,选择驱动表的问题,我回答是 选择返回结果集小的表作为驱动表,而有些同志不同意,他们认为Oracle一定会选择小表作为驱动表,为了弄明白我以前是否理解错误,现在实验一把:SQL> create table t1(id number,name varchar2(100));表已创建。SQL> create table t2(id number,job v
2010-03-18 21:54:00 6844 3
原创 创建bitmap index 时对表的加锁方式
前一篇博客研究了 创建B*tree索引时 对表的加锁方式,现在来研究一下创建bitmap时对表的加锁方式。本文基于10gR2测试表基于上一篇博客的test表。文档上面说9i不能以online方式创建bitmap index.SQL> create table lock_obj (username varchar2(100),sid number,lock_type varchar2(100
2010-03-17 16:02:00 2350 1
原创 创建索引(B*tree)时对表的加锁方式
创建一个测试表SQL> create table test as select * from dba_objects;Table created由于test表很小,创建索引时间很短暂,所以我创建一个系统触发器来记录创建索引时在基表上的LOCK,这里我不想对session进行跟踪。创建一个记录表,用来记录创建索引时产生的LOCKSQL> create table lock_obj
2010-03-15 14:40:00 3608
原创 查询某个用户的权限的时候别忘记了PUBLIC权限
昨天收到封邮件,叫我帮他执行两条SQL语句,非常简单的两条insert 语句。其实我已经不是第一次收到这种类似的请求了。之后我通过OC询问他,问他有没有对表进行insert的权限,在他试过之后 他回答 ”有“。当时俺就郁闷了,为什么不自己动手试一试呢,什么我们DBA去做 ,真是 郁闷啊。 为此我专门写了一个 小脚本,检测某个用户对某个表 的 所有权限,包括系统权限,对象权
2010-03-12 13:36:00 3849
原创 number精度问题
SQL> show numwnumwidth 10SQL> select 1/3*3 from dual; 1/3*3---------- 1SQL> select trunc(1/3*3,9) from dual;TRUNC(1/3*3,9)-------------- .999999999SQL> select trunc(1/3*3,10)
2010-03-08 17:30:00 2526 1
原创 DBA记录操作日志也很重要
有时候,客户会发邮件叫DBA帮他们解决一些问题。此时我们要格外小心,我们应该把对数据库的操作记录下来。 记录的方式很多,我们可以用PL/SQL dev的command window 对数据库进行操作,然后copy操作并保存,也可以使用toad 本人更喜欢用sqlplus,当客户提出需求后,利用下面的设置,将我对数据库的操作记录保存下来,这样以后遇到纠纷,就有证据了se
2010-03-08 16:02:00 3013
原创 检测表是否需要shrink,Segment advisor
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO; select a.owner || . || a.table_name "Table",a.num_rows,a.avg_row_len,b.inserts,b.deletes,a.num_rows+nvl(b.inserts,0)-nvl(b.deletes,0) total_row
2010-03-08 11:44:00 4687
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人