Oracle
文章平均质量分 73
Zhu_Julian
这个作者很懒,什么都没留下…
展开
-
[Oracle] SQL*Loader 详细使用教程(4)- 字段列表
在上一篇中我们介绍了SQL*Loader中最重要的文件——控制文件,而本篇要介绍控制文件中最重要的部分——字段列表,在字段列表里定义数据位置、数据类型、过滤条件和分隔符等。下面是字段列表的一个例子:...1 (hiredate SYSDATE,2 deptno POSITION(1:2) INTEGER EXTERNAL(2) NUL原创 2013-08-21 23:21:48 · 5575 阅读 · 0 评论 -
[Oracle] ORA-00845: MEMORY_TARGET not supported on this system
Oracle 11g在启动时报错:SYS@TEST16> startupORA-00845: MEMORY_TARGET not supported on this system这是因为你设置了MEMORY_TARGET这个参数,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小原创 2013-10-21 10:04:37 · 1768 阅读 · 0 评论 -
[Oracle] 多表关联的update和delete
由于Oracle不支持update或delete from语句,因此,Oracle的多表关联update和delete必须借助于子查询,同理,Oracle也不支持同时update或delete多张表,其典型用法如下:多表关联update首先,构造测试表和数据如下:SYS@TEST16> create table testa as select owner,table_name,st原创 2013-10-15 22:49:44 · 10892 阅读 · 1 评论 -
[Oracle] Data Guard 系列(4) - 在不停主库的情况下创建物理备库
实验环境Primary:主机: jabdw1241SID: O01DMS0DB_UNIQUE_NAME: O01DMS0Standby:主机: jabdw1242SID: O01DMS0DB_UNIQUE_NAME: O01DMS0DR1. Primary的配置和操作1) 确认primary处于归档模式PRIMARY>archive log list原创 2013-06-13 22:45:59 · 5244 阅读 · 0 评论 -
[Oracle] 探讨分区(2) - 分区索引
在Oracle中,索引和表一样也可以分区。有两种类型的分区索引,本地分区索引(Local)和全局分区索引(Global)。1、本地索引(Local)本地分区索引使用LOCAL关键字创建,其分区边界与表相同(即与每个表分区相关联都有一个索引分区),下面是一个本地分区索引的例子:create table sales_parpartitioned by range (year)(原创 2013-05-16 19:58:17 · 5464 阅读 · 0 评论 -
[Oracle] 分区探索(1) - 分区剪枝
分区剪枝分区剪枝是指对于分区表或分区索引来说,优化器可以自动从FROM和WHERE字句里根据分区键提取出需要扫描的分区,从而避免全表扫描,减少扫描的数据块,提高性能。分区剪枝分为静态和动态,静态分区剪枝发生在编译阶段,动态分区剪枝发生在执行阶段,下面我们分别来看看这两种分区剪枝执行计划的异同点。静态分区剪枝静态分区剪枝在解析阶段就知道需要扫描多少个分区,因此执行计划里的原创 2013-08-18 09:25:34 · 3132 阅读 · 0 评论 -
[Oracle] 探讨分区(3) - 分区与性能
在实际工作中,常听到初学者说:“大表分区肯定可以提高查询性能”。其实不然,在你完全不了解应用的情况下,盲目的建立分区不但不能够提高查询性能,还有可能导致查询性能下降。因此,在决定是否使用分区之前,必须了解当前的应用环境。大体上来说,数据库的应用分为两种:OLTP和OLAP。OLTP是指在线事务处理,比如淘宝的购物网站等;OLAP是指在线分析系统,如数据仓库、数据集市等。实际应用中,也有原创 2013-06-13 09:22:00 · 3115 阅读 · 0 评论 -
[Oracle] 增大在线重做日志文件大小
今天发现数据库很慢,看到大量进程在等待log file switch (checkpoint incomplete),日志文件的使用情况如下:SYS@TEST15>select group#,sequence#,bytes/1024/1024 "BYTES(M)",members,archived,status from v$log; GROUP# SEQUENCE# BY原创 2013-11-07 14:46:15 · 2568 阅读 · 0 评论 -
[Oracle] SQL*Loader 详细使用教程(5)- 典型例子
本文介绍SQL*Loader在实际使用过程中经常用到的典型例子。1. 表中的列比数据文件的列要少怎么办?假设一个csv的文件如下:a1,a2,a3,a4b1,b2,b3,b4c1,c2,c3,c4d1,d2,d3,d4总共4列,先要求只要第2、3列数据,怎么办呢?这时候,FILLER(注意:不是FILTER)参数派上用场了,控制文件如下所示:load datai原创 2013-10-15 15:56:04 · 3754 阅读 · 1 评论 -
[Oracle] 探讨分区(4) - 分区管理
分区交换是Oracle提供的一种用于分区表和非分区表间迁移数据的方法,它只操作数据字典,不移动数据的物理存储,因此效率非常高。它的语法如下:alter table partition_tbl exchange partition with table nonpartition_tbl;注意:分区表和非分区表之间无法直接交换,必须借助一个中间表(非分区),下面看一个例子:现在原创 2013-11-06 17:03:26 · 2535 阅读 · 0 评论 -
[Oracle] 数据库安全概述
数据安全是个很广的话题,它包括网路安全、操作系统安全,应用层安全和数据库安全,Oracle的数据安全是指在数据库层面的安全,下图是Oracle安全产品的定革:下面是Oracle提供的安全方案:其中几个比较常用的技术如下:[Oracle] 数据库安全之 - 透明数据加密技术(TDE) [Oracle] 数据库安全之 - 虚拟私有数据库 (VPD)原创 2013-06-02 19:57:13 · 3476 阅读 · 0 评论 -
[Oracle] Lob介绍
Lob的定义像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle专门用来处理半结构化和非结构化数据,它是一个大对象数据类型,可以存储超过4000字节的字符串、二进制数据。Lob的类型有两种Lob,非常是Internal Lob和External Lob。所谓Inte原创 2013-10-14 13:51:04 · 2492 阅读 · 0 评论 -
[Oracle] Scheduler和Job
Oracle Scheduler是用来管理和计划数据库的Job,使得很多常规的任务不需要人为干预,本质上来说,它和Linux的crontab,商业软件UC4一样,只是它们的领域不一样,Oracle Scheduler专注于Oracle数据库Job的自动化管理、维护和监控。本篇是理论篇,介绍Oracle Scheduler的基本概念,实战篇留在下篇,敬请期待。Oracle Scheduler原创 2013-10-11 22:46:33 · 3094 阅读 · 2 评论 -
[Oracle] 参数修改小结
v$parameterOracle参数的修改比较复杂,有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数修改后马上生效(不需要重启),有些参数则必须重启才能生效,那么我们如何知道这些信息呢?可以查询动态视图v$parameter中的两列(如下所示)得知:1. ISSES_MODIFIABLE指示参数是否可以在session级别( Alter sessio原创 2013-08-06 15:40:47 · 3381 阅读 · 0 评论 -
[Oracle] 如何删除重复数据
查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录根据单个字段(Id)来判断 select * from table where Id in (select Id from table group by Id having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowi转载 2013-08-12 20:05:03 · 2709 阅读 · 0 评论 -
[Oracle, MySQL] Oracle通过dblink连接MySQL
业务上有这么一个需求,需要把Oracle的一些数据同步到MySQL,如果每次都是手动同步的话,实在太麻烦,因此花了点时间研究了下Oracle直连MySQL的方式。参考文档:Detailed Overview of Connecting Oracle to MySQL Using DG4ODBC Database Link (Doc ID 1320645.1)版本信息:Oracle:原创 2013-08-29 12:04:52 · 22134 阅读 · 4 评论 -
[Oracle] Data Guard 系列(1) - 三种保护模式
Data Guard提供如下三种数据保护模式:1)最高保护模式(Maximum Protection)这里的”最大保护“是指最大限度的保护数据不丢失,也就是至少有一个standby和primary保持实时同步,但这样做的代价很大,即当一个事务提交时,不但要写到primary段的online redo log,还有写到至少一个standby的standby redo log。这样会有原创 2013-06-13 22:27:22 · 5025 阅读 · 0 评论 -
[Oracle] Data Guard 系列(6) - 角色转换
Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等。它通常都是无损的,即不会有数据丢失。其执行主要分为两个阶段:Primary转为StandbyStandby(之一)转为Primary2)FailoverFailover是指由于Primary故障无法短时间恢复,Standby原创 2013-06-14 07:25:44 · 3370 阅读 · 0 评论 -
[Oracle] Data Guard 系列(5) - 创建逻辑备库
在创建逻辑备库之前,必须得先创建物理备库,关于如何创建物理备库,请参考《Data Guard 系列(4) - 在不停主库的情况下创建物理备库》。1. 在物理备库上停止日志应用服务SYS@jkka> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;Database altered.2. 重新设置主库为将来的角色转换做准备(原创 2013-08-26 13:24:01 · 3468 阅读 · 5 评论 -
[Oracle] Listener的动态注册
在有Oracle Listener的动态注册之前,采用的是静态注册,所谓静态注册是指Oracle实例在启动时,读取listener.ora里的配置,然后注册到Listener,它主要有两个缺点:1. Listener不知道Oracle实例的实时状态2. listener.ora里的配置比较麻烦,常需要手动修改。动态注册所谓动态注册是指Oracle实例启动后,会通过pmon进程实时的原创 2013-09-18 17:27:43 · 2081 阅读 · 0 评论 -
[Oracle] 表在线重定义 - 普通表到分区表
对于一个7*24的在线生产系统来说,修改表定义(DDL)时一件非常痛苦的时,因为如果直接使用alter语句,将会在表上安放一个排他锁,也就是说在这期间所有的DML和select都无法操作,如果是一个大表,alter的时间将很长,在这期间应用会受到很大的影响。幸好,从9i开始,Oracle提供了在线表重定义功能,在修改表定义的同时几乎不影响DML和select语句,因为排他锁只会在表上出现很短时原创 2013-08-13 10:33:23 · 3543 阅读 · 0 评论 -
[Oracle] 浅谈Sequence(序列)
Oracle的Sequence是一种数据库对象,它可以生成有序数字,主要用于主键的自动生成。如果没有Sequence,主键的自动生成必须得在代码逻辑里实现,大致过程是:获取当前主键值,新主键值=当前主键值+增量。如果多个用户同时请求新主键,则会产生并发等待,影响效率,Sequence就是用来解决这个问题。创建SequenceCREATE SEQUENCE emp_sequenc原创 2013-07-31 22:48:14 · 3716 阅读 · 1 评论 -
[Oracle] 11g中 ADD COLUMN 功能增强
一. Enhanced ADD COLUMN 说明在Oracle 11gR1中,Oracle 对add column 进行了增强。 官网的说明地址:http://docs.oracle.com/cd/B28359_01/server.111/b28279/chapter1.htm#NEWFTCH1 1.1 Enhanced ADD COLUMN Functionali转载 2014-02-07 14:00:45 · 2819 阅读 · 0 评论 -
[Oracle] 谈谈主外键设计
主外键有两大特点:1)主键本身是一个唯一索引,保证主键所在列的唯一性;2)外键列指必须在主表中的主键列有相应记录。外键上一定要建索引我们知道,主键本身是一个唯一索引,外键是一个约束,默认情况下没有索引,但在实际使用中强烈建议在外键上建索引,下面看两个例子:SQL> alter database mount;Database altered.SQL> alter data原创 2014-04-16 17:50:08 · 1630 阅读 · 0 评论 -
[Oracle] opiodr aborting process unknown ospid (***) as a result of ORA-609
今天线上数据库(版本11.2.0.1)无法建立新连接,但原有的连接不受影响,alert.log报如下错误:opiodr aborting process unknown ospid (22997) as a result of ORA-609但在listener.log里却显示连接已建立03-APR-2014 16:05:44 * (CONNECT_DATA=(SERVICE_NAME原创 2014-04-03 16:13:48 · 10441 阅读 · 0 评论 -
[Oracle] 分析函数(3)- 函数分类
分析函数概述Oracle中的分析函数和聚合函数相似,但是对于每一组记录,无论多少行,聚合函数只返回一行值,而分析函数对其中每一行记录都返回值。这一组记录,称为分析函数的一个(WINDOW),窗口决定了要处理数据的范围,该范围在物理上可以由指定的行数来确定,或者在逻辑上由相对偏移量来确定。分析函数总是在除了ORDER BY之外的其他子句运算后才执行的,所以它不能出现在where、group by原创 2013-06-10 18:35:05 · 2423 阅读 · 6 评论 -
[Oracle] 分析函数(4)- Order By字句
分析函数中有ORDER BY的存在将添加一个默认的开窗子句!意味着从分区的第一行到当前行;分析函数中没有ORDER BY时,默认的窗口是分区内的全部 ;在Order by 子句后可以添加nulls last,如:order by comm desc nulls last 表示排序时忽略comm列为空的行. 不写between AND ,在有order BY 的情况下,就原创 2014-06-07 23:42:08 · 2433 阅读 · 0 评论 -
[Oracle] 分析函数(2)- 开窗(WINDOWING)
Oracle分析函数的开窗部分分为3个类型原创 2014-06-07 23:22:41 · 2175 阅读 · 0 评论 -
[Oracle] Flashback闪回机制
Flashback的目的在有Flashback之前,如果你对数据误操作,并已提交,这时想回退该误操作,将会是很件麻烦的事情。有人可能会说可以用备份恢复到误操作之前,但正确的操作数据也一起没了。唯一可能的办法就是日志挖掘,但日志挖掘非常繁琐,很难定位。因此,Oracle推出了Flashback技术,主要目的就是为了恢复误操作。Flashback家族介绍数据库级别:Flashb原创 2013-05-13 17:53:07 · 2514 阅读 · 0 评论 -
[Oracle] Merge语句
Merge的语法如下:MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | view | subquery } [t_alias] ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_i原创 2014-06-02 11:38:20 · 2990 阅读 · 0 评论 -
[Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
经常写SQL语句的人应该知道Group by语句的主要用法是进行分类汇总,下面是一种它最常见的用法(根据部门、职位分别统计业绩):SELECT a.dname,b.job,SUM(b.sal) sum_salFROM dept a,emp bWHERE a.deptno = b.deptnoGROUP BY a.dname,b.job;DNAME JOB原创 2014-06-01 21:16:45 · 2561 阅读 · 0 评论 -
[Oracle] Insert All的妙用
无条件的插入Oracle中的insert all是指把同一批数据插入到不同的表中,假如现在有个需求:把t表中的数据分别插入t1,t2,如果你不知道insert all,你可能会使用insert插入2次,如下所示:insert into t1(object_name,object_id) select * from t;insert into t2(object_name,object原创 2014-06-02 10:06:03 · 5309 阅读 · 1 评论 -
[Oracle] ROWNUM和分页
rownum是oracle的一个伪劣,它的顺序根据从表中获取记录的顺序递增,这里要注意的是:由于记录在表中是无序存放的,因此你无法通过简单的rownum和order by的组合获得类似TOP N的结果。我们的测试数据如下: select * from test; ID NAME---------- -------------------- 1 A原创 2014-06-17 12:23:37 · 1511 阅读 · 0 评论 -
[Oracle] Golden Gate - 概念和机制
Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉、变换、投递。OGG支持的异构环境有:OGG的特性:对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制以交易为单位复制,保证交易一致性:只同步已提交的数据高性能智能的交易重组和操作合并使用数据库本地接口访问并行处理体系灵活的拓扑结构:支持一对原创 2014-06-22 15:13:13 · 3889 阅读 · 0 评论 -
[Oracle] - 性能优化工具(3) - ADDM
ADDM 通过检查和分析AWR获取的数据来判断Oracle数据库中可能的问题,并给出优化建议。获取ADDM的方法如下:@?/rdbms/admin/addmrpt.sql下面可以看一个例子:--第一步:创建测试用的表drop table t cascade constraints purge;create table t AS SELECT * FROM dba_objects原创 2014-05-24 15:28:39 · 2294 阅读 · 0 评论 -
[Oracle] - 性能优化工具(2) - ASH
ASH和AWR的关系ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。ASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Automatic Workload Repository ,AWR) 由后台进程MMON完成。ASH信息同样被采集写出到AWR负载库中。由于内存是有限的,所以MM原创 2014-05-24 15:15:01 · 2217 阅读 · 0 评论 -
[Oracle] - 性能优化工具(5) - AWRSQL
在AWR中定位到问题SQL语句后想要了解该SQL statement的具体执行计划,于是就用AWR报告中得到的SQL ID去V$SQL等几个动态性能视图中查询,但发现V$SQL或V$SQL_PLAN视图都已经找不到对应SQL ID的记录,一般来说这些语句已经从shared pool共享池中被替换出去了。这个时候我们可以尝试使用DBMS_XPLAN.DISPLAY_AWR存储过程来将Oracle原创 2014-05-24 15:46:21 · 3623 阅读 · 0 评论 -
[Oracle] 位图索引
位图索引的原理位图索引的优势1、快速统计条数由于位图索引只存储0和1的指,因此它的空间占用很小,向count(*)之类的操作用位图索引就很快。2、高效即席查询我们在OLAP系统中,经常会做多维度的统计,如人口普查,经常会需要做一些关于性别、年龄、出生地的多维度查询,这种就是即席查询。位图索引非常实用用于即席查询,因为对于计算机来说,就是0和1直接的与或运算,原创 2014-04-18 17:35:43 · 2146 阅读 · 0 评论 -
[Oracle] 表的连接
在OLTP系统里,嵌套连接占了70%左右,哈希连接占了20%,合并排序连接占了10%。算法:嵌套连接把两个表分为驱动表和被驱动表,先访问驱动表(只访问1次),然后根据驱动表返回的行数多次访问被驱动表(被驱动表访问的次数等于驱动表返回的行数)。根据上面的算法,我们可以知道,想要让嵌套连接性能好,必须同时满足以下3个条件:1)驱动表返回的行数要足够少(减少被驱动表访问的次数);2)驱动原创 2014-04-24 10:55:47 · 1628 阅读 · 0 评论 -
[Oracle] 获取执行计划的各方法总结
总的结论:一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了):1. explain plan for获取; 2. set autotrace on ; 3. statistics_level=all;4. 通过dbms_xplan.display_cursor输入sql_id参数直接获取5. 10046 trace跟踪6. awrsqrpt.sql原创 2014-04-26 09:49:06 · 3982 阅读 · 0 评论