表空间使用情况查询慢的处理
今天某个系统上的数据库,在日常维护的过程中发现,查询表空间使用情况,比其他的数据库明显慢,得等到10分钟左右才能得到查询结果。需查询发现是因为Oracle 10g的的新特性RECYCLEBIN机制导致的。按网上介绍执行了 SQL> purge recyclebin;语句,语句执行的很快,但是问题仍未解决。根据过去学习记忆,执行了如下语句:SQL> purge dba_recyclebin;该语句执行时间相当长,可能是因为业务时间执行原因导致的,最终问题得以解决。说明DBA有必要定期进行对Oracle回收站的清理操作。[@more@]如下为具体处理过程:[root@dbserv ~]# su
虚拟磁盘空间满后的扩展方法
前几天发现VMware虚拟机上安装Grid的数据/u01区满了,具体处理过程可以认为如下两个步骤。1、将VMware上的虚拟关闭后,在虚拟机OS对应的连接上单击鼠标右键,选择setting...,在弹出窗口中选中Hard Disk,在窗口右边会发生变化,其中选择utilities对应下拉菜单中的Expand,弹出表单中输入容量,然后单击Expand按钮。重启虚拟机后发现,分区没有扩展。这个时候我们目的可能是扩展已满的分区,但是实现起来要做的应该是在增加新的分区并将部分文件已过去来平衡空间问题。2、以上步骤完成后,具体新增分区并挂在的过程的操作步骤如下:[@m
Grid Control的启动及关闭步骤
实际上官方的文档上有详细的介绍,但是对于Grid Control不太熟悉人来说,不仅文档位置不好找而且总被那些通用$ORACLE_HOME变量所迷惑。还是决定在此做个备忘及分享。一、Stopping Grid Control and All Its Components[oracle@ocm2 ~]$ cd $ORACLE_HOME[oracle@ocm2 db10g]$ cd ..[oracle@ocm2 OracleHome]$ lsagent10g db10g oms10g进入OMS主目录:[oracle@ocm2 OracleHome]$ cd oms10g/[oracle@ocm2 oms10g]$ cd bin/[@more@] 1、停止OMS服务[oracle@ocm2 bin]$ ./emctl stop omsOracle Enterprise Manager 10g Release 10.2.0
Oracle Grid 503 Service Unavailable
Oracle 10g grid control 登录时报如下错误,从错误解释可以看出这是数据库连接问题。 Service Unavailable Servlet error: Service is not initialized correctly. Verify that the repository connection information provided is correct. 一般安装Grid Control的计算机重启后数据库没有自动启动原因会导致以上错误。处理办法很简单那,即启动监听和repository数据库。[@more@][oracle@ocm2 OracleHome]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sat Dec 8 17:21:58 2012
Oracle 中手工创建数据库的语法
前几天在网上看到了此文章,对建库脚本有了另一种收获,觉得很好。为了连接的丢失,决定在此转载。源文档 Oracle 8i:(还不支持 9i 的 AUM 特性,需要DBA 手工管理 Undo 表空间大小和回滚段数量)CREATE DATABASE"test"maxdatafiles 254maxinstances 8maxlogfiles 32character setUS7ASCIInational characterset UTF8DATAFILE'/opt/oracle/oradata/test/system01.dbf' SIZE 260M AUTOEXTEND ON NEXT 10240Klogfile '
手工配置listener.ora文件及TNS-01201错误
今天尝试手工编写listener.ora文件,结果遇到了如下错误:TNS-01201: Listener cannot find executable /u01/app/oracle/OracleHome/db10g/bin/extproc2 for SID PLSExtProc改了几次好容易才找到原因,虽然原因很简单,但是关于listener.ora及tnsnames.ora在内的文件有几个简单的语法需要注意,这个在官方文档上也有类此解释。[oracle@ocm1 admin]$ vi listener.oraLISTENER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ocm1)(PORT = 1521)) (ADDRESS=(PROTOCOL=ipc
Oracle建库必备的核心初始化参数
安装完数据库软件的下一步就是创建数据库,如果是手工创建数据库或对数据库所占用的内存进行一些合理化配置,就需要理解必备的建库初始化参数。 今天在手工建库过程中,发现$ORACLE_HOME/dbs/下的init.ora和initdw.ora两个文件内容也是值得读一遍。因此产生了Oracle建库必备的核心初始化参数有哪些的想法,总结如下:1、Oracle 9i 环境以1G物理内存为例,给OS留50%,其余用于Oracle。在Oracle9i提出了pga_agregate_target参数。 db_name = MY_DB_NAMEcontrol_files = (ora_control1, ora_control2)shared_pool_size = 50Mpga_
Oracle RAC安装前的磁盘分区及裸设备配置
在Oracle RAC安装中,前期配置是安装是否成功的关键。看过了不少文档,但是几乎都忽略了前期分区和裸设备的配置过程,因此简单的做了总结性记录。 安装环境为Oracle 10g for Linux x86 对独立存储(即,磁盘阵列),当存储工程师创建完raid group ,并在此group上分几个Lun,最终通过多路径封包后,轮到DBA上场动手了。Lun实际上从Linux OS的fdisk -l命令查看时,相当于一个磁盘。 1、对磁盘做分区 在这里使用fdisk命令,但是在对磁盘进行分区的时候需要注意,根据ORACLE的官方文档要求,需要从
exchange partition(转)
在线重定义表可以将一个非分区表转换成一个分区表。使用exchange 和split partition 也可以将一个非分区表转换为分区表。后者相比较前者,因为不受要转换的数据量影响,因此也更方便、快捷一些。exchange partition 操作能将一个分区表的一个分区和另一张表的数据互换,这里的互换是segment 头部信息的修改,数据block 并不做改动,因此,和数据量无关,速度会非常快;完成后,再可以按照需要将分区具体split 成多个分区。[@more@]步骤:1.建立一个空的,只有一个分区的同构分区表2.exchangepartition with table 来互换数据
通过RMAN Duplicate创建Oracle物理standby备库
关于Oracle10g Data Gurad的搭建,虽然官方和网上有很多资料,但是基于物理冷备份后复制到备库的搭建方式。在生产环境中我们可能更多要关注主库的可用性,这是Rman的高级备份恢复功能完全胜任这些需求。 主库服务器名:dbserv ip:192.168.2.3 主库DB_UNIQUE_NAME='testdb'备库服务器名:dbservdg ip:192.168.2.4 备库db_unique_name='testdbDG'数据库名:testdb DG安装过成大致分为如下几个重要步骤: 1、备库安装数据库软件(仅安装软件,不必创建数据库) 2、主库通过Rman进行全备份,备份脚本如下:run{ DELETE NOPROMPT expired arc
Oracle10g Grid Control客户端的安装
环境:redhat 5.7 64位 + Oracle10g_64 (10.2.0.1) 采用agentDownload脚本方式安装 agentDownload脚本在$OMS_HOME下的sysman/agent_download/version/os/agentDownload.os,具体如下: [root@dbserv linux_x64]# pwd /opt/oracle/OracleHomes/oms10g/sysman/agent_download/10.2.0.3.0/linux_x64 [root@dbserv linux_x64]# ls addons agent agentdeploy agentDownload.linux_x64 agent_scripts.jar oui prereqs response [root@dbserv linux_x64]# [@more@]在按需要安装agent客户端服务器上创建相应的
Linux 5.7现有数据库上安装Oracle10g Grid Control
环境:redhat 5.7 64位 + Oracle10g_64 (10.2.0.1)+linux_x86_64_grid_control_102030 实验目的:同一台服务器上先安装Oracle1g数据库软件并建立数据库(DBCA自定义方式),然后再安装Oracle10g Grid Cuntrol(安装模式为选用现有数据库)。 如下将数据库的安装并创建过程省略,从已建好数据库上进行相关检查和安装Grid Control开始... 一、数据库先决条件查询及修改 [oracle@dbserv ~]$ sqlplus / as sysdba SQL> select username from dba_users; USERNAME ------------------------------
v$session的来源
今天在研究enqueue、resource、lock等的关系时通过 select * from v$fixed_view_definition where view_name='GV$LOCK'; 找出定义,如下: select s.inst_id, l.laddr, l.kaddr, s.ksusenum, r.ksqrsidt, r.ksqrsid1, r.ksqrsid2, l.lmode, l.request, l.ctime, decode(l.lmode, 0, 0, l.block) from l, x$ksuse s, x$ksqrs r where l.saddr = s.addr
statspack的安装配置
我曾经疑惑在Oracle10g中能否使用statspack,后来得知可以。Oracle10g的AWR是不必安装的,但是statspack不是的。 另外,据说statspack所有功能是免费的,但AWR不是的,AWR只在Oracle10g后的版本中带。如下是在Oracle10g中statspack的安装配置过程。 安装前需要如下前期准备工作: 1、初始化参数: job_queue_processes需要大于0,这是为了能够建立自动任务,执行数据收集 timed_statistics需要至少配置为true,因为statspack就是要针对动态性能视图差值进行对比分析,只要timed_statistics=true时才能收集操作系统的计
参考SQL Tunning Adviser进行SQL优化
无论前面介绍的通过“手工”分析手段或通过“工具”分析手段,很多时候我们很有可能面临TOP SQL语句的优化,即SQL优化。很多情况下可以说数据库的优化就是SQL的优化,而SQL的优化呢?那就是的索引的优化! Oracle 10g开始有个SQL优化功能,即SQL优化顾问(SQL Tuning Adviser),这个工具可以作为SQL优化过程的参考依据,但并并不能全靠它。因为很多时候SQL的优化还涉及到业务特性,关键业务高峰期等多种因素。另外在使用过程中也发现,SQL Tuning Adviser很多时候对select类语句用处较大… 当我们通过前面介绍动态性能视
通过ASH诊断性能
除了“手工”诊断分析Oracle性能,也可以通过Oracle提供的各类工具来快速的进行分析诊断。 尤其是Oracle10g以来,采用工具的特性更强大及方便。接下来介如何利用ASH工具来诊断分析,生成ASH报告有两种方式: 1、脚本方式: 执行$ORACLE_HOME/rdbms/admin/ashrpt.sql脚本 [dbserv1]@dbserv-db1[/export/home/oracle/awr_dir]$sqlplus / as sysdba SQL> @$ORACLE_HOME/rdbms/admin/ashrpt.sql Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance ----------- -----------
通过dba_hist_*来进行诊断
在Oracle10g中增加了dba_his_*类统计信息表,在瓶颈时间过时了的时候,可以参考这些表来诊断瓶颈来源。 1、确定时间段: select * from dba_hist_snapshot where snap_id between &snapid1 and &snapid2 order by end_interval_time; 例如以上&snapid1 and &snapid2的值分别为10910 and 10913 2、对瓶颈时间段的等待时间进行汇总排序: select event,count(*) from dba_hist_active_sess_history where snap_id between 10910 and 10913 group by event order by
Oracle性能诊断视图总结
Oracle的事件分为等待时间和诊断事件两类,熟练这两类事件在无工具诊断会有很大的帮助。 一、Oracle等待事件的分类 通过如下查询可以看,如下的wait_class是由 SQL> select wait_class#, wait_class_id, wait_class 2 from v$event_name 3 group by wait_class#, wait_class_id, wait_class; WAIT_CLASS# WAIT_CLASS_ID WAIT_CLASS ----------- ------------- ---------------------------------------------------- 10 2396326234 Scheduler 4 38
异常断电导致RAC的一个节点CRS无法启动
环境:两个节点的Solaris10 + Oracle10g RAC + ASM环境 bash-3.00# su - oracle Oracle Corporation SunOS 5.10 Generic Patch January 2005 You have new mail. [dbserv2]@dbserv-db2[/export/home/oracle]$crs_stat -t -v Name Type R/RA F/FT Target State Host ---------------------------------------------------------------------- ora....SM1.asm application 0/5 0/0 ONLINE OFFLINE ora....B1.lsnr app
TNS-12537监听程序启不来
环境:Linux AS 4.7 + Oracle10g 一次的异常断电事故,导致Oracle数据库监听启动不起来,不如下错误: [oracle@dbserv ~]$ lsnrctl start LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 11-JUL-2012 10:50:13 Copyright (c) 1991, 2005, Oracle. All rights reserved. Starting /var/oracle/product/10.2.0/database/bin/tnslsnr: please wait... TNS-12537: TNS:connection closed TNS-12560: TNS:protocol adapter error TNS-00507: Connection closed Linux Error: 29: Illegal seek