dbms_stats and analyze
讨论一: 使用dbms_stats 还是analyze 自从Oracle8.1.5引入dbms_stats包, Oracle及专家们就推荐使用dbms_stats取代analyze。 理由如下: 1. dbms_stats可以并行分析 2. dbms_stats有自动分析的功能(alter table monitor ) 3. analyze 分析统计信息的有些时候不准确 第1,2比较好理解,且第2点实际上在VLDB(Very Large Database)中是最吸引人的;3以前比较模糊,看了metalink236935.1 解释,analyze在分析Partition表的时候,有时候会计算出不准确的Global statistics 。 原因是dbms_stats会实在的去分析表全局统计信息(当指定参数);而a
alter system flush shared_pool
使用Flush Shared Pool缓解共享池问题Oracle, 深入解析Oracle, 读书笔记 十二月 3rd, 2009 原创文章,转载请注明: 转载自dbtan 谈DB本文链接地址: http://www.dbtan.com/2009/12/uses-flush-shared-pool-to-alleviate-the-sharing-pond-question.html使用Flush Shared Pool缓解共享池问题: 前面提到,本质上ORA-04031多数是由于SQL编写不当引起,所以如果能够修改应用绑定变量是最好的解决之道。当然如果应用不能修改,或者不能强制变量绑定,那么Oracle还提供一种应急处理方法,强制刷新共享池。alter system flush shared_pool;刷新共
lock and kill
通过v$locked_object视图可以初步判断可疑锁定。或者用dba_outstanding_alterts视图(这个好像10g才有)select object_name,object_type,reason,instance_name from dba_outstanding_alerts;select sid,serial#,sql_id from v$session where sid=853 and serial#=33740;sid serial# sql_id-------------------------------查看是什么SQL语句引发的:sql> select * from v$sql where sql_id='...';让后在KILLsql>alter system kill session 'sid,#serial'; 这里输入要kill的sid,#serial号码;[@more@]
table or view not exits
在执行drop user AAA;删除用户时,出现错误:ORA-00604:递归SQL层1出现错误ORA-00942:表或视图不存在解决办法:第一步,设置sql_trace=true,以便在运行sql语句后在D:oracleadminORADB00udump下生成跟踪文件。alter session sql_trace=true;第二步,运行drop user AAA;出错后,查看最新的跟踪文件,可以看到最后几行中显示在执行delete from system.AQ$_INTERNET_AGENT_PRIVS where ....时出现的ORA-00942:表或视图不存在这个错误。执行desc system.AQ$_INTERNET_AGENT_PRIVS也显示表不存在说明表AQ$_INTERNET_AGENT_PRIVS不存在,只
shrink使用分析
从10g开始,oracle开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理 (ASSM),就可以使用这个特性缩小段,即降低HWM。这里需要强调一点,10g的这个新特性,仅对ASSM表空间有效,否则会报 ORA-10635: Invalid segment or tablespace type。shrink space语句两个阶段都执行。 shrink space compact只执行第一个阶段。如果系统业务比较繁忙,可以先执行shrink space compact重组数据,然后在业务不忙的时候再执行shrink space降低HWM释放空闲数据块。 shrink必须开启行迁移功能。alter table table_name enable row movement ;注意:
utlrp.sql和catpatch.sql两个脚本的作用
$ sqlplus '/as sysdba' @$ORACLE_HOME/rdbms/admin/utlrp.sqlutlrp.sql脚本可以在数据库运行的状态下执行以编译、数据库中的invalid对象. oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。--打完patch后重建数据字典视图脚本catpatch.sql为了保证系统的的数据词典的完整性和有效性,最好的打patch后在migrate状态下运行catpatch.sqlsql> shutdown immediatesql> startup migratesql> @$ORACLE_HOME/rdbms/admin/catpatch.sqlsql> shutdown immediatesql> startup为加快速度,可临时调大这
pupbld.sql 错误解决
oracle9isqlplus /nologconn peng/peng@mispeng报错:SQL> conn peng/peng访问 PRODUCT_USER_PROFILE 时出错警告: 未加载产品用户概要文件信息!您需要将 PUPBLD.SQL 作为 SYSTEM 运行已连接。SQL> conn peng/peng@mispeng已连接。但是用pl/sql 用户peng登陆的时候,不会报错。解决办法:先找到pupbld.sql路径$ORACLE_HOME/sqlplus/admin/pupbld.sql@$ORACLE_HOME/sqlplus/admin/pupbld.sql[@more@]
statspack 安装总结
个人QQ:149196034 欢迎联系[oracle@DELL admin]$ pwd/oracle/product/database/rdbms/adminSQL> select instance_name,host_name,version,startup_time from v$instance;INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME---------------- ---------------------------------------------------------------- ----------------- ------------mis DELL 9.2.0.6.0 2010-9-2 12:1:
ora_604错误解决
个人QQ 149196034 欢迎朋友加入SQL> create table t_604 as 2 select * from 3 (select object_type,to_char(avg(object_id),'999999.999') from dba_objects 4 group by object_type 5 order by 2 desc) 6 where rownum<10;create table t_604 asselect * from(select object_type,to_char(avg(object_id),'999999.999') from dba_objectsgroup by object_typeorder by 2 desc)where rownum<10ORA-00604: 递归 SQL 层 1 出现错误ORA-01401: 插入的值对于列过大 分析错误:oralce 将to_char(avg(object_id),'999999.
smit快捷键和参数
smit+这些快捷键参数 errpt generate an error report shutdown stopt the system storage managing storage and file systemlvm logical volume managerfs file systemfilemgr files and directioriesrds removable disk managementbacksys system backup managermksysb make
v$session and v$process and lock ,wait,kill 总述
个人qq 149196034v$session 真是个好动态性能视图,可以获得很多有用的信息! 确定要kill的用户:SID,SERIAL#,以及确定kill process v$session SADDR: session address SID: session identifier,常用于连接其它列。 SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。 AUDSID: audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid'); PADDR: process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个
rman——备份实际应用概述
个人联系方式:QQ149196034rman备份1:脚本解析:数据库0级全备份,包括控制文件备份,备份7天以内的归档日志,检查备份,删除过期备份;run{ allocate channel cha1 type disk; backup incremental level 0 format '/rmanbak/inc0_%d_%s_%p_%u_%T.bak' tag monday_inc0 database include current controlfile; sql "alter system archive log current"; backup format='/rmanbak/%d_%s.arc' archivelog from time='sysdate-7' until time='sysdate'; release channel cha1; }crosscheck
linux:oracle10g调整SGA
oracle10g调整SGAoracle10g调整10g很简单,oracle8i需要调整的参数就很多。10g需要调整的两个参数为:sga_max_sizesga_target1:查看数据库用的spfile,还是pfile;SQL> show parameter spfile;NAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string /oracle/product/10.2.0/dbs/spfilezxhs.oraVALUE存在,说明用的spfile;2:查看SGASQL> show parameter s
db_recovery_file_dest_size设置
个人QQ 149196034 希望技术朋友家人!今天一查看alert.log,发现归档日志很多,db_recovery_file_dest_size设置是初始值2G,used 100% DELETE EXPIRED commands. system command was used to delete files, then use RMAN CROSSCHECK and4. Delete unnecessary files using RMAN DELETE command. If an operating reflect the new space.3. Add disk space and increase db_recovery_file_dest_size parameter to BACKUP RECOVERY AREA command.2. Back up files to tertiary device such as tape using RMAN then consider chan
ipcs 信号量
ipcs [-m/-s/-q]默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列[root@DELL etc]# ipcs -s------ Semaphore Arrays --------key semid owner perms nsems 0x270b86a8 7340032 oracle 640 152 0x790ac0a9 5046273 root 666 1 0x270b86a9 7372802 oracle 640 152 0x270b86aa 7405572 oracle 640 152 [root@DELL etc]# ipcs -m------ Shared Memory Segments --------key sh
spfile和pfille 区分、修改、RMAN备份
1:pfile和spfile概念oracle 8I 参数文件用的是PFILE 需要手工修改参数文件 $ORACLE_BASE/admin/mis/scripts/init.oraORACLE 9I 参数文件用的是SPIFLE 动态修改 alter system set processes=500 scope=spfile;spfile 分为动态参数和静态参数 静态参数需要在参数文件中修改,重启后生效;动态参数可以动态调整,修改后立即生效。2:启动方式sql>startup pfile='/oracle/admin/mis/pfile/init.ora';oracle9i第一次启动用PFILE,以后全部用spfile spfile 必须由pfile创建sql>startup fpile='/oracle/admin/mis/pfil
FLASHBACK 闪回查询
create table peng_tt_sms_mt_em as select * from mover.tt_sms_mt_em;select count(*) from peng_tt_sms_mt_em t9506select count(*) from peng_tt_sms_mt_em twhere sms_mt_sn like '137%';858SQL> delete peng_tt_sms_mt_em 2 where sms_mt_sn like '137%';858 rows deletedSQL> commit;Commit completeSQL> select count(*) from peng_tt_sms_mt_em; COUNT(*)---------- 8648查找数据库SCN变化select name,first_change# fscn,next_change# nscn,first_time from v$archived_log......................../orac
VI编辑常用命令
命令功能x删除光标所在处的一个字符dw删除字(或者删除字的一部分,从光标所在处到字结尾)dd删除光标所在行D删除光标光标所在处之右的行:w保存文件,不退出vi:w new_filename保存到文件new_filename中:wq保存修改退出vi:x保存修改并退出vi:set nu显示行号:set nonu隐藏行号:set ic设置搜索时忽略大小写:set noic搜索时对大小写敏感:set list显示不可视字符:set nolist不显示不可视字符[@more@]
sql_trace跟踪与分析
Sql-trace 跟踪与诊断 我的联系方式:qq 149196034使用sql_trace工具我遇到的一个问题是:在bs结构中,终端用户在select查询的时候,我看到的都是一个用户名,虽然SID,SERIAL#不同,但是我不知道如何确定是哪个用户产生的问题。希望有人能帮我!1:选择需要跟踪的用户2:模式分为:跟踪当前用户,跟踪别的用户3:停止trace跟踪3:产生trace文件,路径在udump/4:tkprof格式化trace文件5:分析trace文件,如何解析trace文件介绍6:解决sql问题 1select,开启当前用户跟踪方式1select sid,serial#,username from v$session where username i
AIX实践三
个人QQ 149196034 希望ORACLE多多交流Smitty -------强大的smitty,添加VG,LV,JFS System Management Move cursor to desired item and press Enter. Software Installation and Maintenance Software License Management Devices System Storage Management (Physical & Logical Storage) Security & Users Communications Applications and Services Print Spooling Problem Determination Performance & Resource Scheduling System Environ