- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 plsql 开发实战问题一: 如何更新一个表的所有列
安生(970078354) 18:18:03有没有方法把表中的字段的所有数据中的某个字母替换成其他的,不用判断是哪一列的,只要表中出现某个字母就直接替换成其他的呢今天群里有个学生问,如何有办法更新一个表中的所有列:很简单哈:轻松加愉快写完代码:declare v_sql varchar2(200); v_sql1 varchar2(200);be
2016-01-23 10:51:27
1527
转载 oracle schedual使用方法
Oracle 10g Scheduler 特性 在10g 环境中,ORACLE 建议使用Scheduler 替换普通的job,来管理任务的执行。其实,将Scheduler 描述成管理job 的工具已经太过片面了,10G版本中新增的Scheduler 绝不仅仅是创建任务这么简单. 一. 使用Jobs 所谓JOBS,其实就是Scheduler 管理的一个(或多个)任
2016-01-11 11:23:14
2573
原创 数据仓库、数据库开发面试题目汇总:
1、游标分几种?2、显式游标怎么使用3、大表怎么更新数据4、聚合函数与分析函数的差别?5、函数和存储过程的差别6、你接触过最大的表7、怎么做优化的8、会不会MERGE INTO?9、怎么看执行计划10、索引分那几种?11、你做过那些项目,写过那些报表12、谈谈你一个项目的业务逻辑13、你在该项目做什么。14、为什么离职15、想往什么方向发展
2015-12-14 23:14:35
1207
原创 plsql 实战题目 一:
一: 通过dblink 迁移900 万数据,到另外一个库:create or replace procedure p_login as cursor cur_login is select * from user_login@px_dblink; ---- 远程的表 type type_login is table of number; --
2015-12-09 23:59:19
718
原创 零基础学习sql(2)--- 数据类型
上节课的提问 1: delete 和truncate 的区别:delete 可以删除部分数据, truncate 清空所有数据,另外delete 需要记录日志等信息, truncate 几乎不记录日志,且truncate 是ddl 操作。问题2, 自己去执行,我就不说细说了。。。。 常用数据类型: 官网理论一大堆,我们只学我们懂的,我个人认为,零基础开始学习
2015-12-07 22:14:14
415
原创 Direct Path Insert与APPEND, PARALLEL的梳理与小结
Oracle里面的写入数据方式分为2种,一个是传统方式写入(conventional insert),另外一个是直接路径写入(direct path insert)。 传统方式写入: Oracle会重用表里面空闲空间,并且写入会先写入到buffer cache。 直接路径写入:Oracle不重用表里面的空闲空间,直接写入到新分配的块,并且数据直接写入到data file,不写入到b
2014-06-11 12:58:40
5227
原创 物理DG日常管理
1.查看哪些归档日志没有传输到备用库假设local归档目录的ID为1,remote的归档目录为2SQL> SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM(SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCALWHERE LOCAL.SEQUENCE# NOT IN
2014-06-11 10:36:55
1321
原创 Dataguard三种保护模式
Oracle Data Guard 提供三种高水平的数据保护模式来平衡成本、可用性、性能和事务保护。可以使用任意可用管理界面来轻松地设置这些模式。要确定适当的数据保护模式,企业需要根据用户对系统响应时间的要求来估量它们对数据保护的业务要求。下表从数据丢失风险的角度概述了各种模式的适用性。保护模式在出现灾难时数据丢失的风险重做传输机制
2014-06-11 10:29:26
5091
原创 奇怪的NVL2问题,提示NOT DECLARE
今天碰到一个同事问的NVL2函数使用的问题,简单记录一下,现象如下:SQL> Create Or Replace Function fn_tnvl2(fv_info Varchar2) Return Varchar2 Is 2 lv_msginfo Varchar2(2000); 3 Begin 4 lv_msginfo := Nvl2(fv_info, fv_inf
2014-05-28 10:45:24
1718
1
原创 11g ASM新引入的特性
1.1 影响管理的11g ASM新引入的特性下面这些特性在维护10g版本的ASM将不被支持。但多数特性能维护ASM来说影响不大。1.1.1 快速重新同步(ASM Fast Mirror Resync)短暂的磁盘路径发生问题时,恢复ASM磁盘组(DISK GROUP)的允余性是很费时间的,特别是这种恢复操作需要重新布局整个磁盘组的情况下。ASM快速磁盘重
2014-05-23 14:21:35
2586
原创 RAC维护手记05-ASM磁盘组管理
1.1 磁盘组管理1.1.1 创建磁盘组如存在磁盘LUNs:/dev/rhdisk11/dev/rhdisk12/dev/rhdisk13/dev/rhdisk14创建一个EXTERNAL REDUNDANCY的磁盘组DGDATA:SQL>CREATE DISKGROUP DATA EXTERNAL REDUNDANCYDISK
2014-05-23 14:09:48
1916
原创 RAC维护手记04--Asm实例管理
1.1 ASM的一些限制度量Oracle ASM为未来增长提供了几乎无限的能力,但具有某些存储限制。 例如,Oracle ASM磁盘组数量具有以下限制、磁盘和文件: 63个磁盘组; 10000个ASM Disk; 每个磁盘组1 million最大文件数;在非Oracle Exadata存储还存在以下限制: 每个ASM磁盘最大为2TB; 20PB最大存储空间;
2014-05-23 14:02:46
1039
原创 如何正确Move Table,利用PLSQL可以批量处理
如何将一个表从一个表空间迁移到另外一个表空间。 操作步骤:1、评估迁移表占用空间大小以及新的表空间可用空间情况。2、直接将表或者分区Move到新的表空间3、设置表的tablespace属性为默认的新的表空间,确保新增分区能在新的表空间。4、设置表的索引的存储属性表空间为对应的新的表空间(可选,根据具体情况处理)。5、重建分区索引,全局索引
2014-05-23 00:52:50
1498
原创 RAC维护手记03--OCR/OLR管理
1.1 OCR/OLR管理1.1.1 迁移OCR1.1.1.1 从NO-ASM 迁移到 ASM如果OCR位于外部冗余模式的DG上,建议再保存一份OCR在其他的DG,确保OCR的安全性。OCR最多可以保存在5个DG中,每个DG中的OCR数量由DG的冗余模式有关。Run as root: ocrconfig -ad
2014-05-19 15:31:36
1282
原创 RAC维护手记02-VotingDisk 恢复/增/删/迁移
1、恢复voting disk Voting disk 自动备份在OCR中,无需单独备份,如果所有的voting disk 都损坏,按照如下步骤恢复:1、在一个节点以exclusive模式启动CRSRun As Root:crsctl start crs –excl 2、确认voting disk 情况 crsctl query
2014-05-19 15:26:45
950
原创 RAC运维手记01-Grid Infrastructure 管理
1、CRS管理1.1、启动/关闭crsctl start cluster [-all | -n server_name [...]]在集群内的任意节点,以root用户执行,启动clusterwareFor example:crsctl start cluster -n node1 node2crsctl start/stop crs 启动/关闭本地节点的CR
2014-05-19 14:50:05
2579
原创 ORACLE 11G 新特性--可用性增强
1 可用性提升 1.1 日志挖掘EM中新增了logminer的页面,取代早期版本中的javaconsole调用方式,提升了logminer的可用性 1.2 Dataguard增强Ø 最大性能模式下可以使用快速启动failover模式对数据精确度要求高时,不使用该特性。(在DG broker中配置)Ø 重做日志可以进行压缩传输,从而更好地利用带宽当带宽足够时不使用该特
2014-05-19 14:32:44
715
原创 Oracle 11g 新特性-- API和预编译改进
提供了大量新的接口,提高了性能和应用扩展性l 客户端查询缓存Client-Side Query Cache通过在客户端缓存相关查询结果,提高系统查询,减少网络数据传输,降低数据库主机cpu负载。在 Oracle Databas 11g中,可以使用 Oracle 调用接口 (OCI) 客户机查询高速缓存对客户机内存中的查询结果集启用高速缓存。 高速缓存结果集数据以透明方式与服务器端
2014-05-19 14:27:25
1152
原创 【脚本分享】表空间每天的使用情况
表空间近一个月的使用情况: 今天有网友问,如何查询近一个月的表空间使用情况:select a.name,b.*from v$tablespace a,(select tablespace_id,trunc(to_date(rtime,'mm/dd/yyyy hh24:mi:ss'))datetime,max(tablespace_usedsize*8/1024) use
2013-12-05 21:44:19
1288
原创 【视图学习】user_tab_modifications 视图的作用
SQL> drop table daodao;表已删除。SQL> create table daodao(a integer);表已创建。SQL> select * from user_tab_modifications where TABLE_NAME ='DAODAO';未选定行SQL> insert into daodao values(5);已创建 1 行。
2013-12-05 19:47:26
1356
原创 如何显示执行计划的真实开销?
执行计划如何显示e-rows,a-rows? 今天一个学生问我在执行计划如何显示E-rows,A-rows通常有两种方式: 1. 加入hint: SQL> create table daodao (a integer); 表已创建。 SQL> insert into daodao select object_idfrom dba_objects;
2013-12-03 12:53:59
1517
原创 海量dml表的统计问题
对于dml频繁的统计一定要注意一点是必须分阶段实施统计,不可以一次性取很长时间的数据,因为数据库为了保证一致性,会在sql执行的时候记录一个起始时间点,然后对于之后所有修改过的块都会去回滚段去寻找,这样有两个问题:第一: 造成回滚段长时间占用,尤其是在分布式事务(比如dblink取数据),这个查询是以事务的方式进行占用回滚段的,回滚段不足会导致数据库正常的dml由于无回滚段使用而
2013-06-23 09:40:10
1694
2
原创 剖析shrink 操作原理
在上一篇介绍了move 的操作,这篇介绍下shrink 操作: 在oracle 10g之后,推出了,shrink 操作,使用shrink 操作的时候索引可以不失效,这个对应用系统的影响要小不少。SQL> create table daodao (id int, name char(2000)) tablespace users; Table created.SQL>
2013-03-21 14:33:42
3459
原创 彻底理解move 操作
前几天群里有人问,move 操作,我这里做了几个实验,方便大家了解move 的基本操作。(1) oracle 的move 操作,rowid 如何变化?SQL> drop table daodao;表已删除。SQL> create table daodao (id int, name char(2000)) tablespace users;表已创建。SQL>
2013-03-21 11:32:05
3388
1
原创 【自动化管理】自动维护管理表空间
create or replace procedure p_monit_tbs_1 as --created by huangchao,2011-09-13 --监控表空间增量 vMessage varchar(250); --下发短信 vDb_name varchar2(10); --数据库名 vTBS_FREE_GB nu
2013-03-01 15:15:03
2914
原创 绑定变量参数关闭之后,oracle会如何操作
最近被很多朋友问起关于绑定变量窥探的问题:讨论的是如果绑定变量窥探被关闭了,oracle会怎么处理,是每次都硬解析还是这样处理? 首先介绍下什么是绑定变量窥探?使用SQL首次运行时的值来生成执行计划。后续再次运行该SQL语句则使用首次执行计划来执行。 影响的版本:Oracle 9i, Oracle 10g 对于绑定变量列中的特殊值或非均匀分布列上的绑定变
2013-02-26 19:14:05
2693
原创 【问题处理】数据库的hang死进程
日常管理的库经常会有hang死的进程,就是指应用连接实际上已经断了,但是数据库这边还保持这连接:比如: select * from v$session where seconds_in_wait >=24*3600*20; ---大于20天的等待连接: 这些session 绝大部分已经不活动了,但是一直hang在这里,dba可以和业务人员进行二次确认,然后杀掉会话。
2013-02-24 20:18:58
1910
1
原创 非等值sql的优化
今天快下班的时候,群里有个朋友在问,这个sql非常慢,如何解决:原sql如下:insert /*+ append */ into dr_bps_guna_yyyymm_ch_01select file_type,file_sn,rec_type,org_id,imsi,trm_id,forward_id,call_date,duration,base_fee,toll_fee,toll
2013-01-25 18:26:47
1747
1
原创 linux的hugepage的配置
由于linux的特性,linux使用内存的方式是采用vm的方式,即linux把物理内存和swap共同虚拟成内存来对外提供,有时用户看似使用内存,可实际上是使用磁盘,那如何避免使用swap磁盘空间呢?linux管理内存的单位是页(pages),一般情况下是4k的page,当我们使用的大内存时(>8G),管理这么大的内存就会给系统造成很大的负担,再加上频繁的pagein/pageout
2013-01-22 17:13:51
3715
原创 位图索引分析一
大家很多人都看过位图索引,可能了解很多的都是第一: 位图索引和普通索引不一样,可以包含空值。第二: 位图索引适合distinct值比较少的。第三: 位图索引不适合并发dml。 我们看下位图索引的简单结构
2013-01-16 14:30:32
112
原创 ora04031报错导致的数据库重启
环境:OS:AIX Version 6.1oracle : 10.2.0.5 rac(节点rac2)一、问题描述 晚上22:40收到一条短信,数据库挂了,立马连上数据库,在日志里面发现:从日志里面看问题很明显:是由于ora04031导致数据库重启。二、分析与解决问题思路:ora04031错误导致后台进程LCK0挂了,进而导致数据库重启:查看当
2013-01-16 00:20:52
1345
原创 存储过程无法进行单步调试
有时候会突然发现存储过程无法进行单步调试 相信很多数据库开发人员都遇到过这种问题:如下的存储过程,是无法单步调试的,直接点击调试按钮就进行执行了。 对应的对象在pl/sql developer中的信息如上,大家要注意Add debug information的钩没有打上:这个其实跟数据库的权限有关系:select OWNER, OBJECT_NAME, OBJE
2013-01-15 23:50:34
8384
3
原创 一则对or条件的优化处理
开发人员提交一个执行sql:DELETE SMS_LOVERMOBILENUMBER AWHERE USERNUMBER = :B1OR A.LOVERMOBILENUMBER =LTRIM(:B1 ,'86'); SMS_LOVERMOBILENUMBER的表结构以及索引如下:create table OSS01.SMS_LOVERMOBILENUMBER( USE
2013-01-15 23:24:27
1231
原创 组合索引使用错误案例
今天收到一个上线sql:相关脚本如下:索引结构:create unique index PK_OSS_OPERATORSITE_ACT_DAY on OSS_OPERATORSITE_ACT_DAY (STATEDATE, PROVCODE, AREACODE, SITECODE, USERNUMBER, PORTALID);merge into 条件是: Forall i
2013-01-15 21:13:23
1098
原创 应用游标优化SQL
问题描述:公司的一个sql平常都是运行一个小时的,突然有一天3个小时还不能出来,sql如下:open cursor for SELECT PROVCODE, AREACODE, COUNT(DISTINCT USERNUMBER) MON_USERCOUNT, SUM(LOGINCOUNT) AS MON_TOTALCOUNT FR
2013-01-14 14:11:22
2025
1
原创 表空间迁移完之后,批量回收数据文件,释放表空间
如下图,表空间datasync_1_index已经完全空闲:现在要完全回收表空间datasync_1_Index,批量释放文件到asm存储空间去,操作如下:select 'alter database datafile ''' || a.FILE_NAME || '''resize ' || 8 || 'M;' from Dba_Data_Files a wher
2012-12-30 22:11:14
2167
原创 通过rowid逻辑并行抽取数据
在我们迁移数据,或者进行同步数据的时候,对于应用变更频繁的表进行抽取数据,经常会碰到oracle需要读取回滚段,会导致很慢,有时候甚至会报ora01555错误,比如我们有个表比较大是40G左右,就是一个月的按月分区数据,这个时候如果想尽快抽取数据到另外一个库,有几种方法:方法1: 大家都知道的使用append,然后不写日志,parallel抽取方式:代码类似如下:alt
2012-12-29 17:57:58
4171
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人