首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从ORA-01950报错我们能了解的知识

开发同学提了一个问题,说个性能测试的数据库,正在准备数据,使用如下批量操作的语句,报错ORA-01950,无法执行插入, (注:用户、表、索引等对象,均用测试的名称代替), SQL> insert...问题一:为什么用户USER_A默认表空间是TBS_DAT,报的是USERS表空间无权限?...其实看一下IDX,就可以猜出来了,这张表一定是索引,并且存储于TBS_IDX,而且用户对于TBS_IDX无使用权限, SQL> select index_name, table_name, tablespace_name...] move lob([lob_column_name]) store as(tablespace [target_tablespace_name]) 例如下面的语句alter table test...move lob(msg_content) store as (tablespace tbs_dat); 索引和LOB对象变更了表空间,要检查一下索引的状态,是否正确,如果下面的语句返回结果,则需要使用

1.7K40

导入导出的两个小错误

问题1, 这个错误主要是因为笔记本的操作系统字符集和数据库的字符集不一致导致,好像对imp导入,是无影响的, D:\>exp user/passwd file=d:\user.dmp rows=nExport...正在导出表 TBLEXP-00091: 正在导出有问题的统计信息。EXP-00091: 正在导出有问题的统计信息。......YES 此时,可以针对数据表、索引、物化视图等手工分配Extent,看到一种方法,就是利用user_tables,将记录数为0的表,检索出来拼出手工分配Extent的SQL语句SQL> select...from user_tbles where num_rows=0; 但是这种做法,觉得可能不很准确,如果按照segment_created字段,就会挑出来未分配任何Extent的表,进行拼接SQL,...手工分配Extent, SQL> select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

就想加个索引,怎么就这么难?

❝领导让SQL优化,直接把服务干挂了...❞ 前言 MySQL大表加字段或者加索引,是一定风险的。 大公司一般DBA,会帮助开发解决这个痛点,可是DBA是怎么做的呢?...❞ 几个有用的SQL语句 # 展示哪些线程正在运行 SHOW PROCESSLIST; # 查看正在执行的事务 SELECT * FROM information_schema.INNODB_TRX;...❝就想加个索引,怎么就这么难? ❞ 看吧,就因为加了个索引,服务就挂了,没加之前还是好好的。遇到问题,我们要冷静,不是我们的锅坚决不能背,真的是我们的问题,下次一定要记得改正。...类似于这种的语句ALTER TABLE user ADD INDEX idx_test_id (test_id), ALGORITHM=INPLACE, LOCK=NONE在普通的ALTER TABLE...❝实际上,ALTERT TABLE语句如果不加ALGORITHM参数,默认就会选择ALGORITHM=INPLACE的形式,如果执行的语句支持INPLACE,否则,会使用ALGORITHM=COPY。

45210

MySQL 故障诊断:MySQL 占用 CPU 过高问题定位及优化

◆ 定位分析问题 SQL 光说不练假把式,接下来我们比划比划。 首先,搭建一套模拟环境,这里的得力助手 DBdeployer 来帮我搭建一套模拟环境。...线程正在计算 MyISAM 引擎表键值分布(例如 ANALYZE TABLE) checking permissions 线程正在检查服务端是否执行语句所需要的的权限 Checking table...to tmp table 线程正在执行一个 ALTER TABLE 语句。...后删除中间临时表,如果没有使用临时表,无该状态 rename 重命名表 rename result table 线程正在执行 ALTER TABLE 语句,创建一个新表,重命名新表替换老表 Reopen...to net 服务端正在网络中写包,在 5.7.8 中该状态叫 Sending to client 通过结果我们可以大致看看如下的情况: 是否大量的未执行查询语句 是否正在执行的 DML 语句

11K24

上周上线碰见的ORA-00054错误回放

首先,我们模拟下报错过程,创建测试表,session 1执行update语句,但不提交,session 2执行alter table变更name字段长度,此时立即报错ORA-00054, SQL> create...结论: 至此,开始的问题,就可以解释清楚了,上线过程中,执行alter table改表的字段长度,但由于有些表,此时碰巧业务操作,对数据做了DML,交易尚未提交,因此由于TM锁未释放,导致alter...table这条DDL语句执行报错,对于alter table执行时尚未有DML未commit操作的表,自然就可以执行成功了。...alter table新增字段操作究竟有何影响?(上篇) alter table新增字段操作究竟有何影响?(下篇) ---- 针对ORA-00054这问题,可以再了解一些。...这参数一个问题,就是对于alter table加字段操作,是不起作用,无论ddl_lock_timeout设置为0还是非0, SQL> alter table tbl_lock add sex varchar2

1.2K30

MySQL使用技巧: 如何查看mysql正在执行的SQL语句

MySQL使用技巧: 如何查看mysql正在执行的SQL语句 背景: 最近项目开发用到MySQL,想要查看后台执行的sql语句,立马google得知、可以使用 show processlist; 命令来解决...,通过里面输出结果的字段解释中可以分析执行了的sql语句类型,发现不太适合一般的初级使用者,而通过日志文件查看sql语句是最直接的方法。...state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,  一个sql语句,已查询为例,可能需要经过copying to tmp...table,Sorting result,Sending data等状态才可以完成,   info列,显示这个sql语句,因为长度       限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据...例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。

5.5K20

SQL 某状态耗时过多的优化

Mysql Innodb 性能优化 事实上,在实际使用中,最为常见的性能问题大多是不合理的使用方式,即 sql 语句问题引起的,因此与参数、索引优化相比,直接优化和修改 sql 语句获得的收效往往更加明显...查看正在执行的 SQL 语句 select * from information_schema....例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。...converting HEAP to MyISAM 线程正在将内存表中的内部临时表转换为磁盘上的 MyISAM 表 copy to tmp table 线程正在执行一条 alter table 语句,...Creating index 线程正在对一个 MyISAM 表执行 ALTER TABLE … ENABLE KEYS Creating sort index 正在执行一个使用内部临时表的查询 creating

1.4K20

alter table新增字段操作究竟有何影响?(下篇)

; 执行以下两条语句会hang: SQL> lock table t in share mode; SQL> lock table t in exclusive mode; 从ROW EXCLUSIVE...EXCLUSIVE允许锁定表的查询操作,禁止其他session对该表的任何操作 觉得这里Oracle的介绍是有些问题的,不够严谨,至少没有说清楚到底限制何不同,接下来,我们还是通过实验的方式进行说明...此时session 2可以执行: SQL> lock table t in row share mode; SQL> lock table t in share mode; 以下两条语句均会hang...此时session 2可以执行: SQL> lock table t in row share mode; session 2执行以下语句均会hang: SQL> lock table t in...6级锁exclusive 独占(X):独立访问使用,exclusive,锁Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive

67620

R语言实战第一,二章SQL版环境准备导入数据查询注册90天内购买的用户数量查询90天内未购用户和收到短信的比例

和答案一对比就发现问题了,自己的计算数据和正确结果差距太大了。看来用语言暂时还是很难保证数据计算的准确性, 所以了这篇,毕竟SQL语句更熟悉一些。...环境准备 要使用SQL查询自然要先有数据库了,了docker技术后,就不太倾向于直接在电脑上安装软件了,所以这次要先将MySQL在docker中启动起来。...使用的是Mac,docker的安装就不赘述了,直接总官网下载就可以了,目前Mac已经不在使用boot2docker了,号称是原生docker,经过这次实践发现,其实谈不上原生,依旧是虚拟机方式实现的...这里需要注意一点MySQL的日期计算最好不要直接使用算数运算,在这个语句使用的是 and (p.purchase.date - u.signup.date) <= 90 结果计算的数量就比实际的数量少了很多...但是这次使用感觉是R确实在速度上比MySQL要快一些。 以下是使用三表联合查询的语句,真是慢的要死,几十分钟都没有响应。后来实在是没有办法,只能查询正在进行的query,然后kill了。

62910

谈谈mysql和oracle的使用感受 -- 差异

走过路过不要错过 点击蓝字关注我们 之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,hive作为简单查询工具,maxcompute作为大数据查询服务等等,没有感觉多少差别...oracle与mysql同样是sql类数据库,大体上是差不多的,是指crud大体流程。 细节总是不一样的,尤其是有些老梗值得一提。...alter table tb1 change column f1_old f1_new int(11) comment 'xxx'; 而oracle中则分情况处理,空字段直接改,不允许修改值字段类型,...正在执行的SQL, b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr...AND b.sql_hash_value = c.hash_value; 反正是记不住这么长的sql的。

1.3K30

杀手SQL- 一条关于 'Not in' SQL 的优化案例

编辑手记:在 DBA 所优化的数据库环境中,绝大多数性能问题其实是由于 SQL 编写不当导致的。SQL 的世界无奇不,今天我们一起见识一条让你绝对想吐血的杀手SQL。...若加个Not null 条件或者栏位属性设为not null SQL> alter table T_OBJ modify(OBJECT_NAME NOT NULL); 再次执行相同语句SQL> SELECT...SQL>alter session set "_optimizer_null_aware_antijoin"=FALSE; 再次执行以上语句并查看执行计划: SQL> SELECT * FROM T_TABLE...猜中了这开头,却没有猜中这结局。 但在本案例中,由于SQL语句中没有显式写出表明,导致在前期分析过程中一直没有发现这个错误。...你是不是也很无语,其实更想问的是,你是不是也经常写出杀手SQL呢,没关系,你有病药啊。

61760

【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?

生产库上对于重要的表和索引需要修改为LOGGING,并行度可以根据需要来修改,SQL语句为:“ALTER TABLE TT LOGGING NOPARALLEL;”或“ALTER INDEX IDNX11...当一条SQL语句发生全表扫描、全分区扫描及索引快速全扫描的时候,若优化器满足下面的条件之一就可以使用并行处理: ① 会话级别,会话设置了强制并行,例如,“ALTER SESSION FORCE PARALLEL...② 语句级别,SQL语句中有Hint提示,例如,使用PARALLEL或者PARALLEL_INDEX。如,“SELECT /*+ PARALLEL(T 4) */ FROM T;”。...在默认值计算公式中,实例上赋予正在使用的concurrent_parallel_users的值和内存管理设置相关。...n LIMITED:对某些语句开启自动并行执行,语句排队和内存并行执行被关闭。自动并行度仅仅适用那些存取显式用PARALELL语句标示默认并行度的表或索引的语句

1.5K20

SQL线程状态分析:processlist

(sleep),查询(query),连接(connect),如果一条 SQL 语句是query状态,而且time时间很长,说明存在问题 time 连接状态持续的时间,单位是秒(s) state(重点分析...) 当前 SQL 语句的状态,是优化的重要参数 info 显示当前所执行的 SQL 语句 state 详解 state 在优化中是很重要的字段,能提供给我们很多这条 SQL 线程的当前状态,帮助我们能定位分析问题...二:优化 SQL 语句逻辑,可以用 Java 代码实现部分耗时的 SQL 逻辑。三:可以调节tmp_table_size和max_heap_table_size两个参数,增大内存中临时表的大小。...Opening tables 解释:一个 SQL 线程正在尝试打开数据表,这个过程正常的情况是很快的,但是如果有人在 alter table,或者 lock table 语句之前完之前,其他线程无法打开这个数据表...结语 大家可以根据state状态具体分析这个SQL语句问题出现在哪里,结合老哥之前讲过的数据库锁,索引优化,show Profiles等等优化手段,进行综合分析,老哥只能告诉你们理论知识,把理论知识先学好

1.3K32

面向对象(二十九)-MySql

其他类型的数据存储,可以使用,如获取文件系统上的文件或内存中的大的哈希表,数据并写入不会那么快,这些类型的系统易于使用。...什么是 SQLSQL 指结构化查询语言 SQL 使我们能力访问数据库 SQL 是一种 ANSI (美国国家标准化组织)的标准计算机语言 SQL 能做什么?...正在开发,销售。MySQL变得如此受欢迎,因为许多很好的理由: MySQL在一个开源许可下发布。所以使用它不要担心什么问题。 MySQL本身是非常强大的程序。...命令提示符会以 -> 提示你继续输入(个别特例, 加分号是一定不会错的); 3....创建数据库表 使用 create table 语句可完成对表的创建, create table 的常见形式: create table 表名称(列声明); 以创建 students 表为例, 表中将存放

1.6K10

突发状况,数据库表被锁,抓瞎了?

对的,网管解决问题的神器——“重启”。至于后果如何,你能不能跑了,要你自己三思而后行了! 重启是可以解决表被锁的问题的,针对线上业务很显然不太具有可行性。...第二步:查看进程 查看数据库当前的进程,看看是否SQL或被阻塞的线程。...MySQL中表级别的锁两种:一种是表锁,一种是元数据锁(metadata lock,MDL)。 表锁是在Server层实现的,ALTER TABLE之类的语句使用表锁,忽略存储引擎的锁机制。...通过show processlist可以看到表上有正在进行的操作(包括读),此时alter table语句无法获取到metadata 独占锁,会进行等待。...总之,alter table语句是很危险的(核心是未提交事务或者长事务导致的),在操作之前要确认对要操作的表没有任何进行中的操作、没有未提交事务、也没有显式事务中的报错语句

1K10

架构师技能5:深入MySQL原理-Waiting for table metadata lock引发系统崩溃

在mysql系列专栏里面,深入浅出的总结了mysql相关知识,感兴趣的话可以去阅读,问题就可以随时相互交流学习。 1、MySQL架构原理(详解): 了解mysql原理机制,如何执行sql。...1、Online ddl用法 ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE; ALTER 语句中可以指定参数...(包括读),此时alter table语句无法获取到metadata 独占锁,会进行等待。...# Session 3 > ALTER TABLE tbl_name ADD COLUMN n INT; # 阻塞 通过 `show processlist` 可以看到 ALTER 操作正在等待 MDL...场景四:当前有对表的长时间查询或使用mysqldump/mysqlpump时,使用alter会被堵住 总之,alter table语句是很危险的(其实他的危险其实是未提交事物或者长事务导致的),在操作之前最好确认对要操作的表没有任何进行中的操作

70520

mysql基本sql语句大全(基础用语篇)_mysql常用查询语句

大家好,又见面了,是你们的朋友全栈君。 MySQL 常用语句大全 一、连接 MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1、例 1:连接到本机上的 MYSQL。...: shell> mysqladmin -u root -p -t databasename > a.sql 那么如果只想要数据,而不想要什么 sql 命令时,应该如何操作呢?...mysql -uroot -proot >e:\staffer.sql 这样的话系统种就不能存在 staffer 库,且无法导入其他名字的数据库, 当然你可以手工修改 staffer.sql 文件...这个工具有个问题,无法忽略某些列,这样对我们的数据导入很大的麻烦,虽然 可以手工设置这个字段,但会出现莫名其妙的结果,我们做一个简单的示例 我们定义如下的 depart_no.txt,保存在 e 盘,...7、对表重新命名alter table table1 rename as table2; 8、修改列的类型 alter table table1 modify id int unsigned;//修改列

2.9K30

架构师技能6:深入MySQL原理-Waiting for table metadata lock引发系统崩溃

在mysql系列专栏里面,深入浅出的总结了mysql相关知识,感兴趣的话可以去阅读,问题就可以随时相互交流学习。 1、MySQL架构原理(详解):  了解mysql原理机制,如何执行sql。...1、Online ddl用法 ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE; ALTER 语句中可以指定参数...(包括读),此时alter table语句无法获取到metadata 独占锁,会进行等待。...# Session 3 > ALTER TABLE tbl_name ADD COLUMN n INT; # 阻塞 通过 `show processlist` 可以看到 ALTER 操作正在等待 MDL...场景四:当前有对表的长时间查询或使用mysqldump/mysqlpump时,使用alter会被堵住 总之,alter table语句是很危险的(其实他的危险其实是未提交事物或者长事务导致的),在操作之前最好确认对要操作的表没有任何进行中的操作

67510
领券