Oracle 单用户模式
Oracle 单用户模式[@more@]一般来说,Unix-like的系统都有单用户模式,那么Oracle有单用户模式吗?好像是没有的,但可以模拟。在有些情况下还是很有用的,特别是某些急需的资源经常被lock的情况下。SQLPLUS> CONNECT SYS AS sysdba;SQLPLUS> SHUTDOWN IMMEDIATE;SQLPLUS> STARTUP;SQLPLUS> SPOOL revoke_restricted_session;SQLPLUS> SELECT 'REVOKE restricted session FROM 'username ';' FROM dba_usersWHERE username NOT IN ('SYS','SYSTEM');SQLPLUS> SPOOL OFF;SQLPLUS> @revoke_restricted_session.log;SQLP
以半个小时为单位,滚动增加和删除表分区 二
以半个小时为单位,滚动增加和删除表分区[@more@]对于分区的表,如果在表上创建了global index,一段时间之后drop了一个partition,便会遇到如下错误:ORA-01502创建global index:create index TEST_MDATE_IDX on test (mdate);测试:脚本如下:#!/bin/basha=2;while (true)dolog=`sqlplus -s it01271350/it01271350 << EOFinsert into test(agent) select object_name from dba_objects where rownum <$a;commit;EOF`;echo $log;let a=${a}+1;sleep 1;echo "$a is $a";done;一个半小时后会报出如下错误:ORA-01502
ITpub 的mysql 报错
ITpub 的mysql 报错,[@more@]通过google搜索发现的:Discuz! info: MySQL Query ErrorTime: 2009-4-24 11:56amScript: /viewthread.phpSQL: insert into [Table]logreferer(datetime,keywords,ipaddress,userid,url,referer,new) values('1240545370','select+object_name+from+dba_objects+where+object_name+like+'DBMS_AQ%'+and+status++=+'INVALID';','202.42.147.164','0','/viewthread.php?tid=1019858','http://www.google.com.sg/search?q=select+object_name+from+dba_objects+where+object_name+like+%27DBMS_AQ%25%27+and+sta
找出IO最高的SQL语句和process
找出IO最高的SQL语句和process[@more@]本来写好的文章,结果session过期了。郁闷。-------------------------------------------------------------------1. 前几天在itpub上看到一个通过热块找出相关语句的sqlSELECT /*+rule*/hash_value,sql_text FROM v$sqltext WHERE (hash_value,address)IN( SELECT a.hash_value,a.address from v$sqltext a, (SELECT DISTINCT a.owner,a.segment_name,a.segment_type FROM dba_extents a
以半个小时为单位,滚动增加和删除表分区 一
以半个小时为单位,滚动增加和删除表分区[@more@]为了试验以周为单位滚动增加和删除表分区,特地做了一个以半个小时为单位滚动前进的实验。要点:1. 一天24个小时恰好可以分成48个半个小时。故不需要一个特定的时间起点。2。 注意round 和floor的区别。1. 创建配置表:drop table part_retention_t cascade constraints;--delete part_retention;create table part_retention_t (table_name varchar2(100), tablespace_name varchar(50), retention number);Insert into part_RETENTION (TABLE_NAME, TABLESPACE_NAME, RETENTION) Value
以周为单位,滚动增加和删除表分区
以周为单位,滚动增加和删除表分区[@more@]以周为单位,滚动增加和删除表分区, 保持一个13个周的时间窗。要求: 数据保留3个月,大概就是13个周。过期的数据备份后删除。这是对 快速删除大量数据 的继续。要点:1. 以'2000-01-02 00:00:00'为时间的起点,因为'2000-01-02 00:00:00'正好是周日。2. 根据当前的sysdate,找出下一个周日的时间。3. 从'2000-01-02 00:00:00'起到下一个周日,假设是n个周,n mod 13, 这样时间窗便可以滚动前进了。4. 也不用为删数据发愁了。5. 用脚本控制job正好在周日跑,傻瓜式的,不懂Oracle的人也能用。
statspack 自动规划任务失败 及对job的探讨
跑statspack的job报这个错误:*** SESSION ID:(150.26013) 2009-04-21 03:02:07.419*** 2009-04-21 03:02:07.419ORA-12012: error on auto execute of job 39380ORA-12005: may not schedule automatic refresh for times in the past[@more@]跑statspack的job报这个错误:*** SESSION ID:(150.26013) 2009-04-21 03:02:07.419 *** 2009-04-21 03:02:07.419 ORA-12012: error on auto execute of job 39380 ORA-12005: may not schedule automatic refresh for times in the past 发现了这个网页的说明:http://blog.163.com/ansel_
快速删除大量数据 续一
快速删除大量历史数据是为了提高插入的性能,最终是为了提高AQ的性能。那么在插入的过程中能不能提高一下性能呢?想法:table 的nologging 选项会对插入有什么影响呢?结果:1. 在归档模式下,只用nologging + /*+ append */配合才会产生少量的log,提高插入性能。2. 在非归档模式下,/*+ append */ 会产生较少的log,提高插入性能。3. /*+ append */ 只有在 insert into ... select 的情况下有用。4. /*+ append */ 不可用在update 语句。结论:想法失败,在想其他的吧。[@more@]快速删除大量历史数据是为了提高插入的性能,最终是为了提
快速删除大量数据
架构: 分布式系统,用AQ同步DML是实现动态数控的同步。症状:中心数据库的queue里堆积大量的数据发布出去,知道撑爆tablespace。观察: AQ job 在花大量的时间等待一个“wait for unread message on broadcast channel”事件。这是一个被定义为空闲的事件。[@more@]架构: 分布式系统,用AQ同步DML是实现动态数控的同步。症状:中心数据库的queue里堆积大量的数据发布出去,知道撑爆tablespace。观察: AQ job 在花大量的时间等待一个“wait for unread message on broadcast channel”事件。这是一个被定义为空闲的事件。找遍了google,
搬家咯
把以前零散的在其他一些地方写得东东都搬到这里咯。[@more@]把以前零散的在其他一些地方写得东东都搬到这里咯。