清空*.log的方法
看到很多人在论坛上问如何清空*.log文件.这里总结下个人使用的方法以清空listener.log为例.1.直接rm,当下次listener重启时会自动生成。也可进入lsnrctl设置set log_file new_listener.log2.使用echo >listener.log.相于清空log3.最好的方法是先设置set log_file new_listener.log到新的文件,然后旧的log文件确认不需要时再rm掉当然方法很多,比如清空alert log就比较简单直接cp到其他地方就OK,系统会自动生成.[@more@]
关于闪回事务查询的限制疑惑,请高人指教
今天看到书上说如果利用flashback_transaction_query来完成集群表或者具有行链接的表闪回操作需要启用补充日志(alter database add supplemental log data),但做实验并不需要启用(只做了集群表实验).不知实验是否哪儿做错了,请高人指点?SQL> show userUSER is "SCOTT"SQL> create cluster emp_dept(dept no number(3));create cluster emp_dept(dept no number(3)) *ERROR at line 1:ORA-02335: invalid datatype for cluster column SQL> desc dept Name
自治事务用做审计功能——实例
如果一张表非常重要需要审计失败的操作.自治事务可以帮我们完成.我们可通过自治事务建立两个before/after trigger,如果操作成功before/alter是配对的.不成功则只有before。SQL> l 1 create or replace trigger trg_aud_bef_emp 2 before insert on emp for each row 3 declare 4 pragma autonomous_transaction; 5 begin 6 insert into audit_emp values(:new.ename,'before insert',sysdate); 7 commit; 8 end; 9*SQL> /Trigger created.SQL> desc emp Name Null?
通过dbms_flashback包来进行闪回
sys schema : SQL> conn / as sysdba Connected. SQL> select current_scn from v$database; CURRENT_SCN ----------- 527262 SQL> alter session set current_schema=SCOTT; Session altered. SQL> insert into dept values(60,'DMS','CHINA'); 1 row created. SQL> commit; Commit complete. SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 50 DBA CHN 60 DMS CHINA 10
通过ADDM报告完成性能优化实例
今天用ADDM生成的报告发现有几个表存在较严重的segment fragment,检查发现是统计信息(statistics collection)太旧.进一步检查发现是对象收集统计信息被锁,无法收集统计信息.优化过程如下:SQL> SELECT a.num_rows,a.avg_row_len FROM dba_tables a WHERE a.table_name='ZDRYJCXX';NUM_ROWS AVG_ROW_LEN ---------- ----------- 3015344 396 --统计信息行数 SQL> select count(*) num_rows from zdry.zdryjcxx;NUM_ROWS ---------- 909548 --实际行数 SQL> exec dbms_stats.gather_table_stats(ZDRY,'ZDRYJCXX');BEGIN dbms_stat
quote operator
select q'# I'm a big man !#' from dual;[@more@]qu
flashback version query and flashback transaction query exam
结合闪回版本查询和闪回事务查询完成对某个事务修改数据的恢复.例子,SQL> insert into zdry.test values(8,'uestc');已创建 1 行。SQL> commit;提交完成。SQL> select versions_xid from zdry.test versions between timestamp sysdate-2/1440 and sysdate;VERSIONS_XID ----------------
Notice:oracle CASE WHEN statement
在一些oracle数据库的某些版本中必须使用CASE …… WHEN …… ELSE …… END CASE;完整语句,否则会报错.所以为了避免报错,编写PLSQL代码时,记住写完整.[@more@]
并行查询(OLAP)
并行查询(一般在OLAP中使用)条件:多个CPU并且数据跨多个磁盘驱动器存储.SQL> explain plan for select /*+parallel(c,5)*/ * from sh.customers c order by cust_last_name;已解释。已用时间: 00: 00: 00.00SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------Plan hash value: 2648474980--------------------------------------------------------------------------------------------------------------------------| Id | Ope
等级函数查询
1.一般等级查询,使用order by 和 rownum完成.例如,查询最近两次做的snapshot的snap_id,select snap_id from ( select * from dba_hist_snapshot a order by a.snap_id desc) where rownum<=2;2.rank函数分析功能其实oracle对于rank和dense_rank已经支持合计功能,不过这次我仅仅使用了其分析功能。具体语法如下:RANK ( ) OVER ( [query_partition_clause] order_by_clause )。 CREATE TABLE rank(subject VARCHAR2(100),mark NUMBER);SQL> select * from rank;SUBJECT
做事犹豫的后果
做事犹豫的后果 今天上午公司统计去峨眉山旅行的人数.自己犹豫了一会儿没有报名,结果去忙事情就把这事给忘了.下午再去报名时,前台说已经给旅行社报人数了.杯具啊!当然这点小事不足一提。但由此小事,让我明白了不管做什么事都不能犹豫,犹豫的结果往往会错过一些机会或者美好的事情.[@more@]
create bitmap index on IOT
Subject: ORA-28669 Attempting to Create Bitmap Index on an IOT Doc ID: Note:143185.1 Type: PROBLEM Last Revision Date: 24-JUL-2002 Status: PUBLISHEDProblem Description-------------------You successfully create an index-organized table (IOT) and secondary bitmap indexes, but receive the following error when you attempt to create the bitmap index: SQL> CREATE TABLE countries ( country_id CHAR(2),
crontab
format #MIN HOUR DAY MONTH DAYOFWEEK COMMAND分钟 (0-59) 小时 (0-23) 日期 (1-31) 月份 (1-12) 星期几(0-6,其中 0 代表星期日)例子: #MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date (solaris 5.8似乎不支持此种写法) #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date #1月份日早上4点 0 4 1 jan * date [@more@]
shrink space、query error desc
ORACLE 10Gshrink space1. enable row movement2.shrink spacealter table test enable row movement;alter table test shrink space compact; -- shrink HWMalter table shrink space cascade; --not shrink HWMquery error desciption infofor example:[oracle@jerry ~]$ oerr ora 155501555, 00000, "snapshot too old: rollback segment number %s with name "%s" too small"// *Cause: rollback records needed by a reader for consistent read are// overwritten by other writers// *Action: If in Automatic
SQL Profiles使用实例
SQL Profiles使用实例在统计信息不完整或者缺失时,有时优化器会产生错误的判断,产生性能比较低下的执行计划。传统的方式,通过手工添加相关的提示生成正确的执行计划。但对于那些封装好的应用程序,修改代码不是一件容易的事情,相信这个问题也曾经困扰过很多的DBA。在Oracle10g中可以很方便的使用自动SQL调整(Automatic SQL Tuning)来调整这些SQL语句,而不用去修改应用代码。其中使用的关键技术就是强大的SQL Profiles。下面通过一个小例子,看看SQL Profiles是如何进行SQL语句自动调整的。1. 使用HR用户登录,创建测试用例SQL>
搞清楚group by、group by rollup和group by cube区别
SQL> select job,deptno,sum(sal) total_sal from scott.emp group by rollup(job,deptno);JOB DEPTNO TOTAL_SAL--------- ------ ----------CLERK 10 1300CLERK 20 1900CLERK 30 950CLERK 4150ANALYST 20 6000ANALYST 6000MANAGER 10 2450MANAGER 20 2975MANAGER 30 2850MANAGER 8275SALESMAN 30 5600SALESMAN 5600PRESIDENT 10 5000PRESIDENT 50002902515 rows selectedgroup by rollup(job,deptno)从右到左开始计算(job,deptno)->(job)-> (*)SQL> select job,deptno,sum(sal) total_sal from scott.emp group by job,deptn
Pivoting Scenarios
Pivoting ScenariosA data warehouse can receive data from many different sources. Some of these source systems may not be relational databases and may store data in very different formats from the data warehouse. For example, suppose that you receive a set of sales records from a nonrelational database having the form:product_id, customer_id, weekly_start_date, sales_sun, sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat The input table looks like the following:SELECT * FROM
Oracle常见等待事件说明
Oracle常见等待事件说明Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。 空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。 常见的空闲事件有: • dispatcher timer • lock element cleanup • Null
rman恢复测试2
用SQL*PLUS不能启动到mount阶段,因为没PFILE或者SPFILE。使用RMAN可以,因为它会使用INIT.ORA文件启动。背景:用RMAN备份backup database plus archivelog;模拟丢失对象scott.ojects记录下时间alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;SQL> select sysdate from dual;SYSDATE-------------------2011-01-25 11:32:28恢复流程如下:RMAN:rman target / restore spfile from <>; --恢复SPFILEshutdown immediate --关闭DBstartup nomount; --使用恢复的SPFILE重新启动restore controlfile from &l
Linux x86安装oracle10gR2
[root@jerry ~]# su - oracle[oracle@jerry ~]$ grep MemTotal /proc/meminfoMemTotal: 514372 kB[oracle@jerry ~]$ grep SwapTotal /proc/meminfoSwapTotal: 524280 kB[oracle@jerry ~]$ df -h /tmpFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 15G 3.8G 9.7G 28% /[oracle@jerry ~]$ df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 15G 3.8G 9.7G 28% //dev/sda1