STEP 1 : Setup user
CREATE USER "TUNING" PROFILE "DEFAULT" IDENTIFIED BY "TUNING" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT CREATE SESSION TO "TUNING";
GRANT CREATE VIEW TO "TUNING";
GRANT SELECT ANY DICTIONARY TO "TUNING";
GRANT SELECT ANY TABLE TO "TUNING";
GRANT UNLIMITED TABLESPACE TO "TUNING";
GRANT "PLUSTRACE" TO "TUNING";
GRANT "RESOURCE" TO "TUNING";
STEP 2 : Create sample schema
connect tuning/TUNING
create table T_CURRENCY_CR (CR_PK varchar2(3 CHAR),CR_COMMENT varchar2(30 CHAR));
insert into T_CURRENCY_CR values ('EUR','Euro');
insert into T_CURRENCY_CR values ('USD','American Dollar');
insert into T_CURRENCY_CR values ('GBP','Britisch Pound');
insert into T_CURRENCY_CR values ('YEN','Japanese Yen');
commit;
alter table T_CURRENCY_CR add constraint CR_PK primary key (CR_PK);
create table T_ORDER_OR ( OR_PK number, SU_FK number, OR_ORDERDATE DATE, OR_DELIVERYDATE date, OR_PAYMENTMODE number, OR_TOTALAMOUNT number, OR_SHORTCOMMENT varchar2(100), OR_LONGCOMMENT clob);
alter table T_ORDER_OR add constraint OR_PK primary key (OR_PK);
alter table T_ORDER_OR add CR_FK varchar2(3 CHAR);
alter table T_ORDER_OR modify cr_fk not null;
alter table T_ORDER_OR add constraint CR_FK foreign key (CR_FK) references T_CURRENCY_CR (CR_PK);
alter table T_ORDER_OR modify SU_FK not null;
alter table T_ORDER_OR modify OR_ORDERDATE not null;
alter table T_ORDER_OR modify OR_DELIVERYDATE not null;
alter table T_ORDER_OR modify OR_TOTALAMOUNT not null;
alter table T_ORDER_OR modify OR_PAYMENTMODE not null;
create index OR_IDX1 on T_ORDER_OR (SU_FK);
create sequence OR_SEQ;
declare
cur varchar2(3 CHAR);
begin
for i in 1 .. 1000000 loop
select CR_PK into cur from (select cr_pk from t_currency_cr order by dbms_random.value) where rownum = 1;
insert into T_ORDER_OR values ( OR_SEQ.nextval, trunc(dbms_random.value(1,100)),
sysdate,sysdate+30,
trunc(dbms_random.value(1,8)),
round(dbms_random.value(50,100000),2),
dbms_random.string('U',100),empty_clob,cur);
end loop;
end;
/
commit;
create table T_SUPPLIER_SU (su_pk number,su_name varchar2(100 CHAR),su_comment varchar2(100 CHAR));
alter table T_SUPPLIER_SU add constraint su_pk primary key (su_pk);
begin
for i in 1 .. 99 loop
insert into t_supplier_su values (i,dbms_random.string('U',100),dbms_random.string('U',100));
end loop;
end;
/
commit;
alter table T_ORDER_OR add constraint SU_FK foreign key (SU_FK) references T_SUPPLIER_SU (SU_PK);
insert into T_SUPPLIER_SU values (100,'We love SQL tuning','We love SQL tuning');
insert into T_CURRENCY_CR values ('CAD','Canadian Dollar');
insert into T_CURRENCY_CR values ('BRL','Brazilian Real');
commit;
create or replace view V_ORDERSTAT_OS as select su_fk,cr_fk,avg(or_totalamount) OS_AVGAMOUNT,
min(or_totalamount) OS_MINAMOUNT,
max(or_totalamount) OS_MAXAMOUNT
from t_order_or group by su_fk,cr_fk;
create table T_DELIVERY_DL ( DL_PK number, OR_FK number, DL_DELIVERYESTDATE date, DL_DELIVERYREALDATE date,DL_SHORTCOMMENT varchar2(100), DL_LONGCOMMENT clob);
alter table T_DELIVERY_DL add constraint DL_PK primary key (DL_PK);
alter table T_DELIVERY_DL modify OR_FK not null;
alter table T_DELIVERY_DL add constraint OR_FK foreign key (OR_FK) references T_ORDER_OR (OR_PK);
alter table T_DELIVERY_DL modify DL_DELIVERYESTDATE not null;
alter table T_DELIVERY_DL modify DL_DELIVERYREALDATE not null;
create index DL_IDX1 on T_DELIVERY_DL (OR_FK);
create sequence DL_SEQ;
declare
cursor lc1 is select or_pk,or_orderdate from t_order_or;
begin
for i in lc1 loop
if mod(i.or_pk,1000) != 0 then
insert into T_DELIVERY_DL values ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + trunc(dbms_random.value(15,35)),
i.or_orderdate + trunc(dbms_random.value(15,40)),
dbms_random.string('U',100),
empty_clob);
end if;
end loop;
end;
/
-- orders for which there is a second delivery
declare
cursor lc1 is select or_pk,or_orderdate from t_order_or;
begin
for i in lc1 loop
if mod(i.or_pk,700) = 0 then
insert into T_DELIVERY_DL values ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + trunc(dbms_random.value(15,35)),
i.or_orderdate + trunc(dbms_random.value(12,43)),
dbms_random.string('U',100),
empty_clob);
end if;
end loop;
end;
/
-- orders for which there is a thirth delivery
declare
cursor lc1 is select or_pk,or_orderdate from t_order_or;
begin
for i in lc1 loop
if mod(i.or_pk,7000) = 0 then
insert into T_DELIVERY_DL values ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + trunc(dbms_random.value(15,35)),
i.or_orderdate + trunc(dbms_random.value(12,43)),
dbms_random.string('U',100),
empty_clob);
end if;
end loop;
end;
/
begin
dbms_stats.gather_schema_stats(user, cascade=>true, estimate_percent => 100, method_opt=>'FOR ALL COLUMNS SIZE AUTO',no_invalidate => false );
end;
/
参考至:http://www.online-database.eu/index.php/sql-tuning/175-sql-tuning-setup-sample-schema
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
本文将详细介绍如何利用SQL Tuning Advisor来提高SQL语句的执行效率,包括从Automatic Workload Repository (AWR)、游标缓存以及SQL调优集(SQL Tuning Set, STS)中获取SQL语句并建立、执行及获取调优结果的方法。...
以上内容只是《SQL Tuning in sqlServer 数据库》教程的部分要点,通过深入学习,你可以掌握一系列SQL Server性能优化的技巧和最佳实践,从而更好地管理和优化你的数据库系统。CHM格式的文档通常包含丰富的超链接和...
### SQL Tuning 使用指南知识点详解 #### 一、SQL Tuning 概述 **SQL Tuning** 是一种专为 **Oracle 数据库** 设计的强大工具,用于分析、测试和优化 SQL 语句,旨在提高应用系统的整体性能。该工具覆盖了数据库...
Oracle SQL Tuning with Oracle SQLTXPLAIN: Oracle Database 12c Edition by Stelios Charalambides English | 8 May 2017 | ISBN: 1484224353 | 408 Pages | PDF | 24.39 MB Learn through this practical guide ...
在这个"Oracle SQLTuning Workshop"中,虽然资料可能源自2004年,但它依然包含了许多至今仍具价值的基础知识和实践经验。以下是一些核心知识点的详细说明: 1. **SQL基础**:SQL(结构化查询语言)是用于管理和处理...
通过Advisor工具,如SQL Tuning Advisor,系统会分析SQL语句并提供改进建议,如创建索引、重写查询或调整绑定变量。 3. **SQL Performance Analyzer**:这是一个强大的工具,用于在实际负载下测试SQL语句的性能变化...
SQL_Tuning是Oracle官方提供的一个专题,旨在帮助管理员和开发人员优化SQL查询,从而提高数据库的效率和响应时间。以下是一些关于"Oracle SQL Tuning"的重要知识点: 1. **SQL执行计划**:SQL执行计划是Oracle解析...
Tosska SQL Tuning Expert (TSE™) 是一款优秀的SQL 调优工具,无需用户参与即可优化 SQL 语句。该产品将为您提供最终的 SQL 性能解决方案,只需点击鼠标即可。在整个 SQL 调优过程中,您不必进行分析、猜测或手工...
**自动SQL优化工具Tosska SQL Tuning Expert for Oracle 64位** 在数据库管理领域,性能优化是一项至关重要的任务,尤其是对于Oracle这样的大型企业级数据库系统。Tosska SQL Tuning Expert是一款专为Oracle数据库...
《Tosska SQL Tuning Expert for Oracle:解锁SQL性能优化的利器》 在数据库管理领域,SQL优化是提升系统性能的关键环节。Oracle数据库系统作为业界领先的企业级数据库解决方案,其性能优化更是至关重要。Tosska ...
《Tosska SQL Tuning Expert for Oracle:解锁Oracle数据库性能优化的艺术》 Oracle数据库系统作为全球广泛使用的数据库管理系统,其性能优化是系统管理员和DBA(数据库管理员)至关重要的任务。Tosska SQL Tuning ...
SQL Tuning author Dan Tow outlines a timesaving method he's developed for finding the optimum execution plan--rapidly and systematically--regardless of the complexity of the SQL or the database ...
标题与描述中的“Top-SQL Tuning SQL语句调整”主要聚焦于提升SQL查询的效率与性能,这是数据库管理与优化的重要组成部分。SQL语句的性能直接影响到应用程序的响应时间和系统的整体性能,因此,掌握有效的SQL调优...
**SQL优化工具SQLTuning for SQL Server详解** SQL语句是数据库系统中不可或缺的一部分,它直接决定了数据库的性能。在数据库操作中,虽然相同逻辑的SQL语句有多种写法,但不同写法对性能的影响可能相差甚远。面对...
本文将基于《Sybase Performance and Tuning:Basics》的内容,详细介绍Sybase数据库性能优化的基础知识。 #### 二、Sybase数据库简介 Sybase是由Sybase公司开发的一款关系型数据库管理系统,以其高可用性、高性能...
根据提供的文件信息,我们可以推断出这是一份关于Oracle Database 10g SQL Tuning的培训资料。下面将从以下几个方面来深入解析这份文档中所包含的重要知识点。 ### 一、Oracle Database 10g SQL Tuning 的概念 ...
【SQLTuning for SQL Server】是一款由Quest公司开发的人工智能自动SQL优化工具,它集成在Quest Central软件中,提供了一种高效的方式来管理和优化SQL Server数据库的SQL查询性能。Quest Central是一个多平台的...
描述sql tuning的基础.............
本文将基于“Oracle SQL Tuning”这一主题,深入探讨Oracle SQL调优的核心概念、策略及实践方法。 一、SQL语句处理概览 SQL语句的执行效率对数据库性能有决定性影响。在Oracle环境中,SQL语句的处理流程主要包括...
### SQL调优(SQL Tuning) #### 一、引言 本书《Oracle SQL 调优口袋参考》是由 Mark Gurry 编写的一本快速参考指南,旨在为读者提供 Oracle SQL 的调优方法与技巧。虽然它不是一本全面介绍 Oracle 调优的书籍,...