
oracle
#慧#
数据库爱好者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
批量的delete删除操作
某次接到一个删除需求,研发提供的删除脚本是几千行的delete语句。本次提供的删除语句每条删除数据量不多,直接执行也没有什么大的问题。但是如果表的数据量很大,执行一次删除的时间较长,每条delete删除的数据量也很大的情况下,会大量占用undo空间。处理步骤:1、在每条delete语句后加上commit;2、spool 生成执行日志3、处理日志查看删除条数1、在每条delete语句后加上commit;sed -i "s/$/&commit;/g" delete.sqlsed.原创 2021-05-12 15:42:58 · 3356 阅读 · 1 评论 -
oracle数据泵从高版本导出数据,底版本导入数据方式
需求:从oracle 11g数据库导出数据到oracle10g,第一次做在导入时报了如下的错误ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-39142: incompatible version number 3.1 in dump file ‘’原因是因为impdp导入数据,不能从高版本导入到低版本解决方式:在导出时通过参数version=10.2.0.5.0指定版本expdp原创 2021-03-24 09:12:50 · 766 阅读 · 2 评论 -
应用程序连接数突增导致服务器资源使用增加
今天接到了一个报警信息,提示oracle数据库服务器活动会话超出阈值。首先登陆监控系统,查看了下监控数据信息如下:可以看到从14:40左右开始连接数不断增加,从下面的资源使用情况可以看出,在连接数突增的这段时间,cpu,内存等使用率也较平常显著增加。内存使用情况:Cpu使用情况:登录数据库查看活动会话数:SELECT COUNT(*) FROM V$SESSION WHERE STATUS = 'ACTIVE' AND TYPE <> '..原创 2021-03-24 08:47:00 · 720 阅读 · 0 评论 -
resource_limit 及 profile
今天接到某套系统数据库备库的CPU使用率告警信息,登录zabbix监控告警查看CPU使用率如下:查看数据库活动会话信息SELECT * FROM v$session WHERE username='' AND status='ACTIVE';发现活动的会话达到了60个,通过AWR报告查看最后定位到有一条慢SQL,因此可以得到是由于并发的多个慢查询导致的CPU使用率升高。如何优化SQL这里就不在详细讲解了,因为今天主要想说一下PORFILE的使用。之前我在创建这个应用用户时记得是限制了原创 2021-02-08 16:39:23 · 3193 阅读 · 2 评论 -
ORACLE DG 参数force_logging为no的问题
今天研发反馈问题,在主库创建的表,在备库查询不到。根据研发提供的表信息去备库查询报如下错误。根据错误提示怀疑是主库的force_logging没有开启,在主库上查看果真force_logging就是关闭的。此时再通过主库设置force logging挽救,为时过晚,只能对之后的操作起作用,但对已造成的坏块无法修复。如果只是单独的一个或者几个文件受损,采用从主库备份单个文件再在从库进行恢复的方式会更快,但是如果不确定有多少文件损坏或者损坏的很多,建议直接重搭备库。今天案例的恢复使用原创 2021-02-08 15:18:51 · 596 阅读 · 0 评论 -
oracle impdp的TABLE_EXISTS_ACTION参数测试
(1)测试表数据(2)expdp导出表ORACLE_TEST的数据expdp system/oracle directory=DUMP_APP_BASE dumpfile=DUMP_APP_BASE_ORACLE_TEST.dmp tables=SCOTT.ORACLE_TEST logfile=DUMP_APP_BASE_ORACLE_TEST.log(3)测试 impdpTABLE_EXISTS_ACTION参数取不同值导入时的效果a.TABLE_EXISTS_ACTIO.原创 2020-10-25 18:27:56 · 887 阅读 · 0 评论 -
ORACLE的impdp导入时将指定表更名
impdp关于tables和remap_tables的一些注意事项(1)expdp时写上tables=(表)表示导出某些表;impdp时不写tables条件表示导入dumpfile中的所有表,impdp时写tables=(表)条件表示只导入指定的表,当然如果tables=(dumpfile中的所有表)也就是导入dumpfile中的所有表;且如果用system执行impdp时则tables=(表)时必须加上schema.表名,否则会默认是为system下面的表,会导致报错.。(2)remap_table如原创 2020-10-25 17:56:40 · 5625 阅读 · 0 评论 -
ORACLE的数据泵使用学习-query用法
oracle的expdpde query参数可以只将满足where条件的数据导出,有两种方式实现query的用法,下面逐一介绍。(1)expdp后直接接query参数,需要注意query后面的转义字符expdp \'sys/5\!Mon0em\? as sysdba\' directory=BI_DIR dumpfile=BI_DIR.dmp tables=SCOTT.ORACLE_TEST query=SCOTT.ORACLE_TEST:\"WHERE pub_date\>to_date原创 2020-10-25 17:50:22 · 4032 阅读 · 0 评论 -
oracle的rename操作需要注意事项
(1)查看测试表ORACLE_TEST对象信息SELECT * FROM dba_objects WHERE object_name='ORACLE_TEST';(2)查看用户APP_SCOTT对表ORACLE_TEST的访问权限SELECT * FROM dba_tab_privs WHERE table_name='ORACLE_TEST';(3)创建一个临时表ORACLE_TEMP,和表ORACLE_TEST的表结构一样create table SCOTT.ORAC.原创 2020-10-25 17:26:40 · 3161 阅读 · 0 评论 -
oracle常用查询慢SQL的语句
--查看某个时间段内历史会话连接数信息SELECT * FROM dba_users WHERE username=''; --得到USER_IDSELECT TO_CHAR(SAMPLE_TIME, 'yyyy-mm-dd hh24'), COUNT(*) FROM DBA_HIST_ACTIVE_SESS_HISTORYWHERE USER_ID = 59 ANDsample_time>=SYSDATE-1GROUP BY TO_CHAR(SAMPLE_TIME,...原创 2020-10-25 16:37:07 · 5223 阅读 · 0 评论 -
数据库对象的优化方法
(1)合适的数据类型(2)通过拆分提高表的访问效率垂直拆分:比如一个表有些常用的列,有些不常用的列,可以做垂直拆分优点:因为是垂直拆分,数据行变小,一个数据页能存放更多的数据,查询时减少IO次数。缺点:列冗余,查询所有数据时需要表连接操作水平拆分:根据一列或者多列数据的值进行拆分。使用场景:1、表很大,分割后可以降低在查询时需要读的数据和索引的页数,也降低了索引的层数,提高查询速度2、表中的数据本来就有独立性,例如表中记录各个地区的数据或不同时期的数据,有些数据常用,有些不常用。3、需要原创 2020-10-25 16:35:22 · 332 阅读 · 0 评论 -
mysql和oracle数据库的union all操作的区别
(1)测试表> show create table test1\G*************************** 1. row *************************** Table: test1Create Table: CREATE TABLE `test1` ( `id` int(11) NOT NULL, `utime` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=In原创 2020-10-25 16:29:44 · 893 阅读 · 0 评论 -
system和sysaux表空间的回收
SYSAUX表空间被称为系统辅助表空间,是10g版本开始推出的新功能,主要的目的是为SYSTEM表空间减负,Oracle对SYSTEM表空间的维护有一套独立的体系,对SYSTEM表空间操作会占用额外的CPU资源,而且效率低下。在10g版本,增加了SYSAUX辅助表空间,将EM、AWR等组件的表从SYSTEM表空间挪到了SYSAUX表空间中,这样大大减少了SYSTEM表空间的消耗,也减少了Oracle对SYSTEM表空间维护的成本。查看表空间的使用率 SELECT * FROM (原创 2020-10-17 12:54:40 · 565 阅读 · 0 评论 -
expdp导出数据为空
今天在使用oracle的expdp工具导出数据时,数据没有导出,导出日志如下oracle@test export]$ expdp system/oracle directory=DUMP_APP_BASE dumpfile=DUMP_APP_BASE.dmp logfile=DUMP_APP_BASE.log schemas=testExport: Release 10.2.0.5.0 - 64bit Production on Thursday, 15 October, 202...原创 2020-10-17 12:46:35 · 647 阅读 · 0 评论 -
Oracle ORA-00984: column not allowed here
今天在使用oracle的sql loader导入数据时,提示如下错误:我的ctl文件内容如下,其中load datainfile *append into table card_testfields terminated by ','TRAILING NULLCOLS(CODE,NAME "TEST",VALUE "0",STATUS "0",INSERT_TIME "sysdate",SEND_TIME,SEND_CN,expire_date "to_date('2023-12-3原创 2020-09-29 14:14:18 · 2228 阅读 · 0 评论 -
事务的四种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,但原创 2020-09-27 21:15:17 · 266 阅读 · 0 评论 -
Shared Everything和Shared-Nothing区别
数据库构架设计中主要有Shared Everthting、Shared Nothing、和Shared Disk。Shared Everthting一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表SQLServer。Shared Disk各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表 Oracle Rac, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口原创 2020-09-27 21:09:25 · 1269 阅读 · 0 评论 -
LOGMINER分析日志的三种方式之DICT_FROM_REDO_LOGS模式
这种方法必须启动supplemental log,否则会报ORA-01354错误,如下使用DICT_FROM_REDO_LOGS方式,进程会将数据库的数据字典信息抽取到online redo log里去,如果数据库的数据字典较大,或者redo log太小,或者DML操作较频繁,就有可能在抽取数据字典信息时发生日志切换操作。利用这种方式可以使用其他数据库(测试数据库)来分析生产库的归档日志信息,需要将包含所有数据字典信息的归档日志和需要分析归档日志一起发送到其他数据库(测试服务器),以减少直接在生产库原创 2020-09-27 15:45:16 · 826 阅读 · 0 评论 -
LOGMINER分析日志的三种方式之dictory模式的用法
dictory模式:这种模式是将数据库的数据字典抽取到操作系统的一个文件里,利用这种方法也可以使用其他数据库来分析生产库的日志,但是这种方式必须设置UTL_FILE_DIR参数,这个参数是静态参数,修改后必须重启数据库才会生效。这种方式不仅可以分析当前数据库的ONLINE REDO LOG和ARCHIVE LOG,还可以分析其他数据库的归档日志,使用这种方式需要先建立一个字典文件,操作起来也比较麻烦,依赖性也较高,需要设置数据库的UTL_FILE_DIR参数,UTL_FILE_DIR参数默认没有设置,而原创 2020-09-27 15:39:28 · 1724 阅读 · 0 评论 -
LOGMINER分析日志的三种方式之dict_from_online_catalog模式
DICT_FROM_ONLIE_CATALOG:10g开始,ORACLE开始支持DICT_FROM_ONLIE_CATALOG模式,可以直接使用数据库的的数据字典查看相关的元数据信息,该模式要求数据库必须处于open 状态,而且只能对当前数据库的日志进行分析,效率快,但对数据库会产生一定的压力。(1)分析REDO日志的实验1.创建测试表,并做DML操作 create table t_test(id number,name varchar2(15)); insert in.原创 2020-09-27 15:10:30 · 1427 阅读 · 0 评论 -
ORACLE的动态采样分析
动态采样(Dynamic Sampling)是在ORACLE 9i Release 2中开始引入的一个技术,引入它的目的是为了应对数据库对象没有分析(统计信息缺失)的情况下,优化器生成更好的执行计划。简单的说,在数据库段(表、索引、分区)对象没有分析的情况下,为了使CBO优化器得到足够多的信息以保证优化器做出正确执行计划而发明的一种技术。它会分析一定数量段对象上的数据块获取CBO需要的统计信息。动态采样技术仅仅是统计信息的一种补充,它不能完全替代统计信息分析。 ...原创 2020-09-27 14:59:42 · 693 阅读 · 0 评论 -
Oracle 数据库告警日志产生大量Checkpoint not complete的处理
(1)报错信息 Wed Sep 16 14:31:48 2020 Thread 1 cannot allocate new log, sequence 1715 Checkpoint not complete Current log# 1 seq# 1714 mem# 0: /U01/app/oracle/oradata/testdb/redo01a.rdo Current log# 1 seq# 1714 mem# 1: /U01/app/oracle/o...原创 2020-09-27 14:57:14 · 793 阅读 · 1 评论 -
oracle中逻辑运算符(not,and,or)及其优先级
逻辑运算符 意义 and 双值运算符,如果左右两个条件都为真,则得到的值就为真 or 双值运算符,只要左右两个条件有一个为真,则得到的值就为真 not 单指运算符,如果原条件为真,则得到真,如果元条件为假,反之如果原条件为假,则结果为真 select * from emp where sal > 2000 and job = '...原创 2020-09-27 14:54:11 · 9336 阅读 · 0 评论 -
oracle查询不等于条件包含null值
测试表 create table testN (id int); insert into testN values(1); insert into testN values(2); insert into testN values(NULL); commit; (2)查询id不等于2的数据 select * from testN where id<>2; 可以发现查询结果集不包括id...原创 2020-09-27 14:52:15 · 6473 阅读 · 0 评论 -
ORACLE的数据抽样
采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项。使用sample获取随机结果集(sample只对单表生效,不能用于表连接、远程表、视图)语法:SAMPLE [BLOCK](sample_percent)[SEED (seed_value) ]SAMPLE:表示按行采样来执行一个全表扫描,Oracle从表中读取特定百分比的记录,并判断是否满WHERE子句以返回结果。BLOCK:表示原创 2020-09-01 22:17:46 · 910 阅读 · 0 评论 -
V$PARAMETER
v$parameter显示当前对会话有效的初始化参数的信息。新会话从v$system_parameter视图显示的实例范围值中继承参数值。查看数据库的参数信息:SELECT name,type,value,isdefault,isses_modifiable,issys_modifiable FROM v$parameter...原创 2020-08-27 22:43:15 · 1261 阅读 · 0 评论 -
ORACLE数据库杀掉会话进程的三种方式
--1.ALTER SYSTEM KILL SESSIONalter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。--2.ALTER SYSTEM DISCONNECT SESSIONALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(.原创 2020-08-27 22:37:16 · 6397 阅读 · 0 评论 -
v$session
表结构信息(常用的部分列)--v$session视图的个别字段详情saddr(session address):表示当前记录的内存地址;paddr(process address):该session对应的进程地址,关联v$process的addr字段,可以通过这个字段查出当前session对应操作系统的哪个进程的id;taddr(transation address):当前有活动事务的地址,关联v$transaction表的addr,通过这个字段关联查出当前session正在使用的回滚段的情原创 2020-08-27 22:28:46 · 1144 阅读 · 0 评论 -
Oracle 11g AMM与ASMM切换
在10g时,Oracle推出了ASMM(Automatic Shared Memory Management),实现了Oracle SGA和PGA内部结构的自调节。进入11g之后,AMM(Automatic Memory Management)实现了参数MEMORY_TARGET,将SGA和PGA的规划全部统筹起来对待。默认情况下,Oracle 11g是使用AMM的,我们在安装过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取.原创 2020-08-27 22:20:22 · 464 阅读 · 0 评论 -
ORACLE修改字段大小过程分析
(1)测试表-- Create tablecreate table RECALL.RECALL_TIMELY_FOX( ID NUMBER(16) not null, LOGIN_TIME DATE, CN VARCHAR2(50), CN_MASTER VARCHAR2(100), GAME_TYPE NUMBER(2) default 1, LOGIN_IP VARCHAR2(20), INSERT_TIME DA原创 2020-08-26 21:26:44 · 3256 阅读 · 0 评论 -
oracle11g的自动维护任务
(1)问题描述,数据库报空间不足(2)排查过程: 查看服务器占用空间最多的文件,发现是数据文件其实就占用了7个T,之前系统是挺稳定的状态,所以怀疑是否是产生的归档日志要比平时多一些。使用健康检查脚本和生成的awr报告内容如下:由健康检查结果和awr报告可以看出,call dbms_space.auto_space_advisor_job_proc ( )这个sql运行时间3542秒,但是执行次数0次说明1次都还没完事。通过上网查到:Oracle 11g中有如下3个自动...原创 2020-08-26 21:22:09 · 942 阅读 · 0 评论 -
sysaux表空间空间不足处理方法
1、查看表空间使用率select * from (select 'check_tbs',a.tablespace_name, (round(((a.b - b.b) / a.mb) * 100, 1)) max_free_PERCENT from (select tablespace_name, round(sum(bytes) / (1024 * 1024)) b,原创 2020-08-26 21:15:08 · 3642 阅读 · 0 评论 -
ORA-19606: Cannot copy or restore to snapshot control file
Control File Copy 301-SEP-10 C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFAXMPRD.ORARMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: .原创 2020-08-25 22:54:47 · 208 阅读 · 0 评论 -
kafka-connect-oracle数据同步到kafka
(1)oracle端打开归档,最小补全日志,创建账号alter database add supplemental log data (all) columns;create user kafka_test identified by 123456;grant connect,resource,dba to kafka_test;(2)下载需要的jar包ojdbc6.jar、kafka-connect-oracle-1.0.jar包放在libs目录下面,本机的目录如下/home/kaf原创 2020-07-28 00:02:37 · 1971 阅读 · 1 评论 -
confluent kafka-connect-jdbc
1.1 Kafka connect的简单介绍1.1.1 Kafka connect是什么?Kafaka connect 是一种用于在Kafka和其他系统之间可扩展的、可靠的流式传输数据的工具。它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单。Kafka Connect可以从数据库或应用程序服务器收集数据到Kafka topic,使数据可用于低延迟的流处理。导出作业可以将数据从Kafka topic传输到二次存储和查询系统,或者传递到批处理系统以进行离线分析。1.1.2 Kaf原创 2020-07-27 23:54:19 · 2205 阅读 · 0 评论 -
count(1)、count(*)、count(字段)、count(null)的区别
(1)准备测试表和数据create table oracle_test(name varchar2(20));insert into oracle_test select 'bob' from dual;insert into oracle_test values('jack');insert into oracle_test values('');insert into oracle_test values('null');commit;(2)查询结果SQL> sele原创 2020-07-27 23:23:57 · 1126 阅读 · 1 评论 -
ORA-00000 normal, successful completion 问题解决
在启动oracle时报如下错误:Connected.SQL> startup nomountORA-00000: normal, successful completion原因是没有配置hosts文件,在/etc/hosts文件加入IP和主机名,问题就解决了。另外,除了没有配置hosts文件,如果写错也会出现这个问题。...原创 2020-07-07 22:54:17 · 3520 阅读 · 0 评论 -
oracle修改当前序列的值
查看当前序列的值可以使用如下sql查询select 序列名.currval from dual;如果需要改变序列的值,比如当前值是10,修改为8:alter sequence 序列名 increment by -2;如果需要改变序列的值,比如当前值是10,修改为20:alter sequence 序列名 increment by 10;上述方法通过修改当前序列增量长度间隔值,用于修改当前序列值,当修改好后,记得一定要把序列增量值修改为原来的设置,一般情况下,增量步长值为1.原创 2020-07-07 22:41:52 · 1906 阅读 · 1 评论 -
ORA-00257:archiver error解决办法
使用pl/sql developer登录数据库时提示ORA-00257的错误,查看错误信息如下:[oracle@test ~]$ oerr ora 0025700257, 00000, "archiver error. Connect internal only, until freed."// *Cause: The archiver process received an error while trying to archive// a redo log. If the proble原创 2020-07-03 23:26:21 · 980 阅读 · 0 评论 -
ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired
今天在执行一个drop 表的操作时,报ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired错误信息,Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application原创 2020-07-03 23:11:26 · 727 阅读 · 0 评论