今天有人问了我几个问题,记录一下.
1:软解析和硬解析有什么区别?软解析有什么坏处?最好用英文表达?2:truncate和delete有什么共同之处?有什么不同之处?最好用英文表达?3:页面上,客户做查询的时候,等了10多分钟,才出现10条记录?试着如何优化?(如果a表有2千万条记录,b表也有2千万表记录,关联之后,过了10分钟之后才出现结果,而且结果就10来条记录.那应该怎么去优化?如果没有缩进,如何知道哪个是驱动,哪个是被驱动?排除join方式的优化,还有什么其他方法?4:哪些操作会导致排序操作?[@more@]
实施aix系统备份
************rootvg卷组的备份rootvg卷组的备份,一般应在以下情况发生时进行:(1)系统安装完成,系统上线前(2)系统进行了再配置,包括挂接新设备,更改设备属性(3)系统中子服务属性改变,包括添减子服务,属性改变等(4)系统中安装特征发生改变,如添减用户,权限改动等(5)系统进行升级/降级操作,添减aix程序,修补操作等(6)其他会涉及rootvg更改的管理行为发生前后输入:#smitt mksysb输入完成后按回车键开始备份过程,只到成功.rootvg备份磁盘创建完成.在rootvg卷组故障情况下,即可恢复.#mksysb '-m' '-i' '-X' /dev/rmt0******root
sql实现行转列
今天遇到客户需要实现行列转换的功能。号 名001 2001 3002 4002 6变为号 名1 名2001 2 3002 4 6select *from (select b.no,b.mp_no a lead(a.mp_no) over(partition by a.id order by a.mp_no desc) b from table a, table b where......) where b is not null[@more@]
认识数据仓库
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化的数据环境。数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记帐。而数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的。操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数
管理集群环境
SQL>select name,description from v$bgprocess where PADDR !='00';显示LMON,LMDn,LMSn,LCK,RBAL,ASMB进程.SQL>show parameter spfileNAME TYPE VALUE--------------------------------------------------spfile string +DGDATA/orcl/spfileorcl.oraspfile存在于ASM磁盘组,不能直接查看.所以首先创建文件型参数文件SQL> create pfile='/db/oracle/iniorcl1.ora' from spfile;SQL>host cat /db/oracle/initorcl1.ora | grep sga_max_sizeorcl1.sga_max_size=419430400orcl2.sga_ma
aix下oracle数据库管理
$whoamioracle$cd $oracle_home/dbs$ls可以看到参数文件initorcl.ora,spfileorcl.ora.$cat spfileorcl.ora |more --查看服务器参数文件$cat initorcl.ore | pg PFILE文件initorcl.ora不存在SQL>create pfile from spfile;$ cat spfileorcl.ora | pg**********************SQL>show parameter spfile;数据库通过spfile启动.SQL>alter system set sga_max_size =620M scope=spfile;SQL>shutdown immediate;SQL>show parameter sga_max_size;参数被修改注意:如果数据库是通过PFILE启动,则不能用alter system 调整参数!*******
aix下oracle的空间使用
包括 系统表空间system,辅助表空间sysaux,两个还原表空间undotbs1和undotbs2,三个临时表空间temp,temp02,temp03,数据表空间test01,test02,test03,test04,test06和两个用户表空间users和example.SQL>create tablespace test01 datafile '/db/oradata/orcl/test01.dbf' size 10M uniform size 64K;SQL>create tablespace test02 datafile '/db/oradata/orcl/test02.dbf' size 10M autoallocate;SQL>create tablespace test03 datafile '/db/oradata/orcl/test03.dbf' size 10M reuse autoextend on next 500K maxsize 100M;SQL>
熟悉shell的一些基本命令
$ls$ls -f$ls -a$ls -a -f$cat hosts --显示文件hosts的内容$mv test_resut rest_result.orig --重命名文件$rm files --删除文件ls列文件,cat浏览文件内容,cp拷贝文件,mv重命名文件,rm删除文件$pwd 打印出用户当前所位于的目录名。$ls -l$ls *$ls ch0?.doc -- ?只匹配一个字符cho1.doc,ch02.doc,ch03.doc,ch04.doc,ch05.doc,ch06.doc$ls ch??.doc --匹配两个字符$ls ch0[0123456789].doc --匹配ch0数字$ls ch0[0-9].doc$ls [a-z]* --列出所有以小写字母开头的文件$ls [A-Z]* --列出所有以大写字母开头的文件$ls [!a]* --列出所有除以a
sql tuning
sql调优(数据库性能80%问题):1 减少响应时间2 减少资源的使用找出有问题的sql自动:addm,顶端sql手动:v$视图,statspack执行改变:sql语句的结构索引访问结构驱动表有最好的过滤器少量行数返回到下一个步骤视图被有效的利用每个表是被高效地访问检查sql语句中的属性和表中的行数全表扫描并不意味着效率低下。避免在where 字句中转化column避免mixed-mode的表达以及提防隐式类型转换为特殊任务编写单独的sql语句和适当的使用sql建构。使用exists或in为子查询的要求。根据提示谨慎改变访问路径和连接顺序。移除不必要的索引,以加快DML索引
oracle心得
普通表:数据作为无序的收集被存放。分区表:数据被分成更小更便于管理的块。索引组织表(IOT):数据被分类并存储在一个B数索引结构中。只有一个主键盘索引有效。散列簇表:一个以上的表的相关数据被存放在一起。(增删改不适合)一个分区表是:存储在它自己的段用于改善性能和可管理性。(一张表可以跨多个分区,用于海量存储,大量一般不需要)避免i/o争夺,增加i/o并行尽量避免跨分区。方案管理任务:dba任务包括:1 估计新表的大小2 分析增长趋势3 管理优化统计4 在线重组方案对象寻址数量的2-4%用索引,能不建尽量不建。hash joinneste
介绍ORA-1092错误
You start up the database and receive the following error message:SQL> startupORACLE instance started.Total System Global Area 252478536 bytesFixed Size 279624 bytesVariable Size 167772160 bytesDatabase Buffers 83886080 bytesRedo Buffers 540672 bytesDatabase mounted.ORA-01092: ORACLE instance terminated. Disconnection forcedNo background processes are started.ORA-01092: Oracle instance terminated. Disconnection forcedCause: The instance connected to was terminated abnormally, probablydue to a
系统架构时考虑性能要素
*******服务器硬件上的考虑添加新的CPU,扩展系统内存或者添加更多的磁盘会得到有效的性能增强,但只能在短时间内起到作用,当应用数据量持续上涨,工作量负荷不断升高时,又会面临同样的性能问题。不好的数据库设计,不恰当的SQL都会让硬件投入显的无力。*******系统可扩展性设计可扩展性是指系统能够处理更多有效工作载荷的能力。一般包括如下几个方面:1:存储系统未以最佳I/O配置策略进行生产实施,造成了低效率。2:内存管理中由于用户大量申请内存导致整体服务器过度的内存交换。3:糟糕的事务设计造成了锁等待和串行化事务问题。4:不良的数
为什么要使用pl/sql
PL/SQL is a completely portable, high-performance transaction processing language that offers the following advantages:1:Tight Integration with SQL2:Better Performance Without PL/SQL, Oracle must process SQL statements one at a time.This can drastically reduce network traffic between the database and an application.This can drastically reduce network traffic between the database and an application.Stored procedures are cached and shared among users, which lowers memory requirements and invocat
查看SQL执行计划的方法(有待于进一步补充)
首先需要明确查看执行计划的目的:(摘自官方文档)It is important to generate and review execution plans for all of the key SQL statements in your application. Doing so lets you compare the optimizer execution plans of a SQL statement when the statement performed well to the plan when that the statement is not performing well. Having the comparison, along with information such as changes in data volumes, can assist in identifying the cause of performance degradation.答:第一种方法:explain plan for…
aix存储概念要素
PV(physical Volume):物理卷,也称为硬盘,也称为逻辑磁盘。比如hdisk0,hdisk1PP(Physical Partiton):物理分区,PV分区化分配的最小单位。VG(Volume Group):卷组,相关PV的集合。LV(Logical Volumn):逻辑卷,为于PV上分区的分组。LP(Logical Partition)逻辑分区,指向物理分区的对应逻辑编号。********#lsvg 或#lsvg -o显示卷组信息#mkvg -y 'test' -s '4' hdisk10 hdisk11 hdisk12 --创建卷组test,使用三块硬盘#smitty chvg --卷组属性#extendvg test hdisk13 --把磁盘hdisk13添加到卷组test中**************#mklv -y testlv -c 2 rootvg
二个SQL tuning例子(使用case)
减少对表的扫描次数,将大大有利于执行的效率例子1(低效):select z.dept_namefrom(select item_key,dept_name,min(b.begin_date) t1 from table1 a,table2 bwhere activity_name='1';and .....group by ...) z,(select item_key,min(b.begin_date) t2 from table1 a, table2 bwhere activity_name='2'and....group by....) w,(select item_key,max(b.begin_date) t3,min(b.end_date) t4 from table1 a, table2 bwhere activity_name='3'and.....group by.....)Qwhere z.item_key = w.item_keyand w.item_key = Q.item_key例子1的(高效):s
内存配置的优化
应该让有效数据长时驻留在内存结构中,这是oracle性能调整中非常重要的一个课题。应该 启用自动共享内存管理,把sga_target设置到一非零值,并把statistics_level设置为typical或者all。sga_target应该设置为操作系统内存总数中可以分配给oracle sga使用的内存量。sga_target受sga_max_size约束。sga_max_size定义了本机上oracle系统可以使用的最大sga。一般最大可达操作系统物理内存的70%.*********sga内存分配原则(从aix角度出发)1 减少页交换操作当需要支持其他应用运行时,会按照LRU算法把当前驻留在内存中的数据页Page out到物理磁盘,
使用rman备份
$whoamioracle$export oracle_sid=orcl$rmanRMAN>connect target / --如果目标数据库就是一个本地数据库connect to target database:ORCLRMAN>$rman target/ --连接目标数据库(在数据库本地进行备份)connect to target database:ORCLRAMN>show default device type; --检查默认备份通道类型RAMN configuration parameters are:configure default device type to 'sbt_tape';RAMN>backup as backupset database; --使用sbt_tape方式完全备份;在上述全库备份中,所有数据文件,当前控制文件,当前参数文件,但没有备份归档日志.
转至archivelog模式
$mkdir /oracle/archive1 --假设创建两个归档目的地$mkdir /oracle/archive2SQL>connect / as sysdbaSQL>alter system set log_archive_dest_1 = 'location=/oracle/archive1/' scope=spfile;SQL>alter sytem set log_archive_dest_2 ='location=/oracle/archive2/' scope=spfile;SQL>alter system set log_archive_format ='arch_%d_%t_%r_%s.log' scope=spfile;SQL>shutdown immediate;SQL>startup monut;SQL>alter database archivelog;SQL>altetr database open;SQL>selec log_mode from v$database; -
oracle处理SQL的过程
任何SQL语句的执行,都会经过Parse,execution,fetch三个阶段.Parse阶段:检查SQL语句的语法和语义,生成SQL的执行计划,并放到share pool内.用户进程将SQL语句发送到服务器进程:(1)搜索share pool 内的library cache,检查是否存在相同的SQL.相同的话,就可以直接执行.(2)如果library cache内没有相同的SQL,那么检查该 SQL,生成执行计划,完成伪代码编译.需要若干次系统数据字典的访问.所以share pool内必须要有dictionary cache.(3)申请各种需要的系统资源,所,缓存块等操作.execution阶段:按照生成的执行计划中所安排的步骤