记一次迁移Oracle新数据库后更新、删除、插入很慢

新数据库和旧数据库,创建一模一样的测试表数据300万条,数据一模一样。都没有索引。

执行同一条删除sql语句,旧数据执行4分钟结束,新数据库20分钟结束。

由于不是专业dba折腾了很久。

问题排查如下:

1、生成Oracle AWR报告

Oracle AWR报告生成步骤 https://blog.csdn.net/u014644574/article/details/120063311

2、分析awr报告

 

 通过对比2个数据的awr报告发现,新数据时间都消耗在 log file switch (checkpoint incomplete) 上了,既然定位到了原因,接下来就好办了。

3、修改redo log组以及大小

#查看redo信息、文件保存路径
SQL> select group#,type, member from v$logfile;
#新增3个组
SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/home/oracle/db/oradata/orcl/redo04.log') size 500M;
SQL> ALTER DATABASE ADD LOGFILE GROUP 5 ('/home/oracle/db/oradata/orcl/redo05.log') size 500M;
SQL> ALTER DATABASE ADD LOGFILE GROUP 6 ('/home/oracle/db/oradata/orcl/redo06.log') size 500M;
#查看每个组的大小、状态
SQL> select group#,thread#,archived,status, bytes/1024/1024 "大小(M)" from v$log;
##切换组
#一直执行下面这条语句,直到要删除组的状态为inactive
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
#删除1、2、3组,并删除物理路径下的文件
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
#新增3个组
SQL> ALTER DATABASE ADD LOGFILE GROUP 1 ('/home/oracle/db/oradata/orcl/redo01.log') size 500M;
SQL> ALTER DATABASE ADD LOGFILE GROUP 2 ('/home/oracle/db/oradata/orcl/redo02.log') size 500M;
SQL> ALTER DATABASE ADD LOGFILE GROUP 3 ('/home/oracle/db/oradata/orcl/redo03.log') size 500M;

猜你喜欢

转载自blog.csdn.net/u014644574/article/details/120064174