新搭了压测数据库 同一存储过程 和原数据库数据量一致 但是执行速度慢了2个小时 请问我应该如何排查压测数据库执行缓慢原因
先检查一下对应的索引是否一致,服务器配置是否一致?
两个最可能的情况:
(1)数据库配置不一致,如空闲超时时间、最大连接数等;这种情况只能逐项排查,或者问一下数据库维护人员是否有修改默认设置等。
(2)跟硬件有关,CPU、内存、网络等,一般情况下,内存是足够用的,主要检查CPU和网络。在压测时,尽量关闭不必要的软件,不要使用网络传输数据。
将导出的*.dmp文件放在tempdump目录下
cmd命令行中执行impdp命令
impdp username/password@ORCL FULL=Y DIRECTORY=tempdump dumpfile=*.dmp remap_schema=oldUserName:newUserName remap_tablespace=oldTablespaceName:newTablespaceName TABLE_EXISTS_ACTION=REPLACE
REMAP_SCHEMA可以定义用户的切换。
REMAP_TABLESPACE可以定义切换对象的不同表空间。
TABLE_EXISTS_ACTION可以定义遇到表已存在时的处理方式,有四种
a.忽略(SKIP,默认行为);
b.在原有数据基础上继续增加(APPEND);
c.先DROP表,然后创建表,最后完成数据插入(REPLACE);
d.先TRUNCATE,再完成数据插入(TRUNCATE)。
ORACLE数据库性能受哪些因素影响?如何排查压测数据库执行缓慢原因?
ORACLE数据库的性能受以下因素影响:
排查压测数据库执行缓慢原因需要按照以下步骤进行:
代码示例:
-- 查询当前数据库参数设置 SELECT * FROM v$parameter;
-- 使用SQL Tuning Advisor优化慢SQL语句 SELECT DBMS_SQLTUNE.CREATE_TUNING_TASK('sql_id', 'optimizer_mode=ALL_ROWS') AS task_name FROM dual; EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name);
-- 使用索引优化工具优化索引 SELECT DBMS_INDEX_ADVANCED.REBUILD_ONLINE('table_name', 'index_name') FROM dual;