eval使用详解(转)
比方你宣告 myname=peter,然後你要查看 myname 變量內容就是使用:echo $myname或是echo ${myname}若你另外宣告 data=myname。$ echo $mynamepeter若是希望可以把 data 變量的內容 "myname" 當作一個新變量提供取出 peter 內容的話,一般概念:${data} --> myname , ${myname} --> peter所以語法上要查看內容一般可能會使用:echo $${data}只是這樣語法是錯誤的,因為無法取出 ${data} 內容後再當作變量取值。$ echo $${data}14054{data}那可能想到方式是這樣使用:echo $${data}但是這變成結果如下:$ echo $${data}$myname那
aix中read命令的用法
$ cat readtxtni hao mahe ha a$ vi readtest"readtest" 5 lines, 89 characters #!/bin/kshwhile read xx yy zzdoprintf "%s %s %sn" $xx $yy $zzdone <readtxt$ readtestni hao mahe ha a--------------------------------------------------------------------------$ vi readtest"readtest" 5 lines, 82 characters #!/bin/kshwhile read xx yydoprintf "%s %s " $yy $xx done <readtxt$ readtesthao ma ni ha a he ----------------------------------------------------------------
aix变量的设置与检测
$ value="guojun"$ echo ${value:+"xiaowuya"}xiaowuya$ echo $valueguojun $ echo ${value:="xiaowuya"}guojun$ unset value$ echo ${value:+"xiaowuya"}$ $ echo $value$ echo ${value:-"nihao"}nihao$ echo $value$ 可看出$ { v a r i a b l e : + v a l u e }指若变量有设置,则用value值代替,若没有设置则不代替,而$ { v a r i a b l e : = v a l u e }恰是指若变量没有设置,用value代替,且代替的值永远有效,若设置了则用原来的值而$ { v a r i a b l e : - v a l u e }恰
ORACLE优化器工作原理及及执行方式
Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用pl/sql Developer、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?1、优化器的优化方式Oracle的优化器共有两种的优化方式,即基于规则的优化
ORACLE常用SQL优化hint语句
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;3. /*+CHOOSE*/表明如果数据字典中有访问表的统计信息,将基于开销的优化
DW/BI项目外包的分类
目前DW/BI项目外包有这么几种情况,可能其他软件项目也有类似的,只是DW/BI有其特殊性,导致了困难会更多,而且有的困难不 好预期。 1。Onsite外包。比如我们公司有个项目是受一家大型咨询公司的外包,同时和咨询公司和最终客户一起协调工作。这种外包工作容易控制点,因为除了大 方向由咨询公司定外,其他细节,如DW设计开发和测试,BI前端设计开发和测试全部自己来。 2。Offshore外包比较负责,由可分为两大类和两种不同的环境。两种不同的环境分别是 (1)远程登陆客户环境,但在自己办公室工作。(2)自己 公司搭建开发环境,然后提交
关于一个新的DW项目的认知
对于一个文档齐全的DW,看文档非常重要,而看文档的时候也有技巧,首先要看架构,然后看项目范围和基本业务知识(如 果该客户的业务不太熟的话)。其次就是看说明文档和职责分工。由此可以看出,在做DW的过程中,写文档也很重要,方便后来人啊~ 个人体会[@more@]
为什么在数据仓库中很少使用主外键约束
个人理解如下:1、为了数据的精准性,OLTP系统中会设有相应的主外键约束,而DW中的数据一般都是从OLTP中过来的,可以设想其已经满足相应的主外键约束规则2、在OLTP系统中,记录一般都是一条条地update、INSERT的,故有足够的时间进行主外键约束判断,而DW中的数据一般都是大批量地INSERT,故去掉主外键约束以提高性能3、因为数据源的多样性,抽取方式的缺陷性,同步方法的局限性以及数据的质量问题,数据的精准性并不能100%地保证, 主外键约束可能导致数据加载不能继续,因小失大,故也放弃主外键。。。笔记中,小意见~~[@more@]
关于SAP BW的介绍
SAP公司是全球最大的企业管理软件及协同商务解决方案供应商、全球第三大独立软件供应商。SAP BW(Business Information Warehouse,商务信息仓库)被认为是可以满足用户需求数据仓库系统中功能最强的一个: 满足SAP和非SAP系统的整合,丰富的数据转换工具,强大的Staging mechanisms,易于使用的前台报表,整合的Web报表,通过不同的工具将数据转换到非SAP系统中,使得信息分析员和决策者都可以迅速获得来自不同系统的高度集成化信息,进行数据的分析,提供准确的综合性报表以及商务智能功能... ...这些都使得BW成为独特的,可满足不同用
关于/*+append*/的一点小常识
今天倒数据时,对A表数据使用/*+append*/方式倒入到C表中,同时启了另一个进程使用/*+append*/将B表数据倒入C表中,结果造成了死锁,查了一下资料,才发现,使用/*+append*/方式时,会锁住全表,包括不允许其它进程对该表执行DML操作,故死锁,以后应该注意![@more@]
关于处理死锁的一点小知识
SQL> select event,WAIT_TIME from v$session_wait where sid=1608;enq: TM - contention 0SQL> SELECT * FROM v$lock WHERE sid=1608;ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK---------------- ---------------- ---- -- ----- ---- ------ ------- -------07000002530CF6C0 07000002530CF6E8 1608 TM 614265 0 0 6 3118 0SQL> SELECT OBJECT_NAME FROM dba_objects where object_id=614
为什么在ALL_TABLES中查不到表的所属表空间
select TABLESPACE_NAME from all_tables where TABLE_NAME='A'结果为 空为什么会出现这种情况呢?查了一下文档,原来对于分区表,索引组织表,临时表(global tempary)在ALL_TABLES字典表中是查不到其所属表空间的~如果要查此类表空间,可按如下方法:SQL> select distinct TABLESPACE_NAME from dba_segments where SEGMENT_NAME='A';TBS_DW_FACE_00OK 了~[@more@]
关于索引组织表IOT
索引组织表的数据按主键排序手段被存储在B-树索引中,除了存储主键列值外还存储非键列的值。普通索引只存储索引列,而索引组织表则存储表的所有列的值。索引组织表一般适应于静态表,且查询多以主键列。当表的大部分列当作主键列时,且表相对静态,比较适合创建索引组织表!(8i以上)索引组织表的创建:CREATE TABLE docindex(token char(20),doc_id NUMBER,token_frequency NUMBER,token_offsets VARCHAR2(512),CONSTRAINT pk_docindex PRIMARY KEY (token, doc_id))ORGANIZATION INDEX TABLESPACE ind_tbs;必须给索引结构表指定主键。
关于倒数据的速度记录问题
公司最近DW重构,迁移一个数据量极大的模块,共分为三个表,先说一下服务器配置: 今天先倒第一张表,数据量约为15G,因为里边存在异常数据,故用行级游标一条条地判断插入,异常数据到异常表,正常数据到正常表,用时约8小时[@more@]
db file scattered read与事件db file sequential read相类似(转)
当会话发布一个读入多个数据块的IO请求时提交该事件。ORACLE会话等待多个连续的数据块(由初始参数DB_FILE_MULTIBLOCK_READ_COUNT指定)从磁盘读入到SGA中。 该事件是在全表扫描或索引快速全局扫描时发生的典型事件。 初始化参数db_file_multiblock_read_count(MBRC)决定了读取数据块的最大数目,有两种情况会造成多块读取操作被分成几次操作: >> MBRC因子不能跨越整个区,如果一个区包含10个块,MBRC因子=8,那么多块读取会发布两次读取调用,一次8个数据块,一次2个数据块。>> 要读取的多块有,有一部分已在CACHE中,这时多
关于v$session_wait 表的运用
SQL> desc v$session_wait Name NULL? Type ---------------------------------- -------- ----------------- SID NUMBER SEQ# NUMBER EVENT VARCHAR2(64) P1TEXT VARCHAR2(64) P1 NUMBER P1RAW RAW(8) P2TEXT
一个语句同时INSERT多个表
在以前的版本中,如果想插入多个表中,需要使用多条INSERT语句,9I开始可以用一条INSERT语句实现向多个表中插入数据.INSERT [ALL] [conditional_insert_clause][insert_into_clause values_clause] (subquery)其中conditional_insert_clause如下:[ALL] [FIRST][WHEN condition THEN] [insert_into_clause values_clause][ELSE] [insert_into_clause values_clause]上面的语法说明其实包含了两种情况>无条件>有条件,所以后面的conditional_insert_clasue里出现的[ALL]和INSERT后面的[ALL]是分属两种情形下的举例就很容易理解了无条件INS
关于NO_DATA_FOUND
SQL> DECLARE2 l_pv NUMBER;3 BEGIN4 --确定绑定的OFFER在统计日的PV5 SELECT (pv)6 INTO l_pv7 FROM cnmir.offerid_pv8 WHERE offer_id=457556756759 AND report_time=20071108;10 11 --防止日志数据异常,没有OFFER对应的PV值,此为数据异常12 EXCEPTION13 WHEN NO_DATA_FOUND THEN14 l_pv:=-110;15 DBMS_OUTPUT.put_line(l_pv);16 END;17 /-110PL/SQL procedure successfully completed.SQL> DECLARE2 l_pv NUMBER;3 BEGIN4 --确定绑定的OFFER在统计日的PV5 SELECT SUM(pv)6 INTO l_pv7 FROM cnmir.offerid_pv8 WHERE offer_id=457
物理卷/逻辑卷/卷组/物理区域/逻辑区域/卷组描述区域的概念
1物理卷-简称PV 物理卷在逻辑卷管理器中属于最底层的,任何的逻辑卷和卷组都必需依靠物理卷来建立,物理卷可以是一个完整的硬盘,也可以是硬盘中的莫一个分区 2卷组-简称VG 卷组是建立在物理卷之上, 一个卷组就是N(N是大于等于1的正整数,不知道可以有多大)个物理卷的集合 3逻辑卷-简称LV 逻辑卷是建立在卷组之上的,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意从卷组的空闲空间中增减,逻辑卷就是N(N代表非零的正数,小数也好,整数也好,但是不能太小有LE限止,不知道可以有多大)卷组的集合.4 物理区域-简称PE 物理区域是物理卷中最小的可
关于autotrace
set autotrace on explain on只显示执行计划不执行语句[@more@]