上午收到一个请求,创建索引,原表100G多B,行数4.3亿。语句如下:

ALTER TABLE arehouse_operation_log ADD lab_in varchar(32) NULL COMMENT 'lab';

CREATE INDEX warehouse_operation_log_lab_in_IDX USING BTREE ON warehouse_operation_log (lab_in);

在mysql 8.0.33上,

1061 - Duplicate key name 'warehouse_operation_log_lab_in_IDX'
时间: 1438.837s

约23分钟
执行过程中,不确定执行进度,使用语句查询
show processlist; 找到语句对应的id
select * from sys.session where conn_id = '93290' and trx_state='ACTIVE'\G;
查看执行进度
发现 process 一直卡在44.46,但未报错
突然到100%完成。所有,这个进度只能证明sql在运行,并不能真实反映进度信息。

Oracle - dg坏块修复(二)
一、概述
本文是坏块修复(一)的续篇,这篇文章将介绍如何在dg环境中模拟坏块,以及出现坏块该如何修复。实验分为以下几个步骤。

  1. 主库表出现坏块
  2. dg库表出现坏块

- 阅读剩余部分 -

(1)尝试删除

把mysql数据文件夹下的ib_logfile0和ib_logfile1这两个文件删除就可以了。

如果还不能解决问题,则

(2)修改mysql启动级别

在my.cnf中修改innodb_force_recovery=6, 然后启动mysql,正常应该能顺利启动。

然后用navicat备份所需的数据库;

停掉mysql

删掉iddata等文件,以默认的innodb_force_recovery=0启动

恢复备份的数据库

1、cd /var/lib rm -rf mysql/* systemctl start mysqld

2、初始密码在/var/log/mysqld.log这个文件里

3、输入命令:grep 'temporary password' /var/log/mysqld.log,可以直接获取密码。

(注:密码为冒号后面的所有字符!)

alter user 'root'@'localhost' identified by '密码';

use mysql;

update user set host='%' where user='root' limit 1;

flush privileges;

mysql从库开启crash-safe:

variable 1 varchar2;
exec :1:='HGV2305200017879'
variable 2 varchar2;
exec :2:='5569093'
variable 3 varchar2;
exec :3:='FQC_3D'

select * from BYDMESAMF.MES2_BYD_SFC_KEY t where t.sfc = :1 and t.name = :2 and t.value = :3

select * from BYDMESAMF.MES2_BYD_SFC_KEY t where t.sfc = 'HGV2305200017879' and t.name = '5569093' and t.value = 'FQC_3D?'