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
rman恢复测试1
RMAN> list backup;RMAN> backup database plus archivelog format '/opt/oracle/app/oracle/data_bak/%d_full_backup';Starting backup at 25-JAN-11current log archivedusing channel ORA_DISK_1channel ORA_DISK_1: starting archive log backupsetchannel ORA_DISK_1: specifying archive log(s) in backup setinput archive log thread=1 sequence=2 recid=1 stamp=741352074input archive log thread=1 sequence=3 recid=2 stamp=741353773input archive log thread=1 sequence=4 recid=3 stamp=741353829input archive log
oracle常见错误
1.如果oracle在参数文件中设置了db_domain,那么在客户端tnsnames.ora文件中应该加上db_domain,否则在连接数据库时,会出现tnsping通,但是sqlplus会报错,并且在listener中会有TNS_12564错误。例如:db_domain=egfit.com 客户端需做如下配置。ORCLST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.43.90)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCLST.egfit.com))) 2.session会话过多ora-00018错误达到会话限制alter system set session=300;[@more@]
DBCA迁移数据库
使用DBCA的模板迁移数据库的步骤及注意事项1.首先,利用DBCA创建源DB的DB模板包括data和structure.注意在此过程中,源DB会自动关闭并重启2.copy template到目标DB的$ORACLE_HOME/assistants/dbca/templates/下3.利用目标DB的DBCA创建clone DB4.利用ORAPWD工具创建SYS密码5.用SYS登录,解锁所有user并重新设置密码。因为迁移后,所有user都被锁,并且密码expired.6.如有DBLINK需要查看是否可用注:当数据库迁移后,一定要查看所有的DBLINK是否还有效。[@more@]
备份与恢复
1.基于用户的备份与恢复冷备(noarchivelog mode):shutdown immediate;cp datafile,control file,redo log to the new locationstartup;热备(archivelog mode):alter database begin backup;cp datafile,control file,redo log to the new locationalter database end backup;alter tablespace <> begin backup;cp datafile to a new location;alter tablespace <> end backup;热备恢复:--完全恢复startup mount;recovery database;alter database open;--不完全恢复startup mount;recover database until time <>;al
AWR、ADDM及备份恢复
主动维护数据字典中的信息和表中的信息,是不一样的,所以要统计信息和收集信息。statistics_level:basic手动收集统计信息type自动收集统计信息(默认)all自动收集统计信息AWR(automatic workload repository)SGA->MMON->AWR(SYS SCHEMA),默认收集时间是60分钟一次记录数据库度量快照,保留期为7天。MMON在SGA中收集统计信息放入AWR里。ADDM(automatic database diagnostic monitor)在记录每个AWR快照之后运行,监视实例:检测瓶颈,在AWR存储结果DBMS_ADVISOR程序包DBA_OUTSTANDING_ALERTS DBA_ALERT_HISTORY自动维护任务
oracle安全与网络配置
用户认证方式 passwordexternal:域名服务器认证,第三方认证global: AD LDAPSYSOPER :comlete recovery only.SYSOPER: can not perform 'CREATE DATABASE ' 'DROP DATABASE' SYSMAN、DBSNMP :OEMprofile(概要文件) edit profile at $ORACLE_HOME/rdbms/admin/utlpwdmg.sql to modify default profilecreate profile pro_u1 limit;alter user u1 profile pro_u1;dba_profiles约束条件enable/disablevalidate/novalidate解决FK问题:enable novalidate(do experiments) --可以OK.启用constraints但是不验证已存在的记录FK_TAB中存在
高级分组、外部表
drop table t_name;show recyclebin;flashback table table_name to before drop;drop table t_name purge;after we drop table a table we can flash it back from recyclebin ,except SYS schema of the table.viewuser_viewscreate or replace FORCE view vw_force as select * from aa; --force to create a view when aa table doesn't exist.sequenceuser_sequencesindexuser_ind_columnsuser_indexesset autotrace on;synonymuser_synonymsdba_synonyms --see the pulic synonymdictionarydict --contains all the dictionary tab