读书笔记 Tom Expert 00章-配置环境

 

  • Scott用户激活
    • Scott修改密码,激活帐号.alter user scott identified by tiger;alter user scott account unlock;
    • 没有的话,创建用$ORACLE_HOME/sqlplus/demo/demobld.sql
    • 然后:

alter table emp add constraint emp_pk primary key(empno);

alter table dept add constraint dept_pk primary key(deptno);

alter table emp add constraint emp_fk_dept

foreign key(deptno) references dept;

alter table emp add constraint emp_fk_emp foreign key(mgr) references emp;-->其实只差这一个.

  • Sqlplus 环境
    • 配置文件Login.sql.SQLPATH指出其路径,默认路径:C:/oracle/product/10.2.0/db_1/dbs,文件内容:
      define _editor=vi--->根据os改变

set serveroutput on size 1000000

set trimspool on

set long 5000

set linesize 100

set pagesize 9999

column plan_plus_exp format a80

column global_name new_value gname

set termout off

define gname=idle

column global_name new_value gname

select lower(user) || '@' || substr( global_name, 1, decode( dot, 0,

length(global_name), dot-1) ) global_name

  from (select global_name, instr(global_name,'.') dot from global_name );

set sqlprompt '&gname> '

set termout on

  • Autotrace
    • 1 生成plan_table
      SYSTEM logon,
      @
      C:/oracle/product/10.2.0/db_1/rdbms/admin/utlxplan
      CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE;---->10g中已经默认存在了,还多了两个字段.
      GRANT ALL ON PLAN_TABLE TO PUBLIC;
      2 生成plustrace角色
      SYS logon;
      @
      C:/oracle/product/10.2.0/db_1/sqlplus/admin/plustrce
      grant plustrce to public;--->plustrce
      应该为plustrace
      3
      验证
      Sqlplus>Set autotrace on
      Sqlpuls>select count(*) from tab;--->
      可以看到explainstatistics
  • Statspack(10g中已经升级为addm report)
    • @$ORALCE_HOME/rdbms/admin/
      SYS
      @spcreate-->
      创建PERFSTAT用户,密码,还有指定默认表空间和临时表空间.
  • 定制的脚本
    • Runstats
      • 收集三类信息:wall clock elapsed time(消耗的时间); 系统统计; latching
        latch
        是一种轻量级锁. 锁是串行设备,串行设备会阻止并发. 那可扩展性(scalable),支持更少的用户,使用更多的资源.
      • runstat最好用在单用户数据库上,可屏蔽其他会话的影响.
    • 主要作用就是把一些v$的数据存储到临时表中,然后多次间进行比较
      • Sys longon;
        create public synonym stats for stats;
        grant all on stats to public;
        创建package runStats_pkg,
        /*

exec runStats_pkg.rs_start;

exec runStats_pkg.rs_middle;

exec runStats_pkg.rs_stop;

*/

  • Create user big_table , default tablespace example(logging), grant dba
  • Create table big_table
    100
    万数据插入方法,
    Nologging
    Disable constraint;
    Insert /*+ append */
    Enable constraint;
  • Mystat
    • mystat和比较的版本mystat2用于比较某些操作执行前后一些统计(statistics)数据的变化.
      执行顺序: @mystat "redo size"-->operate --->@mystat2
  • Show_space--显示当前对象(segment)的空间使用情况
    • 这个就不用tom的了,使用itpub的一个版主xzh曾经写过一个宇宙超级无敌终结版的:)show_space
       

create or replace procedure show_space

( p_segname_1 in varchar2,

p_space in varchar2 default 'MANUAL',

p_type_1 in varchar2 default 'TABLE' ,

p_analyzed in varchar2 default 'N',

p_owner_1 in varchar2 default user)

as

p_segname varchar2(100);

p_type varchar2(10);

p_owner varchar2(30);

l_unformatted_blocks number;

l_unformatted_bytes number;

l_fs1_blocks number;

l_fs1_bytes number;

l_fs2_blocks number;

l_fs2_bytes number;

l_fs3_blocks number;

l_fs3_bytes number;

l_fs4_blocks number;

l_fs4_bytes number;

l_full_blocks number;

l_full_bytes number;

l_free_blks number;

l_total_blocks number;

l_total_bytes number;

l_unused_blocks number;

l_unused_bytes number;

l_LastUsedExtFileId number;

l_LastUsedExtBlockId number;

l_LAST_USED_BLOCK number;

procedure p( p_label in varchar2, p_num in number )

is

begin

dbms_output.put_line( rpad(p_label,40,'.') ||

p_num );

end;

begin

p_segname := upper(p_segname_1); -- rainy changed

p_owner := upper(p_owner_1);

p_type := p_type_1;

if (p_type_1 = 'i' or p_type_1 = 'I') then --rainy changed

p_type := 'INDEX';

end if;

if (p_type_1 = 't' or p_type_1 = 'T') then --rainy changed

p_type := 'TABLE';

end if;

if (p_type_1 = 'c' or p_type_1 = 'C') then --rainy changed

p_type := 'CLUSTER';

end if;

dbms_space.unused_space

( segment_owner => p_owner,

segment_name => p_segname,

segment_type => p_type,

total_blocks => l_total_blocks,

total_bytes => l_total_bytes,

unused_blocks => l_unused_blocks,

unused_bytes => l_unused_bytes,

LAST_USED_EXTENT_FILE_ID => l_LastUsedExtFileId,

LAST_USED_EXTENT_BLOCK_ID => l_LastUsedExtBlockId,

LAST_USED_BLOCK => l_LAST_USED_BLOCK );

if p_space = 'MANUAL' or (p_space <> 'auto' and p_space <> 'AUTO') then

dbms_space.free_blocks

( segment_owner => p_owner,

segment_name => p_segname,

segment_type => p_type,

freelist_group_id => 0,

free_blks => l_free_blks );

p( 'Free Blocks', l_free_blks );

end if;

p( 'Total Blocks', l_total_blocks );

p( 'Total Bytes', l_total_bytes );

p( 'Unused Blocks', l_unused_blocks );

p( 'Unused Bytes', l_unused_bytes );

p( 'Last Used Ext FileId', l_LastUsedExtFileId );

p( 'Last Used Ext BlockId', l_LastUsedExtBlockId );

p( 'Last Used Block', l_LAST_USED_BLOCK );

/*IF the segment is analyzed */

if p_analyzed = 'Y' then

dbms_space.space_usage(segment_owner => p_owner ,

segment_name => p_segname ,

segment_type => p_type ,

unformatted_blocks => l_unformatted_blocks ,

unformatted_bytes => l_unformatted_bytes,

fs1_blocks => l_fs1_blocks,

fs1_bytes => l_fs1_bytes ,

fs2_blocks => l_fs2_blocks,

fs2_bytes => l_fs2_bytes,

fs3_blocks => l_fs3_blocks ,

fs3_bytes => l_fs3_bytes,

fs4_blocks => l_fs4_blocks,

fs4_bytes => l_fs4_bytes,

full_blocks => l_full_blocks,

full_bytes => l_full_bytes);

dbms_output.put_line(rpad(' ',50,'*'));

dbms_output.put_line('The segment is analyzed');

p( '0% -- 25% free space blocks', l_fs1_blocks);

p( '0% -- 25% free space bytes', l_fs1_bytes);

p( '25% -- 50% free space blocks', l_fs2_blocks);

p( '25% -- 50% free space bytes', l_fs2_bytes);

p( '50% -- 75% free space blocks', l_fs3_blocks);

p( '50% -- 75% free space bytes', l_fs3_bytes);

p( '75% -- 100% free space blocks', l_fs4_blocks);

p( '75% -- 100% free space bytes', l_fs4_bytes);

p( 'Unused Blocks', l_unformatted_blocks );

p( 'Unused Bytes', l_unformatted_bytes );

p( 'Total Blocks', l_full_blocks);

p( 'Total bytes', l_full_bytes);

end if;

end;
然后
create public synonym show_space for sys.show_space;
grant execute on sys.show_space to public;
这次差不多了
使用方法:
Segment=>
对象名字,必须填写,其余可以有default
p_space=>对象管理方法:auto_assm, manual-默认值,free list
p_type=>
对象类型,'T'-table(默认),'I'-index
p_analyzed=>
是否已做过分析,如果分析过了则显示详细的信息,默认是N
p_owner=>
默认为当前使用用户.

p_space
的结果区别:
Segment_space_management: example
表空间是'auto', test表空间是'manul'
create table t1 tablespace example as select * from hr.employees;
create table t2 tablespace test as select * from hr.employees;
例子1:
sys@ORCL> execute show_space('T1','AUTO');

Total Blocks............................8

Total Bytes.............................65536

Unused Blocks...........................3

Unused Bytes............................24576

Last Used Ext FileId....................5

Last Used Ext BlockId...................8865

Last Used Block.........................5

例子2:

sys@ORCL> analyze table t1 compute statistics;

Table analyzed.

 

sys@ORCL>  execute show_space('T1','AUTO','T','Y','SYS');

Total Blocks............................8

Total Bytes.............................65536

Unused Blocks...........................3

Unused Bytes............................24576

Last Used Ext FileId....................5

Last Used Ext BlockId...................8865

Last Used Block.........................5

*************************************************

The segment is analyzed

0% -- 25% free space blocks.............0

0% -- 25% free space bytes..............0

25% -- 50% free space blocks............0

25% -- 50% free space bytes.............0

50% -- 75% free space blocks............0

50% -- 75% free space bytes.............0

75% -- 100% free space blocks...........0

75% -- 100% free space bytes............0

Unused Blocks...........................0

Unused Bytes............................0

Total Blocks............................2

Total bytes.............................16384

 

PL/SQL procedure successfully completed.


例子3:
sys@ORCL> execute show_space('T2','MANUAL');

Free Blocks.............................0

Total Blocks............................8

Total Bytes.............................65536

Unused Blocks...........................5

Unused Bytes............................40960

Last Used Ext FileId....................7

Last Used Ext BlockId...................25

Last Used Block.........................3

 

PL/SQL procedure successfully completed.

  • Coding convention(变量命令规范)
    • G_全局变量,L_本地变量,P_参数变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值