步骤1:设置用户
创建用户“调整”配置文件“默认”由“调整”默认表空间“用户”临时表空间“临时”帐户解锁来标识;
授予“调整”创建会话的权限;
授予“调整”创建视图;
授予选择任何字典进行“调整”;
授予选择任何表格进行“调整”;
授予无限的表空间用于“调优”;
授予“加速度”到“调谐”;
将“资源”授予“调优”;

第2步:创建示例模式
连接调整/调整
创建表T_CURRENCY_CR(CR_PK varchar2(3个字符),CR_COMMENT个varchar2(30个字符));
插入到T_CURRENCY_CR值(“欧元”,“欧元”);
插入T_CURRENCY_CR值(“美元”,“美元”);
插入到T_CURRENCY_CR值(“英镑”,“英国镑”);
插入T_CURRENCY_CR值(“日元”,“日元”);
提交;
更改表T_CURRENCY_CR添加CR_PK主键的约束(CR_PK);
创建表T_ORDER_OR(OR_PK编号,SU_FK编号,OR_ORDERDATE日期,OR_DELIVERYDATE日期,OR_PAYMENTMODE编号,OR_TOTALAMOUNT编号,OR_SHORTCOMMENT varchar2(100),OR_LONGCOMMENT clob);
更改表T_ORDER_OR添加OR_PK主键的约束(OR_PK);
更改表T_ORDER_OR添加CR_FK变量2(3 字符);
更改表T_ORDER_OR修改cr_fk不为空;
更改表T_ORDER_OR T_CURRENCY_CR(CR_PK)添加约束CR_FK外键(CR_FK);
更改表T_ORDER_OR修改SU_FK不为空;
更改表T_ORDER_OR修改OR_ORDERDATE不为空;
更改表T_ORDER_OR修改OR_DELIVERYDATE不为空;
更改表T_ORDER_OR修改OR_TOTALAMOUNT不为空;
更改表T_ORDER_OR修改OR_PAYMENTMODE不为空;
在T_ORDER_OR上创建索引OR_IDX1 (SU_FK);
创建序列OR_SEQ;
声明
cur varchar2(3 CHAR);
开始
于 i 在 1 ..1000000 循环
选择CR_PK从 (从t_currency_cr顺序按 dbms_random.值选择cr_pk),其中 rownum = 1;
插入到T_ORDER_OR值 ( OR_SEQ.nextval, 截断(dbms_random值(1,100)),
系统日期,系统日期+30,
截断(dbms_random值(1,8)),
舍入(dbms_random值(50,100000),2),
dbms_random字符串('U',100),empty_clob,cur);
结束循环;
结束;
/
提交;
创建表T_SUPPLIER_SU (su_pk数,su_name瓦查尔2(100字符),su_comment瓦查尔2(100字符));
更改表T_SUPPLIER_SU添加su_pk主键的约束(su_pk);
开始
于 i 在 1 ..99 循环
插入到t_supplier_su值 (i,dbms_random.字符串(“U”,100),dbms_random.字符串(“U”,100));
结束循环;
结束;
/
提交;
更改表T_ORDER_OR T_SUPPLIER_SU(SU_PK)添加外键(SU_FK)引用的约束SU_FK;
插入到T_SUPPLIER_SU值(100,“我们喜欢SQL调优”,“我们爱SQL调优”);
插入到T_CURRENCY_CR值(“加元”,“加拿大元”);
插入到T_CURRENCY_CR值(“巴西雷亚尔”,“巴西雷亚尔”);
提交;
创建或替换视图V_ORDERSTAT_OS,选择su_fk,cr_fk,平均(or_totalamount) OS_AVGAMOUNT,
min(or_totalamount) su_fk,
cr_fk
从t_order_or组OS_MAXAMOUNT OS_MINAMOUNT,最大(or_totalamount);

创建表T_DELIVERY_DL ( DL_PK 数、 OR_FK 数、 DL_DELIVERYESTDATE 日期、 DL_DELIVERYREALDATE 日期、 DL_SHORTCOMMENT varchar2(100), DL_LONGCOMMENT clob);
更改表T_DELIVERY_DL添加DL_PK主键的约束(DL_PK);
更改表T_DELIVERY_DL修改OR_FK不为空;
更改表T_DELIVERY_DL T_ORDER_OR(OR_PK)添加外键(OR_FK)引用的约束OR_FK;
更改表T_DELIVERY_DL修改DL_DELIVERYESTDATE不为空;
更改表T_DELIVERY_DL修改DL_DELIVERYREALDATE不为空;


在T_DELIVERY_DL上创建索引DL_IDX1 (OR_FK);
创建序列DL_SEQ;

声明
游标lc1是从t_order_or中选择or_pk,or_orderdate;
如果 mod(i.or_pk,1000) != 0,则在 lc1 循环
中开始
i,然后
插入到T_DELIVERY_DL值 ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + 截断(dbms_random.value(15,35)),
i.or_orderdate + 截断(dbms_random.值(15,40)),
dbms_random.字符串('U',100),
empty_clob);
结束如果;

结束循环;
结束;
/

-- 有第二次交付
声明
光标lc1的订单是从t_order_or中选择or_pk,or_orderdate;
如果 mod(i.or_pk,700) = 0,则在 lc1 循环
中从 i 开始
,然后
插入到T_DELIVERY_DL值 ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + 截断(dbms_random.值(15,35)),
i.or_orderdate + 截断(dbms_random.值(12,43)),
dbms_random.字符串('U',100),
empty_clob);
结束如果;
结束循环;
结束;
/

-- 有第三次交付
的订单声明
游标lc1是从t_order_or中选择or_pk,or_orderdate;
如果 mod(i.or_pk,7000) = 0,则在 lc1 循环
中从 i 开始
,然后
插入到T_DELIVERY_DL值 ( DL_SEQ.nextval,
i.or_pk,
i.or_orderdate + 截断(dbms_random.值(15,35)),
i.or_orderdate + 截断(dbms_random.值(12,43)),
dbms_random.字符串('U',100),
empty_clob);
结束如果;
结束循环;
结束;
/

begin
dbms_stats.collect_schema_stats(用户,级联 = >真实,estimate_percent = > 100,method_opt=>“对于所有列的大小自动”,no_invalidate = > false);
结束;

/

参考至:http://www.online-database.eu/index.php/sql-tuning/175-sql-tuning-setup-sample-schema

如有错误,欢迎指正