imp的buffer和commit分析
Imp的commit和buffer分析:Imp的commit影响:imp的commit主要用于大表数据插入时减少回滚段的压力,以免出现长时间导入而出现的回滚段过久ora-01555,结合buffer设置则能按照buffer的大小进行分批提交,可以有效的减轻undo压力。但是如果对于插入lob、long、ref、rowid等字段时设置commit=y则会逐条commit,我们都清楚对于批量插入数据逐条commit会降低性能,所以这里需要依据表中的具体信息。而且还存在一个因素则是结合buffer区大小批量commit提交时,如果出现表空间,连接丢失等问题导致imp失败,则可能只提交一批数据,此时带来的影响
Awr和statspack中的execute to parse和session_cached_cursors
Awr和statspack中的execute to parse自己对于awr和statspack并不是很了解,在pub中看到一个网友的awr信息,查看发现其中有execute to parse这个统计信息Buffer Nowait %:100.00Redo NoWait %:100.00Buffer Hit %:99.54In-memory Sort %:100.00Library Hit %:83.33Soft Parse %:70.75Execute to Parse %:25.10Latch Hit %:99.37Parse CPU to Parse Elapsd %:98.63% Non-Parse CPU:Execute to parse%应该是如下的执行与解析的方面Execute to Parse = round(100*(1-rse/:exe),2) prse = select value from v$sysstat w
exp工具的direct和query冲突以及进程补充
Exp中虽然使用direct工具绕过sga直接从磁盘导入到uga端,可以加快exp导出速度,但是exp工具中无法用direct和query一起使用,不然会出现direct的模式冲突。C:Documents and Settings0990753>exp xiaoyu/xiaoyu file=d:test01.dmp log=d:test01.log tables=test03 query="where id=11" buffer=800000 direct=yExport: Release 10.2.0.1.0 - Production on 星期四 2月 16 13:58:30 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Productio
一些常用的oracle进程
其实关于Oracle的主要进程都多多少少了解,还是有些遗漏的细节整理下 PMON进程监视器:连接异常的清理工作,释放资源,Pmon会回滚未提交的工作,为失败的进程分配sga资源 清除后台失败的进程,当出现后台进程失败后,pmon会重启进程或者关闭实例,后台进程失败是一种很严重的oracle错误,最好把error呈递给oracle support 向tns 监听器注册实例,实例启动时,pmon询问公认的端口地址1521是否有监听器,如果不在默认的1521端口,需要显示的设置LOCAL_LISTENER参数指定监听器地址。(数据库启动时有监听器运行,pmon会与监听器通信,传递参数
tom 9I-10G的sga的多缓存池 多块和dual表的一点分析
Sga共享内存区,在nomount阶段已经分配,每个oracle进程都会访问其中的某一点。在unix操作系统上,sga是一个物理实体,进程可以附加到这段独立的内存上。[oracle@localhost ~]$ ipcs -m|grep ora0x01b9ced8 65537 oracle 640 1612709888 771Windows上,oracle会作为一个地址空间单个进程执行,sga将作为专用内存分配给oracle.exe进程,无法查看sga分配内存固定sga固定sga是sga一个组件,其大小跟平台版本有关,安装数据库时,固定sga会编译到二进制执行文件中。固定sga中保存了各sga组件的变量和参数,通常很小无法调整用于
tom 9I-10g中关于dmp和数据磊文件以及pga的一点分析
Exp和imp的dmp:关于oracle的导入 导出工具跟oracle的版本的概念关系一直是迷迷糊糊的,跟网友们的讨论一样:高版本兼容低版本。这个解释应该是export的导出版本应该低于或等于imp的导入版本。例如oracle 9i的数据库服务器无法用oracle 10g的客户端导出,由于dmp文件的imp是9I的,但是需要exp的版本却是10g的,同样还有10g客户端导出的dmp文件无法导入到oracle 9I的数据库中。Dmp文件是平台独立的二进制文件,里面存储元数据(create和alert语句)和数据本身,只要是oracle版本允许可以导入导出到任何平台,但是由于在windows和文件ftp传输
sum()over()和count()over()分析函数
Sum()over()和count()over分析函数使用创建测试表create table test(sales_id varchar2(2),sales varchar2(10),dest varchar2(10),dept varchar2(10),revenue number);插入测试数据insert into test values('11','smith','hangzhou','市场',1000);insert into test values('12','smith','wenzhou','市场',2000);insert into test values('13','allen','wenzhou','渠道',3000);insert into test values('14','allen','wenzhou','渠道',4000);insert into test values('15','jekch','shanghai','渠道',2500);insert into test values('11','
利用隐式游标分批删除数据的procedure
刚一个人在南京过完了元宵佳节,和同学去了一趟书店帮他选了一本三思的涂抹oracle,个人来看对他还是很不错的,不然直接看eygle的深入浅出 dba3手记那是太吃力了,涂抹oracle还是很不错的,至少能认认真真把那本书啃完是非常受益的。即将迎来自己的未知的第二份工作,当然首先必须跟oracle相关,如果可以有管理类的工作那最好了,不过自己在技术和经验方面还存在远远不足,虽然这一年来自己很努力的去肯文档 做测试但是知识漏洞还是太多太多。不瞎扯了,同事这些天需要删除大量的数据,如果直接删除对回滚段冲击太大,一个运行半天delete很
深入浅出数据字典摘要
Eygle深入浅出的数据字典摘要:Oracle数据字典存储的是oracle内部的元数据,而数据字典一般是只读的,由4部分组成:内部rbdms(x$)表,数据字典表,动态性能(v$)视图和数据字典视图。X$表是oracle运行基础,在数据库启动时由oracle应用程序创建。不允许授权其他sys用户访问,比较常见x$bh,x$ksmsp,x$kvit等。 SQL> grant select on x$kvit to xiaoyu; grant select on x$kvit to xiaoyu ORA-02030: 只能从固定的表/视图查询 不过使用autotrace、explain plan查看sql语句,常用的v视图执行计划的实质却是底层的x视图。SQL> explain p
spfile和pfile、ora-32004和undo_tablespace指定错误
关于spfile或者pfile参数的一点摘要:关于oracle的初始化参数可以分为推导参数sessions=(1.1*processes)+5,操作系统依赖参数db_cache_size受制于oracle使用内存大小,可变参数(例如open_cursors可以调整),但是一般来说个人更喜欢分类为隐含参数和非隐含参数,或者分类为动态参数和静态参数。初始化参数spfile和pfile,在oracle 9I前一直是使用的pfile文本文件存储初始化参数,pfile可以直接手动修改,但是由于每次修改都需要重新启动实例才能生效,oracle 9I推出了spfile,Spfile可以允许dba使用alter system方法修改而不需要手动去
深入浅出检查点和实例recovery
再次翻看eyle深入浅出,记录关于检查点和实例恢复的一些笔记oracle 8I的增量检查点主要是通过fast_start checkpointing特性来实现,oracle 8I开始,fast_start checkpointing特性,包含在oracle企业版本的fast_start fault recovery组件中。该组件还包括fast_start parallel rollback和fast_start on_demand rollback。fast_start checkpointing特性主要是通过fast_start_mttr_target(instance 恢复期望时间)参数来实现,表示instance crash恢复所需的时间增量检查点连续地进行,把checkpoint queue中最低的low rba写入disk中(dbwr会根据ch
oracle的官方文档链接
Oracle不同版本的官方文档在线参考和打包下载地址汇总,罗列在这里,供你我参考。1.9i Oracle官方文档1)在线浏览http://www.oracle.com/pls/db92/homepage2)下载在手,参考无忧Oracle9i Database Release 1 (9.0.1) Documentationhttp://www.oracle.com/technology/documentation/Oracle9i_arch_901.htmlOracle9i Database Release 2 (9.2) Documentationhttp://www.oracle.com/technology/documentation/oracle9i.html2.10g Oracle官方文档1)在线浏览http://www.oracle.com/pls/db102/homepage2)下载在手,参考无忧Oracle Database 1
license的几个参数限制user
users,默认的为create users的限制 ---------- SQL> create user xiaoyu02 identified by xiaoyu02 3 temporary tablespace temp default tablespace users LICENSE_MAX_USERS 参数而无法创建用户可以看出由于超过了create user。session连接数,不包含restricted session的用户,默认为License_sessions_warning参数用于警告日志中记录,默认为SQL> show parameter license_sessions_warning;NAME TYPE VALUElicense_sessions_warning integer 0
tom的runstats_pkg工具包关于批量插入和绑定变量分析-03
也可以利用runstats_pkg工具包用来检测使用绑定变量与不适用绑定变量的从时间 latch争用等区别。SQL> create table t01(id number); Table created SQL> SQL> create or replace procedure proc1 2 as 3 begin 4 for i in 1..10000 loop 5 execute immediate 'insert into t01 values(:x)' using i; 6 end loop; 7 commit; 8 end; 9 / Procedure created SQL> SQL> create or replace procedure proc2 2 as 3 begin 4 for i in 1..10000 loop 5 execute immediate 'insert into t01 values('||i||
tom的runstats_pkg工具包关于批量插入和绑定变量分析-02
tom大师利用上述runstats_pkg工具包可以测试两种方法所使用的时间差 统计信息和latch等。例如批量插入和逐条插入数据到table中,我们更自然的想象的是批量插入性能优于逐条插入,利用runstats_pkg更可以从时间 统计信息 latch批量插入的优势。SQL> set serveroutput on size 999999SQL> execute runstats_pkg.rs_start; PL/SQL procedure successfully completed SQL> insert into t select * from t; 100094 rows inserted SQL> commit; Commit complete--批量插入 SQL> execute runstats_pkg.rs_middle; PL/SQL procedur
profile限制user连接session数
看完tom的9I-10G编程第一章,在其中主要阐述鼓励去了解学习oracle,而且应该一直坚持学习下去,例如说到的一个限制user最大session连接数,则可以用profile资源限制很轻松的现实。例如:限制quhz这个user最多只能有4个session,利用oracle内置的profile可以实现。下面用一些简单的sql语句实现如上功能SQL> drop profile one_session cascade; Profile dropped SQL> create profile four_session limit sessions_per_user 4; Profile created SQL> alter user quhz profile four_session; User altered SQL> alter system set
tom的runstats_pkg工具包关于批量插入和绑定变量分析-01
今天迎来本命年的工作第一天,学习氛围还算不错,充满神奇的2012这一年自身又将有着怎样的变化,其实真是不得而知。给大家送一个迟来的新年快乐,当然今年可能以后很长一段时间都是坚持 习惯学习oracle,然后期待北漂寻求一份跟oracle开发管理相关的工作,认真的做下去,也期待遇见一个适龄的girl,一个人着实有点孤独。呜呜!Tom开发的一个用于比较统计方法的工具runstats_pkg先建立视图statscreate or replace view stats asselect 'STAT...'||a.name name,b.value fromv$statname a,v$mystat bwhere a.statistic#=b.statistic#union al
logon on database记录登入信息的trigger
今天想起写一个登陆数据库的数据库级别的trigger,记录每次登陆的时间和人员名称,以下是具体的构建思路。 SQL> create table loggon01(id number,name varchar2(80),logon_date date); Sql> create public synonym loggon for loggon01; Sql> grant all on logon to public; 创建测试表loggon01及其public synonym授权与publicSql> create sequence sequence01 Start with 1 Increment by 1 Maxvalue 99999 Nocycle Sql> create public synonym sequence for sequence01; Sql> grant select any
游标current of cur特性
有关游标的current of特性使用,创建测试表test001,create table test001(id number, user_name varchar2(20));insert into test001 values(1, 'hzk');insert into test001 values(2, 'zak');insert into test001 values(3, 'zaglzd');commit;需要把每行id自增长10,遍历游标fetch到变量中可以利用如下pl/sql程序块进行处理declarev_ab test001%rowtype;cursor cur01 is select * from test001;beginopen cur01;loopfetch cur01 into v_ab;update test001 set id=id+10 where user_name=v_ab.user_name;exit when cur01%notfound;comm
索引关键字的隐式转换分析
从等待事件找到具体session的sql语句进行调控:看eygle深入浅出中关于最后sql性能诊断部分,其中提到的几个案例,对于大表缺少必要索引而导致全表扫描影响性能;大表相应字段存在索引但是oracle并不走索引,关键字中如果存在转换,很可能oracle会使索引失效(选择hint都会失效)而选择全表扫描。对于大表缺少索引根据v$session和v$session_wait视图找到sid的等待事件,如果对于大表全表扫描user I/O等待事件db file scattered需要过多关注通过v$sqltext的hash_value和address和v$session的sql_hash_value和sql_address找到sql语句,然后对