![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle
文章平均质量分 74
李晓LOVE向阳
这个作者很懒,什么都没留下…
展开
-
OGG工作原理
简介OGG 是一种基于日志的结构化数据复制软件OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟OGG主要进程理解GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程,下面对其一一说明:Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。Extract原创 2021-01-11 14:50:17 · 2558 阅读 · 0 评论 -
Oracle Redo log 状态及工作原理解析
Redo Log简介Oracle的数据库日志称为redo log,所有数据改变都记录redo log,可以用于修复受损的数据库。大型数据库都采用日志。Redo日志是分组的,一个库至少需要两组,默认是三组。每个组内的redo日志称为成员。默认情况下,每个组只有一个成员,这样没有冗余性,可能造成online redo log的丢失,要提高数据的可靠性,应该为每个组至少配置两个成员,并将这两个成员分配到不同的磁盘上。Redo日志是轮流使用的,一个redo log满了,LGWR会切换到下一组redo log原创 2021-01-11 13:52:38 · 2445 阅读 · 0 评论 -
DBCA静默安装Oracle数据库遭遇ORA-29516
使用DBCA创建11.2.0.4 DB在进程为75%时失败,错误为:排错步骤:排除静默安装的Shell文件,并确保堆栈设置为不小于2 GB:[oracle@DB01 ~]$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 25原创 2020-11-06 17:37:58 · 446 阅读 · 0 评论 -
Oracle 报 “ORA-00054 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效” 问题的解决方法
在执行数据库DDL操作 时,有事会出现“Oracle 报 “ORA-00054 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效” 的问题。 1 原因一般在用户修改记录之前,悲观锁就会发生作用,比如更新语句:select ..for update1执行这条命令之后,oracle 将会对返回集中的数据建立行级封锁,以防止其他用户修改这些记录。...原创 2019-08-20 17:05:38 · 13370 阅读 · 1 评论 -
Oracle 分析函数与聚合函数(重点理解)
一、Oracle分析函数的语法与作用:rank ( ) over ( [query_partition_clause]order_by_clause )dense_rank ( ) over ([query_partition_clause] order_by_clause )rownumber ( ) over ( [query_partition_cla...转载 2019-07-29 14:46:50 · 504 阅读 · 0 评论 -
oracle 查看并行sql语句的并行数量和如何开并行
并行查询允许将一个SQL SELECT语句划分为多个较小的查询,每个部分的查询并发地运行,然后会将各个部分的结果组合起来,提供最终的答案。1、执行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000;2、如何查看该sql语句的并行数量:select t.sql_text,t.sql_id,s....转载 2019-07-29 11:57:28 · 2446 阅读 · 0 评论 -
Oracle中用Exp命令导出指定用户下的部分表或数据
Oracle中,除Exp命令可进行一般的全库、全用户导出外,还可通过增加相关参数条件实现对部分库表或数据的导出。用Exp导出指定表的全部数据exp jck/password file=d:\test.dmp statistics=none TABLES=(JSEBOTEST,NEWMAKT,TEST_ORG,TEST_SUBJECT,TEST_USER)用Exp导出指定表中符合条件的...原创 2019-07-29 10:13:01 · 3315 阅读 · 0 评论 -
【linux】 Oracle AWR 报告的生成和分析
* 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告。如何分析:* 在看awr报告的时候,我们并不需要知道所有性能指标的含义,就可以判断出问题的所在,这些性能指标其实代表了oracle内部实现,对oracle理解的越深,在看awr报告的时候,对数据库...原创 2019-07-12 14:58:54 · 596 阅读 · 0 评论 -
EXPDP导出数据报ORA-39002: 操作无效 ORA-39070: 无法打开日志文件。 ORA-39087: 目录名 DUMP_DIR 无效
expdp导出数据库 提示有以下报错ORA-39002: 操作无效ORA-39070: 无法打开日志文件。ORA-39087: 目录名 DUMP_DIR 无效解决办法:连接上数据库[oracle@ZYKJ zykj]$ sqlplus / as sysdba;创建该目录directory_nameSQL> create directory dir...原创 2019-04-01 15:12:38 · 10408 阅读 · 2 评论 -
Oracle数据库密码过期,修改密码并设置永久有效
一、修改Oracle数据库密码二、设置密码永不过期1.查看用户的proifle是哪个,一般是default;SELECT username,PROFILE FROM dba_users2.查看对应的概要文件(如default)的密码有效期设置(一般默认为180天)SELECT * FROM dba_profiles s WHERE s.profile='DEFAUL...原创 2019-03-07 15:02:40 · 30028 阅读 · 0 评论 -
在oracle存储过程中创建临时表
首先需要对Oracle中临时表有个大概的了解:1简介 ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据, 或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空, 但是临时表的结构以及元数据还存储在用户的数据字典中。 临时表只在ora...原创 2018-12-19 11:51:10 · 6773 阅读 · 0 评论 -
ORA-22992:无法使用从远处表选择LOB定位器
问题描述:使用dblink从远程数据库A向本地数据库B,通过存储过程 INSERT数据时,因远程表中含有BLOB字段,在SELECT 和 INSERT INTO操作时,报"ORA-22992: 无法使用从远程表选择的 LOB 定位器"错误,通过创建临时表并从临时成功把数据插入到目的表中。解决方法:在B库中建立A库表的临时表,然后通过临时表向B库表插入数据。临时表创建:--在B库中建立...原创 2018-12-19 11:07:14 · 2715 阅读 · 0 评论 -
oracle 将sql查询的多条结果拼接的方法
Oracle数据库,SELECT查询结果时,有些情况下需要将多条数据,同一字段进行拼接。例如在学生信息和成绩表中,关联查询会返回多条记录,多条记录只是成绩字段不同,其他相同,这是我们就需要将多条记录合并成一条,将成绩字段进行拼接。解决方法:用聚合函数,然后使用wmsys.wm_concat(拼接字段) 方法示例:select classcode,wmsys.wm_conca...原创 2018-12-18 11:08:25 · 17805 阅读 · 0 评论 -
Oracle内存参数调优
Oracle 数据库系统中起到调节作用的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些 初始化参数以优化Oracle系统。常见参数说明:2 系统内存参数的分配 2.1 Oracle 实例= 内存结构 + 进程结构oracle实例启动的过程,其实就是oracle内存参数设置的值加载到内存中,并启动相应的后台进程进行相关的服务过程。进程结构oracle进程...原创 2019-08-05 15:08:59 · 175 阅读 · 0 评论 -
Oracle分区表删除分区数据时导致索引失效解决
问题描述: 某表数据量在1亿左右,通过时间在建表时创建了分区,现在因为业务需要,需要删除某个时间段内的数据,如果要是用delete去删除这么多的数据,我还要写存储过程,分批提交的这样做,因此使用删除分区数据的方式。就是这样的一简单的truncate partition 引发了后继的业务故障。最终查询到该表的索引失效,重建立后恢复。原因分析:在使用truncate partit...原创 2019-08-05 16:25:43 · 1929 阅读 · 0 评论 -
oracle中where条件后用in这样子查询后变慢
今日开发一个需求,其中由于需求变态,写了一个挺复杂的sql,在本地测试环境看不出问题,但到了生产就变得非常慢(由于表数据量比较大),把sql粘贴出来执行了一下大概要42秒.我写的sql大概是这个样子的(大概描绘下)TABLE_A表数据量大概200w,其中一些关键字段建了索引select * from TABLE_A awhere a.lng>={变量} and a.lng<...原创 2019-08-23 17:06:59 · 7412 阅读 · 0 评论 -
Oracle表的空间释放,碎片整理记录
oracle数据库碎片是如何产生的当生成一个数据库时,它会分成称为表空间(tablespace)的多个逻辑段(segment),如系统(system)表空间,临时(temporary)表空间等。一个表空间可以包含多个数据范围(extent)和一个或多个自由范围块,即自由空间(free space)。表空间、段、范围、自由空间的逻辑关系如下:当表空间中生成一个段时,将从表空间有效自由空间中为...原创 2019-10-08 16:42:23 · 1612 阅读 · 0 评论 -
Oracle中exists与in的执行效率问题
in是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。一般大家都认为exists比in语句的效率要高,这种说法其实是不准确的,这个是要区分环境的。exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录...原创 2019-09-02 15:53:20 · 381 阅读 · 0 评论 -
Oracle创建分区表,以及分区的简单操作
前言:Oracle企业版支持分区,标准版不支持分区;那么如何区分是标准版还是企业版,通过SELECT * FROM V$VERSION;如果有Enterprise 则为企业版。如果Oracle为企业版,如果在创建分区表时出现:ORA-00439:未启用功能:Partitioning解决思路:利用make -f ins_rdbms.mk调整oracle特性操作步骤:...原创 2019-08-30 16:06:47 · 5695 阅读 · 0 评论 -
Oracle - 如何提高SQL的查询效率(where条件优化)
在Oracle数据库中编写查询语句的时候,经常碰到的一个问题就是SQL优化,那么今天就总结一下Where之后,如何进行条件的优化优化规则:一、选择合适的基础表Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上...转载 2019-08-27 16:33:00 · 7457 阅读 · 0 评论 -
Oracle数据库如何快速查询表的记录数
在平常的数据库操作中,有时候我们会进行查询某个表有多少记录数,对于这种问题我们经常就是COUNT(*) 、COUNT(1) 来查询,对于数据量小的表,这种方法是可行的,但是对于数据量较大上千万上亿的表,这种查询是很耗费服务器资源的,而且效率差。这时候我们就需要找到一种快速查询表数据量大小的方法。执行步骤:在ORACLE数据库中,可以通过DBA_TABLES、ALL_TABLES...原创 2019-08-22 17:09:16 · 16226 阅读 · 0 评论 -
Linux环境oracle 所在分区磁盘空间满后导致无法连接/登陆/使用/启动
前话:前段时间进行数据库数据转移导致目标库所在分区磁盘空间使用率到达100%。无法创建新的连接以及正常操作数据库。解决方法:方法一:清理表空间(包括undo表空间,临时表空间,以及用户表空间)方法二:删除Oracle数据库所在分区多余文件方法三:清理Oracle监听日志方法四:转移Oracle dbf文件到其他分区下面就分别对以上方法进行详细说明方法一:清理回收站...原创 2019-08-22 15:23:29 · 1210 阅读 · 0 评论 -
关于Oracle sql查询未走索引的问题(第二次查询比第一次查询更慢)
这段时间发现查询一个大表很慢,这个表数据量大概有3亿多,第一次查询发现返回数据很快,即正常使用索引;紧接着,再次执行这语句时,发现查询很慢,很久才返回数据。按照oracle正常sql查询来说,第二次查询应该是比第一次更快才对。所以这想象没有道理啊。分析了执行计划及相关v$sql等视同,发现第二次查询走的是全表扫描,oracle 做的是物理读查询。怪不得这么慢,那么如何让查询像第...转载 2019-08-21 18:04:41 · 1714 阅读 · 2 评论 -
ORACLE清理、截断监听日志文件(listener.log)
在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大,想必不少人听说过关于“LISTENER.LOG日志大小不能超过2GB,超过会导致LISTENER监听器无法处理新的连接”,当然这个不是真理,不会绝对出现,只是发生在老旧的32bit Linux或Unix系统下面,真实的原因是一些32bit OS自带的文件系统...转载 2019-08-21 16:45:20 · 877 阅读 · 0 评论 -
ORA-01000: 超出打开游标的最大数 问题的分析和解决
遍历结果集取数时,运行一段时间提示:问题分析:可能超出数据库所运行的最大游标数;解决步骤:step 1: 查看数据库当前的游标数配置slqplus:show parameter open_cursors;step 2: 查看游标使用情况:select o.sid, osuser, machine, count(*) num_cursfrom v...原创 2019-08-12 13:35:01 · 4260 阅读 · 0 评论 -
Oracle同义词创建及分配用户创建同义词权限
(1)--授权某个用户crate synonym的权限,若用户名为scottgrant create synonym to scott(2)--创建同义词create [or replace] synonym syn_name from table_name;(3)--撤销scott创建同义词的权限revoke create synonym from scott;(4)--删除同义词...原创 2018-12-12 09:20:42 · 14785 阅读 · 0 评论 -
Oracle存储过程记实(动态游标)
create or replace procedure P_TP_SQHDFJas str_sql varchar2(300); type ref_cursor_type is ref cursor; --定义一个动态(弱)游标 sqhd_fj_list ref_cursor_type;--定义游标类型 fj sqhd_fj%rowtype;--定义变量类型,s...原创 2018-12-19 15:11:31 · 1008 阅读 · 0 评论 -
存储过程中调用EXECUTE IMMEDIATE的“权限不足”
EXECUTE IMMEDIATE是Oracle中使用动态SQL的一种方法,可以直接执行,也可以在存储过程中调用。然而在存储过程中调用可能会遇到权限不足的问题,如在存储过程中执行如下语句:str_sql := 'select id,blobvalue,filename,scsj from sqhd_fj_temp';execute immediate str_sql;会报权限不足:如下...原创 2018-12-19 14:42:19 · 1567 阅读 · 0 评论 -
如何通过sql的insert语句插入大量字符串到oracle的clob字段?
当通过insert语句直接插入大量字符串(主要是html的内容),超过4000字符时候,就会报:ORA-01489: 字符串连接的结果过长虽然字段是clob,足以存储,但是通过这种直接插入的时候,因为没有强制指定带插入字符串为clob类型,oracle会把插入的字符串作为 “字符串类型”处理,由于oracle有最大字符串限制(不超过4000个字符),所以会报错。解决原创 2018-04-02 11:35:31 · 11250 阅读 · 1 评论 -
oracle 存储过程读取文件 插入数据库
自己的需求 读txt 文件,改变表字段的值Sql代码 update_customer_rank.txt的格式如下: 13123423126 13123423123 13123423125 13123423121 13123423122 代码如下:Sql代码转载 2018-04-02 11:15:31 · 5585 阅读 · 0 评论 -
java处理Oracle中的clob转换成String
Oracle中的clob类型用来存储数据比较大的内容,将Oracle数据类型可以直接转换成varchar2,但是,varchar2的直接有限,只能使用substr,如:to_char(dbms_lob.substr(ter.content,2000));这样只可以显示clob字段的前2000个字符,对于大于2000个字符的内容显示不出来。可以换一种思路,在Java中把clob转换成string,一转载 2018-04-01 17:20:27 · 1200 阅读 · 0 评论 -
MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具)
问题背景: 今天接到一个任务,让我把MySQL中的表与数据移植到Oracle中(也就是我们的项目需要使用Oracle),本来打算一个表一个表的改的(很傻很天 真),结果发现,光sql语句就有40多兆!从网上找了好久,参考了好多方法,最后只有这个实现了,也就是Oracle中的Oracle SQL Developer工具实现了数据库的移植,特此分享。1、工具的准备原创 2018-04-01 19:42:45 · 731 阅读 · 0 评论 -
如何在plsql中终止存储过程的执行
问题情境:今天好奇写了一个存储过程,向一个表中插入两千万数据,结果运行了一个小时,没有执行完成,点击停止执行按钮不起作用,所以需要手工删除该存储过程对应的进程。第一步:查询SIDselect * from v$access a where object like '存储过程名%' --存储过程名为大写字母第二步:查询serial#select * from v原创 2017-12-13 19:37:48 · 10521 阅读 · 0 评论 -
物化视图 Materialized View
物化视图Materialized View一、物化视图的一般用法物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。1、物化视图的类型ON DEMAND、ON COMMIT。二者的区别原创 2017-08-03 10:54:46 · 602 阅读 · 0 评论 -
ORACLE创建包和包体及包中函数和存储过程
背景:在Oracle数据库创建包,在包创建函数Function和存储过程Procedure。在java项目中调用。创建包,并在下面声明包含的函数和存储过程:create or replace package fpbjcs.pkg_fpyzjh is -- Public function and procedure declarations function get_fpy原创 2017-05-19 10:59:13 · 5737 阅读 · 0 评论 -
Oracle数据库创建实体对象,在自命名包中定义函数以及返回实体对象数据
select fpdm,dsfjdm from tfp_fplx where dsfjdm='13701';--创建测试实体create or replace type testObject as object( fpdm varchar2(20), dsfjdm varchar2(20) )//分布执行,先执行上面的,在执行下面的--创建一个表,表中的每一条记录都是上面原创 2017-05-23 17:23:55 · 1529 阅读 · 0 评论 -
oracle不同版本字符集手稿
*************虚拟机用户:FPBJ密码:fpbj10.19.22.91orclimp fpbjy/fpbjy@10.19.22.91:1521/orcl file=F:\fpbjy1.dmp full=yimp csj/csj@139.196.221.111:1521/CSJ fromuser=csj_kf touser=csj file=原创 2017-05-11 15:25:57 · 350 阅读 · 0 评论 -
oracle9i数据库字符集为ASCII码,数据导入oracle11g字符集为utf8的数据库中。
问题场景:低版本oracle9i数据库,字符集编码格式为ASCII码,要把orac9i数据库导出为dmp文件,导入到字符集编码格式为utf8orac11g中,会出现中午乱码。解决方法:第一:首先要将高版本的oracle11g,字符集由utf8设置为ASCII码--修改字符集SHUTDOWN IMMEDIATE;STARTUP MOUNT EXCLUSIVE;原创 2017-05-11 15:07:13 · 1565 阅读 · 0 评论 -
从oracle 9i导出->11g导入 ,遇到ORA-39213: Metadata processing is not available
首先需要知道的是:1.从低版本导出,高版本导入,需要增加version 2.从高版本导出,低版本导入,可以向下兼容。下面我们来看看《1.从低版本导出,高版本导入》增加version 后,还是报错?--下面是9i,加了version=11.2.0.1.0导出[oracle@C8-DL580-GC-RAC1 dumpfiles]$ expdp unic*原创 2017-05-11 15:17:24 · 879 阅读 · 0 评论 -
Oracle11g数据库修改sys和system用户的密码和其他用户的用户名和密码
问题背景描述:由于新建用户设置密码复杂度过低,导致系统存在弱口令问题,现在要修改oracle用户用户名和密码。解决步骤:使用ssh工具以root身份连接服务器,然后切换到oracle用户:su - oracle(回车)使用sqlplus连接数据库:sqlplus /nolog(回车)以管理员身份登录sys用户:conn sys/sys as sysdba(回车)数据库连接成功,至此准备工作完成。二...原创 2018-06-27 08:56:57 · 15260 阅读 · 0 评论