- 博客(133)
- 资源 (20)
- 收藏
- 关注
原创 批量的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
3315
1
原创 split大文件切割
split -l 2000 test.txt -d -a 2 lim_-l:按行分割,上面表示将urls.txt文件按2000行一个文件-d:添加数字后缀,如00、01、02-a 2:表示用两位数据来顺序命名lim_:用来定义分割后的文件名前面的部分。例如:将文件CS_SUS_RECORD_20181228.txt切分split -l 1000000 CS_SUS_RECORD_20181228.txt -d -a 2 CS_SUS_RECORD_20181228_...
2021-05-12 15:12:27
362
原创 dd命令测试硬盘读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/home/1Gb.filedd if=/home/1Gb.file bs=64k | dd of=/dev/nullif=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节obs=b.
2021-05-12 15:10:54
1189
原创 服务器硬件查看命令MegaCli64
##DELL服务器硬件查看命令/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL | grep "Error" 【正常都是0】/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -a0 【写策...
2021-05-12 14:31:55
1164
原创 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
739
2
原创 mysql数据库mysqldump逻辑备份测试
1、备份命令--备份单表mysqldump -uroot -hlocalhost --default-character-set=utf8 --triggers -R -q --set-gtid-purged=OFF test test >/home/test_0323/test1.sql通过打开general_log查看备份过程-- 查看日志是否开启show variables like 'general_log'; --查看日志文件保存位置show variable
2021-03-24 09:05:01
286
原创 mysql 5.7 主从架构下部分参数学习
1、replication_connection_configuration2、replication_connection_status3、replication_applier_status4、seconds_behind_master参数这个字段是度量从库SQL线程和I/O线程之间的时间差,单位为秒,如果主备之间的网络非常快,那么从库的I/O线程读取的主库binlog会与主库中最新的binlog非常接近,所以这样计算得来得值就可以作为主备之间的数据延迟时间,...
2021-03-24 08:53:02
236
原创 应用程序连接数突增导致服务器资源使用增加
今天接到了一个报警信息,提示oracle数据库服务器活动会话超出阈值。首先登陆监控系统,查看了下监控数据信息如下:可以看到从14:40左右开始连接数不断增加,从下面的资源使用情况可以看出,在连接数突增的这段时间,cpu,内存等使用率也较平常显著增加。内存使用情况:Cpu使用情况:登录数据库查看活动会话数:SELECT COUNT(*) FROM V$SESSION WHERE STATUS = 'ACTIVE' AND TYPE <> '..
2021-03-24 08:47:00
683
原创 mysql的Binlog_row_image参数学习
Binlog_row_image参数简介binlog_row_image这个参数是MySQL5.6新增的参数,默认值是FULL,在5.7版本默认值也是FULL。参数使用前提:binlog格式必须为row格式或者mixed格式,不可以是statement格式。名词解释:前镜像:数据库表中修改前的内容后镜像:数据库表中修改后的内容binlog_row_image参数可以设置三个合法值: FULL、MINIMAL、NOBLOB。不同参数设置的实验binlog_row_image为F
2021-03-09 22:20:30
5559
1
原创 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
3153
2
原创 ORACLE DG 参数force_logging为no的问题
今天研发反馈问题,在主库创建的表,在备库查询不到。根据研发提供的表信息去备库查询报如下错误。根据错误提示怀疑是主库的force_logging没有开启,在主库上查看果真force_logging就是关闭的。此时再通过主库设置force logging挽救,为时过晚,只能对之后的操作起作用,但对已造成的坏块无法修复。如果只是单独的一个或者几个文件受损,采用从主库备份单个文件再在从库进行恢复的方式会更快,但是如果不确定有多少文件损坏或者损坏的很多,建议直接重搭备库。今天案例的恢复使用
2021-02-08 15:18:51
566
原创 MySQL 的事务隔离级别的现象和实现
事务的隔离级别提到事务,我们肯定会想到 ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),今天我们来说说其中 I,也就是隔离性。当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了隔离级别的概念。SQL 标准的事务隔离级别包括:读未提交(read uncommitted)、读
2021-01-28 21:25:13
174
原创 一条更新语句的执行流程是怎样的呢?
MySQL 可以恢复到半个月内任意一秒的状态,这是怎样做到的呢?下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c。create table T(ID int primary key, c int);--更新表Tupdate T set c=c+1 where ID=2;首先,可以确定的说,查询语句的那一套流程,更新语句也是同样会走一遍。首先通过连接器连接数据库,在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表 T 上所有缓存结果都清空。所以
2021-01-27 07:49:17
407
原创 一条查询SQL的执行过程
查询sql如下的一条查询SQL它的内部执行过程是怎样的呢?Mysql架构图下图是简化的mysql逻辑架构图,总体mysql的架构分为server层和存储引擎层。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、..
2021-01-26 22:34:50
315
4
原创 gcc版本升级
gcc升级,服务器目前gcc版本为4.4.7,升级到4.8.2(1)获取安装包http://ftp.gnu.org/gnu/gcc(2)解压包安装编译使用的依赖包cd gcc-4.8.2 ./contrib/download_prerequisites (3)创建目录供编译的文件存放mkdir gcc-build-4.8.2cd gcc-build-4.8.2(4)生成makefile文件../configure -enable-checking=release -enable-
2020-11-23 11:13:20
2053
原创 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
824
原创 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
5441
原创 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
3953
原创 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
3062
原创 mysql的锁机制学习
1、不同引擎支持不同的锁机制innodb支持表级也支持行级锁表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。2、查询表级锁争用情况(root:oratest_0112:Tue Oct 20 13:00:39 2020)[sakila]> show status like 'table%';+----------------------------+-------
2020-10-25 16:45:10
181
原创 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
5192
原创 数据库对象的优化方法
(1)合适的数据类型(2)通过拆分提高表的访问效率垂直拆分:比如一个表有些常用的列,有些不常用的列,可以做垂直拆分优点:因为是垂直拆分,数据行变小,一个数据页能存放更多的数据,查询时减少IO次数。缺点:列冗余,查询所有数据时需要表连接操作水平拆分:根据一列或者多列数据的值进行拆分。使用场景:1、表很大,分割后可以降低在查询时需要读的数据和索引的页数,也降低了索引的层数,提高查询速度2、表中的数据本来就有独立性,例如表中记录各个地区的数据或不同时期的数据,有些数据常用,有些不常用。3、需要
2020-10-25 16:35:22
310
原创 lower_case_table_names参数
(1)lower_case_table_names参数的取值lower_case_table_names默认值为 0,Windows下默认值是 1 .Mac OS X下默认值是 2 。0:使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将lowercase-table-names强制设为0,并且使用不同的大小
2020-10-25 16:34:37
803
原创 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
862
原创 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
539
原创 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
612
原创 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
2191
原创 事务的四种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,但
2020-09-27 21:15:17
257
原创 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
1202
原创 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
780
原创 LOGMINER分析日志的三种方式之dictory模式的用法
dictory模式:这种模式是将数据库的数据字典抽取到操作系统的一个文件里,利用这种方法也可以使用其他数据库来分析生产库的日志,但是这种方式必须设置UTL_FILE_DIR参数,这个参数是静态参数,修改后必须重启数据库才会生效。这种方式不仅可以分析当前数据库的ONLINE REDO LOG和ARCHIVE LOG,还可以分析其他数据库的归档日志,使用这种方式需要先建立一个字典文件,操作起来也比较麻烦,依赖性也较高,需要设置数据库的UTL_FILE_DIR参数,UTL_FILE_DIR参数默认没有设置,而
2020-09-27 15:39:28
1683
原创 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
1376
原创 ORACLE的动态采样分析
动态采样(Dynamic Sampling)是在ORACLE 9i Release 2中开始引入的一个技术,引入它的目的是为了应对数据库对象没有分析(统计信息缺失)的情况下,优化器生成更好的执行计划。简单的说,在数据库段(表、索引、分区)对象没有分析的情况下,为了使CBO优化器得到足够多的信息以保证优化器做出正确执行计划而发明的一种技术。它会分析一定数量段对象上的数据块获取CBO需要的统计信息。动态采样技术仅仅是统计信息的一种补充,它不能完全替代统计信息分析。 ...
2020-09-27 14:59:42
657
原创 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
749
1
原创 oracle中逻辑运算符(not,and,or)及其优先级
逻辑运算符 意义 and 双值运算符,如果左右两个条件都为真,则得到的值就为真 or 双值运算符,只要左右两个条件有一个为真,则得到的值就为真 not 单指运算符,如果原条件为真,则得到真,如果元条件为假,反之如果原条件为假,则结果为真 select * from emp where sal > 2000 and job = '...
2020-09-27 14:54:11
8986
原创 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
6353
原创 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
877
原创 Postgresql的数据抽样
数据抽样(TABLESAMPLE)在数据处理方面经常用到,特别是当表数据量比较大时,随机查询表中一定数量记录的操作很常见,PostgreSQL早在9.5版时就已经提供了 TABLESAMPLE数据抽样功能,9.5版前通常通过ORDER BY random()方式实现数据抽样,这种方式虽然在功能上满足随机返回指定行数据,但性能很低。create table test01(id integer, val char(1000)); insert into test01 values(generate_s
2020-09-01 22:16:27
3405
1
原创 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
1235
原创 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
6201
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人