Script:找出ASM中的Spfile参数文件

以下脚本可以用于找出ASM存储中的Spfile参数文件,因为使用asmcmd去查找很不方便,而spfile丢失又是很头大的事情, 所以有一个脚本代劳可以省不少功夫呢!

 

 

— listspfiles.sql — Purpose: Sample script to list spfiles kept in ASM instance — Usage: This should be run against an ASM instance, — not a database instance. — — cut here –%<—-%<—-%<—-%<—-%<—-%<– –list all spfiles set lines 120 col full_path for a110 SELECT full_path, dir, sys FROM (SELECT CONCAT(‘+’||gname,SYS_CONNECT_BY_PATH(aname,’/')) full_path, . . . → Read More: Script:找出ASM中的Spfile参数文件

如何诊断ORA-125XX连接问题

ORA-12560

以下这个Action Script是我收集的在解决ORA-125XX(如ORA-12560)这类网络链接故障时的一些思路,主要包括 现有的网络配置(client & server side)、监听日志、SQLNET Client trace等信息– How to troubleshooting ORA-125** connection issues:

 

 

# CHECK FIREWALL, WINDOWS FIREWALL , ANTI-Virus Software First ! ping hostname tnsping TNS trcroute TNS telnet <hostname> <port>

tracert hostname

client side sqlplus scott/tiger@TNS

& server side sqlplus scott/tiger@TNS

cat /etc/hosts cat /etc/resolv.conf cat /etc/nsswitch.conf ipconfig . . . → Read More: 如何诊断ORA-125XX连接问题

Oracle数据库实用脚本

以下是Maclean.Liu所编写或收集的Oracle数据库实用脚本的列表,在这里分享一下:

 

Script:收集Enterprise Manager Grid Control/Agent/Database Control诊断信息 Script:收集Exadata诊断信息 Script:收集RAC诊断信息 Script:收集自动SGA内存管理ASMM诊断信息 Script:Collect vip resource Diagnostic Information 11g新特性:hangdiag.sql实例hang诊断脚本 Script:verify Oracle Object timestamp discrepancy Script:SQL调优健康检查脚本 Script:列出本会话的细节信息 利用rowid分块实现非分区表的并行update与delete Script:计算Oracle Streams进程所占用的内存大小 利用RMAN检测数据库坏块的脚本 Script:利用外部表实现SQL查询Oracle告警日志Alert.log Script: 收集RAC DRM 诊断信息 Script:10g中不用EM显示Active Session Count by Wait Class Script:数据库最近的性能度量 Script:收集数据库中用户的角色和表空间等信息 Script:收集介质恢复诊断信息 Script:收集Flashback Database Log诊断信息 Script:列出Oracle每小时的redo重做日志产生量 Script:收集11g Oracle实例IO性能信息 Script:检查数据库当前是否有备份操作在执行中 Script:List Schema/Table Constraints Script:RAC Failover检验脚本loop.sh . . . → Read More: Oracle数据库实用脚本

Script:收集RAC诊断信息

以下脚本可以用于汇总RAC诊断信息, 并非每一个输出或者每一个日志都要阅读,在问题诊断时可以有针对性地查看, 如果是远程协助的会,可以让用户收集完打包 ,这样省去多次交互的时间:

 

 

– Cluster 启动状态 – hostname – uptime – vmstat iostat nmon OS stats – /etc/sysctl.conf /etc/system vmo -a no -a – /etc/inittab – /etc/init.d/init.crs – /etc/init.d/init.crsd – /etc/init.d/init.cssd – /etc/init.d/init.evmd – olsnodes – crsctl check css – crsctl check crs status – crsctl check crsd status – crsctl check . . . → Read More: Script:收集RAC诊断信息

Script:收集自动SGA内存管理ASMM诊断信息

以下脚本可以用于收集自动SGA(sga_target>0)内存管理ASMM下的实例诊断信息:

 

spool auto_sga_diag.log set line 190 pagesize 1400 SELECT a.SGA_MEM + b.PGA_MEM “TOTAL_MEMORY” FROM (SELECT SUM(current_size) / 1024 / 1024 “SGA_MEM” FROM v$sga_dynamic_components, (SELECT SUM(pga_alloc_mem) / 1024 / 1024 “PGA_MEM” FROM v$process) a WHERE component IN (‘shared pool’, ‘large pool’, ‘java pool’, ‘streams pool’, ‘DEFAULT buffer cache’)) a, (SELECT SUM(pga_alloc_mem) / 1024 / 1024 . . . → Read More: Script:收集自动SGA内存管理ASMM诊断信息

Script:Collect vip resource Diagnostic Information

以下脚本可以用于收集 Oracle RAC中vip 资源或其他CRS resource的诊断信息:

 

action plan: ./runcluvfy.sh stage -post crsinst -n all -verbose ./runcluvfy.sh stage -pre crsinst -n all -verbose or cluvfy stage -post crsinst -n all -verbose cluvfy stage -pre crsinst -n all -verbose 1. Please upload the following logs of all two nodes: $CRS_HOME/log/<nodename>/*.log $CRS_HOME/log/<nodename>/crsd/*.log $CRS_HOME/log/<nodename>/cssd/*.log $CRS_HOME/log/<nodename>/racg/*.log $CRS_HOME/log/<nodename>/client/*.log $CRS_HOME/log/<nodename>/evmd/*.log /etc/oracle/oprocd/*.log.* or . . . → Read More: Script:Collect vip resource Diagnostic Information

11g新特性:hangdiag.sql实例hang诊断脚本

11g中引入了hangdiag.sql 这个脚本来帮助Oracle Support 用来收集诊断实例hang住所需要的diagnostic信息,这个脚本直接存放在11g 以后的$ORACLE_HOME/rdbms/admin目录下,无需用户另外下载。

 

该脚本用于收集单实例的hang诊断信息还是很不错的,如果是RAC环境的话推荐使用racdiag.sql这个脚本。

 

值得一提的是 hangdiag.sql会做 11g中独有的(oradebug dump hangdiag_header 1)并将v$wait_chain的源信息x$ksdhng_chains文本形式输出, 之后会做ashdump和systemstate(level 267 可能耗时较长)的dump转储操作,这样获得的trace文件信息就很全面了。

 

hangdiag.sql:

 

[oracle@vrh2 ~]$ cat $ORACLE_HOME/rdbms/admin/hangdiag.sql Rem Rem $Header: hangdiag.sql 08-jun-2007.02:06:43 amysoren Exp $ Rem Rem hangdiag.sql Rem Rem Copyright (c) 2007, Oracle. All rights reserved. Rem Rem NAME Rem hangdiag.sql – Hang Diagnosis script Rem Rem . . . → Read More: 11g新特性:hangdiag.sql实例hang诊断脚本

利用rowid分块实现非分区表的并行update与delete

大表中海量历史数据的更新与删除一直是令DBA非常头痛的事情,在表已经分区的前提下我们还可以利用并行或者truncate parition等手段来为UPDATE或者DELETE提速, 但是如果对象是普通的非分区对表(non-partitioned heap table)的话,似乎就没有太好的加速方法了, nologging或parallel 对非分区表都没有效果。

 

之前我也有介绍过一个利用rowid将非分区表分割成指定数量个区间块的方法,见<Script:partition table into rowid extent chunks>;利用该脚本可以获取到这些分割后的区间块的起始rowid和结尾rowid,之后利用between start_rowid and end_rowid的条件构造多条DML语句, 因为这些DML语句所更新的数据都是在互不相关的区间内的,所以可以在多个终端内并行地运行这些DML语句,而不会造成锁的争用或者Oracle并行执行协调(Parallel Execution coordinator ) 所带来的一些开销。

 

为了加深理解,我们来实践一下<Script:partition table into rowid extent chunks>中提到的方法:

 

SQL> select * from v$version; BANNER —————————————————————- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bi PL/SQL Release 10.2.0.1.0 – Production CORE 10.2.0.1.0 Production TNS . . . → Read More: 利用rowid分块实现非分区表的并行update与delete