Monthly Archives: April 2011

[转]Oracle10g的UNDO_RETENTION自动化管理增强

原文地址:Oracle10g的UNDO_RETENTION自动化管理增强 AUM模式下,我们知道UNDO_RETENTION参数用以控制事务提交以后undo信息保留的时间。该参数以秒为单位,9iR1初始值为900秒,在Oracle9iR2增加为10800秒。但是这是一个NO Guaranteed的限制。 也就是说,如果有其他事务需要回滚空间,而空间出现不足时,这些信息仍然会被覆盖。 很多时候这是不希望看到的。 从Oracle10g开始,如果你设置UNDO_RETENTION为0,那么Oracle启用自动调整以满足最长运行查询的需要。当然如果空间不足,那么Oracle满足最大允许的长时间查询。而不再需要用户手工调整。 同时Oracle增加了Guarantee控制,也就是说,你可以指定UNDO表空间必须满足UNDO_RETENTION的限制。 SQL> alter tablespace undotbs1 retention guarantee; Tablespace altered SQL> alter tablespace undotbs1 retention noguarantee; Tablespace altered 在DBA_TABLESPACES视图中增加了RETENTION字段用以描述该选项: SQL> select tablespace_name,contents,retention from dba_tablespaces; TABLESPACE_NAME CONTENTS RETENTION —————————— ——— ———– SYSTEM PERMANENT NOT APPLY UNDOTBS1 UNDO NOGUARANTEE SYSAUX PERMANENT NOT APPLY TEMP TEMPORARY NOT APPLY USERS PERMANENT NOT APPLY EYGLE [...]

oracle的flashback功能测试

一、flashback query 依赖于对UNDO信息的查询,只有在UNDO信息有效的时候才能查询出结果,否则会出现错误。 SYS@orcl>show parameter undo NAME TYPE VALUE ———————————— ———– —————————— undo_management string AUTO undo_retention integer 1800 undo_tablespace string UNDOTBS1 a. 查询某个时间点的数据 ADAM@orcl>create table t (n number); Table created. ADAM@orcl>insert into t values (10); 1 row created. ADAM@orcl>commit; Commit complete. ADAM@orcl>select to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’) now from dual; NOW ——————- 2011-04-26 21:38:50 ADAM@orcl>delete from t; [...]

oracle lock相关的v$视图

–查询目前被阻塞的session select sid, blocking_session_status, blocking_session, sql_text from v$session inner join v$sql on v$session.sql_id = v$sql.SQL_ID where blocking_session is not null order by blocking_session; –阻塞进程的相关信息 select * from v$session_wait; where wait_class ‘Idle’; –查询lock及对应数据库对象 select * from v$lock; select * from v$locked_object; 当前事务,及关联的session select t1.xidusn, t1.used_urec, t1.used_ublk from v$transaction t1 inner join v$session t2 on t1.SES_ADDR = [...]

About dbms_random.string

dbms_random.string can be used to generate random password, here are some simple examples of using different parameters. SYS@orcl>column random_string format a10 SYS@orcl>select dbms_random.string(‘u’,10) random_string from dual; — Upper char RANDOM_STR ———- LLBVXCXRQM SYS@orcl>select dbms_random.string(‘l’,10) random_string from dual; — Lower char RANDOM_STR ———- zipfrfoiwg SYS@orcl>select dbms_random.string(‘a’,10) random_string from dual; –Mixed char RANDOM_STR ———- ZDFtxrWrQc SYS@orcl>select dbms_random.string(‘x’,10) [...]

如何从oracle的表中随机抽取一些记录

方法一: select * from t sample(10); –return 10% of rows of the table select * frmo t sample(10); –return 10% of all formated blocks of the table 方法二: –Order By dbms_random.value ,为结果集的每一行计算一个随机数,dbms_random.value 是结果集的一个列(虽然这个列并不在select list 中),然后根据该列排序,得到的顺序自然就是随机的啦。 select * from ( select * from t order by dbms_random.value ) where rownum <= 10 参考文章: Order by dbms_random.value [...]

[转]DBMS_STATS.GATHER_TABLE_STATS详解

DBMS_STATS.GATHER_TABLE_STATS的语法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade BOOLEAN, stattab VARCHAR2, statid VARCHAR2, statown VARCHAR2, no_invalidate BOOLEAN, force BOOLEAN ); 参数说明: ownname:要分析表的拥有者 tabname:要分析的表名. partname:分区的名字,只对分区表或分区索引有用. estimate_percent:采样行的百分比,取值范围[0.000001,100],null为全部分析,不采样. 常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值. block_sapmple:是否用块采样代替行采样. method_opt:决定histograms信息是怎样被统计的.method_opt的取值如下: for all columns:统计所有列的histograms. for all indexed columns:统计所有indexed列的histograms. for all hidden columns:统计你看不到列的histograms for columns <list> SIZE [...]