大对象(blob)表或分区表的exp和imp
很多同事找我解决exp/imp时的问题,即对于大对象表或分区表的exp和imp,在imp时经常遇到ORA-00959: 表空间'XXX'不存在可先手工建立大对象表或分区表的表结构,将大对象表建在目标表空间上或把所有分区放在一个表空间中,imp的时候指定ignore=y即可[@more@]
hp unix中nfile参数的修改案例(rac模式的数据库)
nfile是HP UX的核心参数,目前设置为63498,通过sar -v 2 5发现目前值很接近nfile的最大值,很容易导致宕机,急需修改该参数,修改后需要重起数据库主机。目前数据库是RAC方式,可采用修改一台主机参数,另外一台主机承载业务的方式进行,正常情况下对业务没有影响。1准备工作分别对两台数据库主机做全备份。Makerecovery -Av 将主机系统备份到小磁带中2 操作步骤a.关闭 TEST_RAC01上的数据库监听和Oracle 数据库 lsnrctl stop 停止数据库监听sqlplus '/ as sysdba'shutdown immediate 停止数据库b、停用数据库卷组并关闭群集 在TES
几个参数配置的计算公式
sessions = 1.1 * processes + 5 transactions = 1.1 * sessionsdml_locks = 4 * transactions enqueue_resources > dml_locks + 20[@more@]
案例:利用shell脚本spool数据到一指定文
!/usr/bin/sh################################ 1.define #################################----------1.1_set param-------##数据库用户名ORA_USER=xxx#数据库用户密码ORA_PASS=xxx#登陆本地命名(也即@后的连接串)ORA_LOCAL_NAME=db80#存放导出数据的本地路径DataPath='/home/oracle/'echo "======================================================================="echo "database username: ${ORA_USER}"echo "the path of the file: ${DataPath}"##############################
最近在给学员授课时提到的一些细节问题归纳
1、数据库打开时的备份在表空间层完成,要完成整个数据库的打开备份,数据库中的所有表空间均需完成上述过程,数据库打开时的物理备份也被称为热备份或非一致性备份,数据库关闭时的物理备份也被称为冷备份或一致性备份。2、如果数据库在备份前已经正常关闭,那么在线日志文件对于完全恢复数据库就不是必须的。3、for a multifile tablespace,when one datafile is taken offline,only data contained inside that datafile cannot be accessed.the tablespace still remains available.4、need to restore archived redo log files to a
案例:oracle中case when的用法
例子1、最近支持同事做报表,特提供数据源的sql脚本,当中就用到了case when。主要的视图结构如下:create or replace view v_card_channel_count5( icpcode,sumarea,count1201,count1202,count1203,count1204,count1205, count1206,count1207,count1208,count1209,count1210,count1211,count1212, count1213,count1214,count1215,count1216,count1217,count1218,count1219,count1220, count1221,count1222,count1223,count1224,count1225,count1226,count1227,count1228, count1229,count1230
案例:有关job的管理
查询当前系统正在运行的job,可通过数据字典dba_jobs_running来获取,也可采用如下的语句来获取:select /*+ RULE */ v.SID, v.id2 JOB, j.FAILURES, LAST_DATE, substr(to_char(last_date,'HH24:MI:SS'),1,8) LAST_SEC, THIS_DATE, substr(to_char(this_date,'HH24:MI:SS'),1,8) THIS_SEC, j.field1 INSTANCEfrom sys.job$ j, v$lock vwhere v.type = 'JQ' and j.job (+)= v.id2;几点注意的地方:1、查询dba_jobs_running会一直挂着不动,说明有bug出现;2、对job进行remove后要commit才行(比较怪异);3、可对job进行broken;
v$sqlarea,v$sql,v$sqltext三个视图的区别
V$SQL:Child cursor details for V$SQLAREAV$SQLAREA:Shared pool details for statements/anonymous blocksV$SQLTEXT:SQL text of statements in the shared poolv$sql的每一行表示的是每一个sql语句的一个版本,而v$sqlarea存放的是相同语句不同版本一个group by汇总。v$sql与v$sqlarea的源都是X$KGLCURSORv$sql及v$sqlarea存放着统计信息在调优时使用居多,但其sql是不全的,如果想获得完整的sql需使用v$sqltext。v$sqltext中存储的是完整的SQL,SQL被分割。SQL> desc v$sqltextName Type Nullable Default Comme
案例4:不完全恢复
SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> select * from test; A---------- 1SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY-------------------2006-12-16 21:06:13SQL> drop table test;表已丢弃。SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup;ORACLE 例程已经启动。Total System Global Area 59842188 bytesFixed Size 454
案例3:基于cancel的不完全恢复
SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> select * from test; A---------- 1SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY-------------------2006-12-16 21:06:13SQL> drop table test;表已丢弃。SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup;ORACLE 例程已经启动。Total System Global Area 59842188 bytesFixed Size 454
案例2:用cancel恢复redo的过程.
案例2:用cancel恢复redo的过程.SQL> insert into test values(2);已创建 1 行。SQL> commit;提交完成。SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。rem 采用os命令删除所有的redo文件.SQL> startupORACLE 例程已经启动。Total System Global Area 59842188 bytesFixed Size 454284 bytesVariable Size 37748736 bytesDatabase Buffers 20971520 bytesRedo Buffers 667648 bytes数据库装载完毕。ORA-00313: 无法打开日志组 1
案例1:用命令清空日志组(非current)的恢复.
案例1:用命令清空日志组(非current)的恢复.SQL> create table test(a number(12));表已创建。SQL> insert into test values(1);已创建 1 行。SQL> shutdown immediate;ORA-01097: 无法在事务处理过程中关闭 - 首先提交或返回SQL> commit;提交完成。SQL> select * from v$log;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS---------- ---------- ---------- ---------- ---------- --- ----------------FIRST_CHANGE# FIRST_TIME------------- ----------1 1 26 31457280 1 NO CURRENT196339 15-12月-062 1 24 314572
昨天讲课时整理的几个知识点
1、进行联机表空间的备份时,所有对这个表空间的修改不进入数据文件,而是进入重做日志文件。而且是一个block一个block的进入。所以,备份完要尽快结束,不然,重做日志的数据增长飞快。平时,数据文件是一个block一个block的写入,重传日志文件是一条一条的写入;2、刷新物化视图时对应的索引也会跟着刷新;3、alter system archive log current 就是手工归档当前活动的日志组,一般数据库只有在日志切换时才会归档被切换的日志alter system switch logfile 是切换当前日志到下一个日志,如果数据库是归档模式,那么被切换的日志将会被归
sql语句的优化案例分析
今天一测试人员提供过来一sql语句,结构如下:SELECT t.* FROM v_service t,(SELECT DISTINCT icpcode,icpservid FROM t_servcate2serv t1,(SELECT cateid FROM t_servcate START WITH cateid=1 and showflag=1 CONNECT BY PRIOR cateid = parentid and showflag=1) t2 WHERE t1.cateid=t2.cateid) t3 WHERE t.icpcode=t3.icpcode AND t.icpservid=t3.icpservid and (t.ServStatus='A' OR t.servstatus ='P' or t.servStatus='B' ) and (t.OnDemandFlag !=1 and t.OnDemandFlag!=2) and (t.accessmodeid=2 or t.accessmodeid=5 or ((t.
有关重做日志的状态及switch logfile时的不正常案例分析
首先回顾一下有关重做日志的状态:V$logfile:INVALID - File is inaccessibleSTALE - File's contents are incompleteDELETED - File is no longer usednull - File is in useV$log:UNUSED - Online redo log has never been written to. This is the state of a redo log that was just added, or just after a RESETLOGS, when it is not the current redo log.CURRENT - Current redo log. This implies that the redo log is active. The redo log could be open or closed.ACTIVE - Log is active but is not the current log. It is
现场故障诊断案例
早上7:30被一医院的客户电话吵醒,说是监听无法正常监听客户端的链接.赶紧打车过去一看,果然如此.lsnrctl命令后再service和status一看,发现有一服务的实例监听不正常.listenter.log文件有300多M,tnsping是通的,重新配置后问题解决.但数据库无法正常open,提示rac的功能无法正常使用,经过了解后将部分cluster参数设置为false后重新启动,可正常启动.但关闭数据库的时候提示dispather的异常,数据库一直hung着.在"服务"中停止进程后重新设置mts的部分参数后系统一切正常.[@more@]
什么是并行查询及其原理
[@more@]在OLAP环境,以利用多的CPU和内存资源来加速处理数据,也即oracle的并行查询。单个CPU同一时刻只能服务一个进程,如果有多个CPU,提高CPU利用律,就可以同时运行多个进程。也就是原来单个进程处理的变成多个进程并行处理加速执行时间。并行执行只是在全表处理或者分区及在分区表中执行本地索引时用到。下面情况会用到并行查询:全表扫描、 rebuild index、update (全表或分区表)、insert的并行子查询、本地索引使用、批量插入,象SQLLDR、创建临时表比如我们执行select /*+ parallel(c1 ,2) */ ...from customers c1order by ...p
重建控制文件的案例(RESETLOGS模式和NORESETLOGS模式)
[@more@]本案例分两种情况:归档模式和非归档模式。在每种模式下采用两种重建方式,即resetlogs和noresetlogs。一、archived模式下:SQL> archive log list数据库日志模式 存档模式自动存档 启用存档终点 C:oracleoradataarchora9i最早的概要日志序列 1下一个存档日志序列 2当前日志序列 2SQL>1、noresetlogs方式注意:all online logs are available将所有的控制文件删除掉后执行重建控制文件脚本,日志如下:SQL> STARTUP NOMOUNTORACLE 例程已经启动。Total System Global Area 135864308 bytesFixed Size 454644 bytesVariab