Oracle系统统计信息
1. 什么是系统统计信息? 我们知道在CBO环境中,Oracle依赖于对象的统计估算成本,以选择正确的SQL执行计划。从Oracle9i开始CBO计算成本(cost)的算法有了变化。Oracle9i以前更多考虑IO(多块读与单块读)成本;9i以后,强化了cpu速度对成本估算的影响。 Oracle提供了dbms_stats.gather_system_stats来收集系统统计信息。系统统计信息让优化器考虑服务器的IO与CPU性能及其利用率,作为计算成本的依据;为每一个可选的执行计划估算IO与CPU成本。因而对于CBO来说,获得准确的系统统计信息对于正确估计成本是非常重要的。Oracle收集的系统
一个性能调优的案例
一.为什么升级总是出问题?云南一市级人民医院是我们在云南目前最重要的客户之一,以前去过两次,留下的映象也比较好。此次HIS升级到10.26,云南公司的同事也做了不少的准备,可还是出问题了。问题流转到我这里之前,同事们已经处理了大部分的应用的问题。但目前性能还是比较差,已经影响了了医院的正常使用。主要表现在几个方面:1. 其中一个节点的cpu长期都在90%以上;一些关键的业务出现了严重的性能问题。2. $ORACLE_BASE所在的盘,由于产生大的system state dump文件,时常被充满,导致实例停止响应,感觉象down机一样。今天是周末,接
在rhel下错误设置了lvm卷组集群属性的处理
在rhel中使用vgchange命令,在非集群环境将vg设置集群属性后,对vg的所有操作都出现"Skipping clustered volume group data"的提示,使用vgremove删除都不可以,出现相同的提示:[@more@] :[root@rhel54 ~]# vgchange -c y data[root@rhel54 ~]# vgdisplay data Skipping clustered volume group data[root@rhel54 ~]# vgremove data Skipping clustered volume group data RedHat的官方说明如下: However, a local volume group has been incorrectly set up as clustered, and there isnot a cluster set up for the
DBA_HIGH_WATER_MARK_STATISTICS视图
从Oracle10g开始,增加了DBA_HIGH_WATER_MARK_STATISTICS视图,用以记录段的HWM信息,Oracle文档对这个视力的描述如下:[@more@]DBA_HIGH_WATER_MARK_STATISTICSDBA_HIGH_WATER_MARK_STATISTICS displays information about database high-watermark statistics.ColumnDatatypeNULLDescriptionDBIDNUMBERNOT NULLIdentifier of the database for which the high-watermark statistics are trackedNAMEVARCHAR2(64)NOT NULLName of the high-watermark statistic (See Table 4-2)VERSIONVARCHAR2(17)NOT NULLDatabase version in which the
Oracle的并行操作[转]
The full list of Oracle parallel execution features currently includes the following · Parallel Query · Parallel DML · Parallel DDL · Parallel Data Loading · Parallel Recovery · Parallel Replication · How Parallel Execution Works Operations That Can Be Parallelized [@more@]Oracle can parallelize operations that involve processing an entire table or an entire partition. These operations include: · SQL queries requiring at lea
11g中direct path read事件等待很高的一个案例
在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了.最近遇到了这样一个测试环境的案例,表现为direcy path read事件等特很高.[@more@]主机性能数据 Operating System Statistics - Detail Snap Time Load %busy %user %sys %idle %iowait 22-1月 18:00:280.00 22-1月 19:00:450.00 1.56 1.20 0.36 0.00 98.44 Cpu的的sys和user调用都比较低,cpu主要是消耗在io的等待上。 数据库性能 性能情况通过主要通过AWR报告来体现. 后台的job每1小时对数据库的性能数据进行采样,本报告中选取了系
用Table变量返回多行数据
要让 PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成。REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行具体化。Oracle 9i 通过引入的管道化表函数纠正了后一种情况。下面是一个具体的例子:create type PersonInfo as object(id number,name varchar2(200)); create type PersonInfoArray as table of PersonInfo ;create or replace function GetPersonInforeturn PersonInfoArray pipelined is v_PersonInfo PersonInfo;begin for v_count in 1..30
一次RAC节点宕机的解决过程
1. 情况介绍海哥反馈大连某院的Oracle 10g RAC平均每个月都要宕机一次,一个节点自动重启,奇怪的是故障的时间没有规律,有时还发生在基本上没有业务的凌晨。医院目前使用的Windows 2003 Server(32 Bit),数据库版本是10.2.0.3。另外海哥还反映系统还伴有Ora-04031错误。2. 问题的诊断过程。 由于同时出现了down机和ora-04031错误,首先判断是不是由于内存耗尽,导致的一个节点down机,之前在32bit系统中遇到过类似错误;但由于down机也可能发生在系统压力很小的凌晨,这一判断首先被推翻。 向海哥索取了两个节点的alertSID
查询gv$session引发大量的PX Deq Credit: send blkd事件
一个用户提交了一个awr报告,发现有大量的PX Deq Credit: send blkd事件:Top 5 Timed Events EventWaitsTime(s)Avg Wait(ms)% Total Call TimeWait ClassCPU time 3,023 43.0 db file sequential read320,8001,205417.1User I/OPX Deq Credit: send blkd4529982,20714.2Otherlibrary cache lock19,034425226.0Concurrencylatch: library cache3,0233661215.2ConcurrencyOracle对这个事件的描述:This wait event indicates that we are doing a non-blocking test to see if any channel has returned a message. We should see that al
NFS保存rman备份时的mount选项
今天在用使用nfs保存rman备份时,出现如下提示,意思是nfs的mount参数不对:RMAN> backup datafile 1 format '/nfs/archive/%s_%U_%P.dbf';Starting backup at 15-SEP-09using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=146 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbfchannel ORA_DISK_1: starting p
mysql的安装
基本上按照这个链接的说明安装成功:http://tech.sina.com.cn/s/2008-05-05/07372174929.shtml过程只遇到了一个问题,在启动mysqld的时候,出错:[root@rhel local]# mysqld_safe 090624 22:09:18 mysqld_safe Logging to '/usr/local/mysql/data/rhel.err'.090624 22:09:18 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data090624 22:09:18 mysqld_safe mysqld from pid file /usr/local/mysql/data/rhel.pid ended日志中的错误为:/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errc
断电引起ora-01200的数据库恢复
一个10g的库断电后,打开时出现ora-01200的错误:SQL> connect / as sysdba;已连接到空闲例程。SQL> startup;ORACLE 例程已经启动。Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 155192196 bytes Database Buffers 448790528 bytes Redo Buffers 7135232 bytes
linux下添加10g rac节点OUI-10009错误的解决办法
一linux下的10g RAC环境,使用$ORACLE_HOME/oui/bin/addNode.sh在新节点上安装数据库软件时,出现OUI-10009错误: OUI-10009 --> There are no new nodes to add 提示没有新添加的节点,可以使用如下命令添加节点 ./addNode.sh -silent "CLUSTER_NEW_NODES={rac3}" -logLevel trace -debug 如果节点名称是已经删除过的节点,安装时会提示已经安装了节点,这时候可以使用下列命令先更新节点信息,再安装新节点: $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=Oracle_home "CLUSTER_NODE
linux下网卡bonding[转]
所谓bonding,就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。Kernels 2.4.12及以后的版本均提供bonding模块,以前的版本可以通过patch实现。[@more@]1.确认你目前使用的网卡,检查/etc/sysconfig/network-scripts目录下以ifcfg-开头的文件,应该为eth0, eth1...2. 配置虚拟网卡bond0可以使用DHCP,也可以配置static IP,最好通过vi编辑配置文件引用[root@server1 ~]# cd /etc/sysconf
断电后回退段损坏引起的ora-00600错误修复一例
一用户的817的库启动时出现如下错误:Recovery of Online Redo Log: Thread 1 Group 3 Seq 1608 Reading mem 0 Mem# 0 errs 0: D:ORACLEORADATAORACLEREDO01.LOGTue Feb 24 15:46:59 2009Errors in file D:oracleadminoraclebdumporacleSMON.TRC:ORA-01595: error freeing extent (6) of rollback segment (3))ORA-00600: internal error code, arguments: [4193], [291], [299], [], [], [], [], []Tue Feb 24 15:47:17 2009Completed: alter database open可以看到,数据库已经正确打开,但由于2号回退段损坏,导致了ora-01600 [4193]
分区交换的速度为什么快?
Oracle的分区交换功能,用来实现对数据“滑动窗口”操作,就是可以把数据从分区表中指定分区移出到一个表,或把一个表的数据移入到指定的分区中。[@more@] 分区交换的速度是非常快速的,只是数据字典的更新,在移动过程中,数据行的rowid都不会发生变化。实验过程如下:1. 创建分区表SQL> Create Table range_example(Id Number,Name Varchar2(20),DeptNO Varchar2(20)) 2 Partition By List(DeptNO) 3 ( 4 Partition p_mz Values('MZ'), 5 Partition p_zy Values('ZY') 6 ) 7 ;Table created2.插入数据,表有两个
使用可传输表空间向rac环境迁移数据
可传输表空间,是一种快速的转移数据的方式,基本过程如下:1、检查表空间的自包含性2、使用exp(expdp)导出表空间的元数据,这个过程很快3、将表空间置于read only模式,防止数据写入4、将包含元数据的dmp文件和表空间数据文件拷贝到目标库上5、使用imp(imdp)导入到元数据例子中说明了,如何使用可传输表空间向rac环境迁移数据.[@more@]可传输表空间,是一种快速的转移数据的方式,基本过程如下:1、检查表空间的自包含性2、使用exp(expdp)导出表空间的元数据,这个过程很快3、将表空间置于read only模式,防止数据写入4、将包含元数据的dmp文件和表
将表导入到其他用户的impdp命令
今天需要另一个数据库的用户表导入到当前库中,但用户名不相同,以前exp/imp时,可以指定fromuser和touser来解决,在expdp中也提供了类似的解决方法[@more@]impdp system/zlsoft dumpfile=expdp:EXPDP_ZLHIS.DMP nologfile=y tables=zlhis.dept remap_schema=zlhis:scott remap_tablespace=ZL9BASEITEM:users,zl9indexhis:users,zl9indexmtl:users table_exists_action=truncate exclude=object_grant几个重要参数的说明一下:1、remap_user 重新映射用户,格式: source_user1:target_user1,source_user2:target_user22、remap_tablespace 重新映
Oracle 10g rac升级(10.2.0.1 Rac到10.2.0.4)
简要介绍了Linux下oracle10g rac环境的升级过程环境如下: OS: Linux AS 4 U4 32 bitDBMS: Oracle 10.2.0.1节点: IBM 3655, 主机名分别为rac01、rac02、rac03存储: EMC Celerra NS40 ,采用ASMword文档包括完整的图片,下载地址:http://studycow.itpub.net/resource/37461/28197[@more@]三节点Oracle 10.2.0.1 Rac升级到10.2.0.4环境: OS: Linux AS 4 U4 32 bitDBMS: Oracle 10.2.0.1节点: IBM 3655, 主机名分别为rac01、rac02、rac03存储: EMC Celerra NS40 ,采用ASM补丁下载地址:ftp://updates.oracle.com/6810189/p6810189_10204_Lin
将审计记录保存到xml文件
在Oracle 10g中audit_trail增加了一个新选项:xml,与os选项不同的是,会将审计记录记录到操作系统的xml文件中。[@more@] 在Oracle 10g中audit_trail增加了一个新选项:xml,与os选项不同的是,会将审计记录记录到操作系统的xml文件中。SQL> show parameter audit;NAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string /u01/app/oracle/admin/orcl/adumpaudit_sys_operations boolean FALSEaudit_syslog_level stringaudit_trail string DBSQL> alter system se