Oracle Internet Directory 软件下载及文档
现在公司对OID的需求越来越迫切了。所以,在网上搜了搜。未果。还是通过metalink问support。反馈信息如下:[@more@] QUESTION========Where to download OID and get the corresponding documentations ?ANSWER======+ The latest version of OID is 10.1.4.0.1 which can be downloaded from the following pagehttp://www.oracle.com/technology/software/products/ias/htdocs/101401.htmlOID is available with the "Oracle Identity Management Infrastructure and Oracle IdentityFederation" suite(During the installat
Windows平台上9i与10g共存是listener的问题
当在一台 server上同时装9i与10g时,无法用9i的listener去监听10g的数据库。连接时报ora-12537。说tns连接关闭。解决方法:1.在services.msc中,关闭9i的listener.ora服务。并设为manual。2.用10g的net configuration assistant创建一个新的listener.ora.3.将9i的oracle_homenetworkadmin下的listerner.ora拷贝到10g的oracle_homenetworkadmin目录下。4.重起10g的listener服务。问题解决。说穿了就是兼容性不好。[@more@]
optimizer_mode 之 all_rows
看oracle performance tuning guide时看到一句:ALL_ROWS --The optimizer uses a cost-based approach for all SQL statements in the session regardless of the presence of statistics and optimizes with a goal of best throughput (minimum resource use to complete the entire statement).于是做了个测试:1.将scott这个schema的所有statistics删除。1.1用sql>explian for select * from emp;sql>@?/rdbms/admin/utlxpls看到cost,rows等信息已消失,符合optimizer mode的choose规则:当对table做了analyze后,会采用CBO,
多列子查询
单行子查询是指查询只返回单列单行数据。多行子查询是指子查询返回单列多行数据。2者都是针对单列而言。多列子查询则是指返回多列数据的子查询语句。当多列子查询返回单行数据时,在where子句中可以使用单行比较符。而返回多行数据时,在where字句中必须使用多行比较符。(in,all,any)。[@more@]在使用子查询比较多个列时,可以使用成对比较。即:要求多个列的数据必须同时匹配。如:在emp表中,要求在部门20中找到与部门30 薪水与补助完全相同的人:sql>select ename,job,sal,comm,deptno from emp where (sal,comm) in (select sa
顺序事务与只读事务
只读事务是指只允许查询操作,而不允许任何dml操作的事务。如有2个session,sessionA及session B.当sessionA设置了只读事务后,即使session B对sessionA所查询信息做了修改,而sessionA所查询的仍然是修改前的值。Time 1:Session A:scott@KENNY> set transaction read only;Transaction set.Time2:Session B:scott@KENNY> update emp set sal=4000 where ename='SMITH';1 row updated.scott@KENNY> commit;Commit complete.Time 3:Session A:scott@KENNY> select * from emp where ename='SMITH'; EMPNO ENAME JOB
逻辑IO,逻辑读,sql调优最关注的是什么
有时候静下心来,总结一下实践中遇到的问题,会把一些概念理解得更好.比如什么是逻辑读?什么是逻辑IO?sql tuning中最关注的又是什么?其实很简单,假设有一个刚刚启动的数据库,你执行了一个查询,方法1是用了full table scan,方法2是加了索引. 在方法1中,oracle在数据文件中获取了1000个block,并放到buffer cache中.方法2中oracle 获取了10个block.并放到buffer cache中.那么cpu在内存中读这些block的过程就叫做逻辑读(consistent get),在读的过程中产生的IO就是逻辑IO.逻辑读的过程中,是要消耗cpu资源的.因此,逻辑读越少越好.[@more@]
1个关于函数索引的性能调优过程
程序员报应用慢,用OEM抓了sql出来,SELECT nvl(to_char(status), 'null') status, nvl(to_char(subscribeid), 'null')subscribeidFROM abcWHERE status > 0AND replace(bbid, '''', '') = '9999-0009-11111'。然后进行分析。[@more@]1.检查表是否分析。用OEM查看schema下的table,右栏可以显示last analyzed的日期。结果显示表已分析过。2.用set auotrace traceonly; set timing on 看执行计划以及执行时间,发现是full scan,运行时间大概是18秒。3.查看索引的选择性,所谓选择性高,是指列中某个值的个数在正个列中所占比例低。如1个
设置autotrace
网上关于autotrace的设置已有很多了。在这里补充1点,当client的版本在9.2.0.3以下时,当发出set autotrace traceonly 后,会报sp-0618的错。即使将plustrace角色权限给了public也不行。此时,解决方法是:1.以sql用户登陆:sql>grant select on v_$session to public;就能解决了。[@more@]How to set up autotrace:以sys用户登陆:1.sql>@?/rdbms/admin/utlxplan.sql2.sql>create public synonym plan_table for plan_table;3.sql>grant all on plan_table to public;3.sql>@?/sqlplus/admin/plustrce4.sql>grant plus
在aix平台上监视cpu并实时获得sql语句 1
DBA会经常碰到以下问题:在夜间有时一些批处理程序会突然变慢,虽然可以通过statspack来获取当时的sql,但毕竟不是非常实时。因此,可以通过一些脚本来实现:我写这个脚本的思路是:1.环境设定:在oracle用户的$HOME目录下,创建cpu_alarm,pid,output三个目录。1.1 考虑到有些主机上可能有多个sid的情况,因此,以oracle用户登陆主机,先通过以下命令:$ps -ef | grep ora_smon获取当前主机上所安装的oracle。并将sid名称放在ora.txt文件中。2.脚本内容 cpu_monitor.ksh:#!/usr/bin/ksh#-----------------------------------------------
用脚本在windows平台发邮件
对以下脚本写成*.vbs文件,然后写一个bat文件:cscript *.vbs,用taskschedule调用。 Set objEmail = CreateObject("CDO.Message") objEmail.From = "tpemsbrs@avon.com" objEmail.To = "vincent.lee@avon.com,lias.liang@avon.com,kenny.wu@avon.com,benny.zhang@avon.com" objEmail.Subject = "TPEMSBRS standby database status"' objEmail.Textbody = Computer & " " & objLogicalDisk.DeviceID & " free disk space is " & FreeMegaBytes & "
查看session信息的sql
虽然用oem查session比较方便,但有时用sql能比较快获得信息,尤其在连接数已经满的情况下,为了进行诊断,用sql往往能快速找到问题所在。selectsubstr(s.username,1,18) username,substr(s.program,1,15) program,s.sid,s.serial#,s.machine,s.status,s.logon_time,decode(s.command,0,'No Command',1,'Create Table',2,'Insert',3,'Select',6,'Update',7,'Delete',9,'Create Index',15,'Alter Table',21,'Create View',23,'Validate Index',35,'Alter Database',39,'Create Tablespace',41,'Drop Tablespace',40,'Alter Tablespace',53,'
数据迁移后sequence的处理
有时候需要将schema的数据从这个库导到别的库上。若原来的schema存在sequence,则导入到别的库后就会发生变化,若应用需要使用这些sequence,就会发生错误。如何处理:[@more@]案例:将db-a的schema a导入到db-b,schema a的密码在db-a,db-b是一样的。1.用a在toad登陆到db-a:选database-export-sequence.在弹出的界面上:选:start sequences at NextVal+1include drop statement并定义一个文件进行保存,按ok后会产生一个sql文件。2.用schema a,以sqlplus登陆到db-b然后sql>@刚才保存的文件.sql就可以了。
失效对象的处理
在10g的dbconsole或在9i的oem(schema-源类型-各包,触发器等)中,都可以发现已失效的对象。有些是跟系统对象有关,有的跟应用的schema有关。发现这种情况时,可以对数据库所有的对象先编译一下:sqlplus "sys/password as sysdba"sql>@?/RDBMS/ADMIN/UTLRP.SQL要以sys用户才能顺利执行完。执行完后,可以再检查一下,如果还是编译失效,就可以利用oem中菜单-对象-创建报告 --选择相关项,报告会产生在你的客户端机中,非常方便。此对象报告还可以对其他项进行report,很好用。当然,还可以更好的诊断工具rda进行诊断。放在下
administer resource manager/sys.sys_group 的授权
今天台湾同事说执行一个脚本时出错,脚本出错的2个命令是:GRANT ADMINISTER RESOURCE MANAGER TO DM_ADMIN;GRANT EXECUTE ON SYS.SYS_GROUP TO DM_ADMIN;先处理第一个:1.报错信息:ERROR at line 1:ORA-00990: missing or invalid privilege解决:先执行:select * from dba_sys_privs where privilege like 'ADMINISTER%';结果如下:GRANTEE PRIVILEGE ADM------------------------------ ---------------------------------------- ---DBA ADMINI
exp 命令中的query参数
当我们希望只导表的某一部分时,可以用query参数来导。其实就是query加where语句的条件部分,但前提是类似于select * from tab where .....命令格式如下:exp table.'s owner/passwd@service_name tables=(table_names) query="where....."不知道为什么格式显示不出来,应该在等号后面先写一个反斜杠,接着是双引号,然后是where子句,再斜杠,最后以双引号结尾。这是在windows格式下的,注意一下query后的格式。[@more@]exp table.'s owner/passwd@service_name tables=(table_names) query="where..."
如果一台aix的机器不让客户端用reflectionx直接连,应该怎么办?
1.可以用windows客户端,拿reflectionx先连接到一台允许介入的服务器中2.出现图形界面后,以root用户敲2.1#ssh -x 远程服务器的ip 敲密码后进入远程服务器2.2#export DISPLAY=windows客户端的ip:0.02.3#xterm 开启远程服务器的图形终端界面[@more@]
利用profile进行资源控制
在一台测试机上,连接时经常报连接数超出最大限制。1.诊断:select sid,username,machine,terminal from v$session.发现连接都来自同一台机器。进行询问,原来在进行压力测试。2.由于压力测试会影响其他用户连接,于是打算用profile进行资源限制:2.1.sqlplus "/as sysdba" --> show parameters resource_limit;2.2如果不为true,用alter system set resource_limit=true;2.3用toad或用命令创建profile: create profile test limit sessions_per_user 2; 2.4 alter user username profile profile_name;将profile与用户绑定。
SYS.LT_EXPORT_PKG程序包出错导致exp备份失败
收到error log,查了一下错误信息,报以下错误DATA COLLECTED===============EXP-00008: ORACLE error 4068 encounteredORA-04068: existing state of packages has been discardedORA-04063: package body "SYS.LT_EXPORT_PKG" has errorsORA-06508: PL/SQL: could not find program unit being calledORA-06512: at line 1EXP-00083: The previous problem occurred when calling SYS.LT_EXPORT_PKG.schema_info_exp原因:WORKSPACE , XDB 这2个schemas有invalid objects。用oem看程序包可以看到失效的object。解决方法:Run
Dataguard-备机产生gap的解决方法
有时候因为网络或备份故障等原因,主机所产生的归档日志无法传到备机上,这个时候备机就产生了gap。对于这种情况,应该如何解决?需要注意的是,一旦产生gap,即使gap之后的archive log能正常传到standby库中,standby库并不会对后继传来的日志文件做apply。只有通过对standby做recover把从产生gap的第一个文件到最新的archive log文件都apply了才能做到2个库一致。1.在primary库中重新创建standby controlfile。并将它拷贝到standby库中。位置与以前同。ALTER DATABASE CREATE STANDBY CONTROLFILE AS '[path][ctl_file_name].CTL';2.进入
拿oracle原厂培训的教材跟itpub上的教材对了一下
同事到oracle参加10g的new features原厂培训,拿教材跟itpub上的对了一下,居然是一样的,这样就不用拿着厚厚的3本书啃了.http://www.itpub.net/522252.htmlhttp://www.itpub.net/showthread.php?s=&threadid=456196OU也居然没拿这些url说事儿,太宽容了.一哥们儿还发来了题库,网络真是.....强![@more@]