ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 方案管理任务

方案管理任务

原创 Linux操作系统 作者:物理狂人 时间:2011-11-30 19:25:15 0 删除 编辑
一、估计资源使用量dbms_space.create_table_cost的使用

SQL> set serveroutput on
SQL>
SQL> declare
  2   used_bytes number;
  3   alloc_bytes number;
  4   begin
  5   dbms_space.create_table_cost(
  6   tablespace_name=>'USERS',
  7   avg_row_size=>30,
  8   row_count=>30000,
  9   pct_free=>20,
 10  used_bytes=>used_bytes,
 11  alloc_bytes=>alloc_bytes
 12  );
 13  dbms_output.put_line('used:'||used_bytes);
 14  dbms_output.put_line('allocated:'||alloc_bytes);
 15  end;
 16  /
used:1261568
allocated:2097152

PL/SQL 过程已成功完成。


二、分析增长趋势dbms_space.object_growth_trend的使用 
参考:Oracle® Database PL/SQL Packages and Types Reference
dbms_space部分


三、管理优化统计信息
SQL> column table_name format a15;
SQL> column tablespace_name format a10;
SQL> select table_name, tablespace_name,num_rows, last_analyzed from user_tables
;

已选择8行。

收集一下表IOT、COUNTRIES的统计信息
SQL> exec dbms_stats.gather_table_stats('HR','IOT')

PL/SQL 过程已成功完成。

SQL> exec dbms_stats.gather_table_stats('HR','COUNTRIES')

PL/SQL 过程已成功完成。

SQL> select table_name, tablespace_name,num_rows, last_analyzed from dba_tables
where wner='HR';



四、联机重组方案对象
使hr.departments表重组后成为分区表
SQL> desc departments;
 名称                                     是否为空? 类型
 ----------------------------------------- --------------- -------------

 DEPARTMENT_ID                      NOT NULL NUMBER(4)
 DEPARTMENT_NAME               NOT NULL VARCHAR2(30)
 MANAGER_ID                                         NUMBER(6)
 LOCATION_ID                                       NUMBER(4)

1)创建临时表
  1  create table dept_tmp(
  2  department_id number(4),
  3  department_name varchar2(30),
  4  manager_id number(6),
  5  location_id number(4))
  6  partition by range (department_id)
  7  (partition dept_tmp1 values less than (100),
  8  partition dept_tmp2 values less than (200),
  9  partition dept_tmp3 values less than (maxvalue)
 10* )
SQL> /

2)检查重组表是否可以进行重组
SQL> exec dbms_redefinition.can_redef_table('HR','DEPT_TMP');
BEGIN dbms_redefinition.can_redef_table('HR','DEPT_TMP'); END;

*
第 1 行出现错误:
ORA-12089: 不能联机重新定义无主键的表 "HR"."DEPT_TMP"
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 137
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1479
ORA-06512: 在 line 1

添加主键
SQL> alter table dept_tmp add constraints dept_tmp_pk primary key(department_id)
;

表已更改。

再次检查
SQL> exec dbms_redefinition.can_redef_table('HR','DEPT_TMP');

PL/SQL 过程已成功完成。

3)启动在线从定义过程
SQL> exec dbms_redefinition.start_redef_table('HR','DEPARTMENTS','DEPT_TMP');

PL/SQL 过程已成功完成。

此时插入一条数据到departments
SQL> insert into departments values(999,'shanghai','',1700);

已创建 1 行。

查看departments表
SQL> select * from departments;

查看dept_tmp表
SQL> select * from dept_tmp;


4)如果要把业务信息全部同步到dept_tmp
SQL> exec dbms_redefinition.sync_interim_table('HR','DEPARTMENTS','DEPT_TMP');

PL/SQL 过程已成功完成。

再次查看dept_tmp表
SQL> select * from dept_tmp;

这时新插入数据已经同步过来

然后再插入数据
SQL> insert into departments values(998,'beijing','',1700);

已创建 1 行。
此时departments与dept_tmp又不同步

查看当前的分区表视图
SQL> select table_name from user_part_tables
  2  ;

TABLE_NAME
------------------------------
DEPT_TMP

5)完成重组过程

SQL> exec dbms_redefinition.finish_redef_table('HR','DEPARTMENTS','DEPT_TMP')

PL/SQL 过程已成功完成。

查看分区表视图
SQL> select table_name from user_part_tables;

TABLE_NAME
------------------------------
DEPARTMENTS

查看departments表
SQL> select * from departments;

查看dept_tmp表
SQL> select * from dept_tmp;

都还有插入信息

6)删除临时表
SQL>drop table dept_tmp purge;

总结重组过程:
1. 验证表是否是联机重组的候选对象。
2. 创建一个临时表。
3. 启动重新定义过程。
4. 复制相关对象。(该操作将对临时表自动创建所有
触发器、索引、授权和约束条件。)
5. 查询DBA_REDEFINITION_ERRORS 视图,检查是否
有错误。
6. 同步临时表(可选)。
7. 完成重新定义。
8. 删除临时表。

手动联机重组的基本步骤
使用的命令和过程有:
1. DBMS_REDEFINITION.CAN_REDEF_TABLE
2. CREATE TABLE …
3. DBMS_REDEFINITION.START_REDEF_TABLE
4. DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS 和
DBMS_REDEFINITION.CONS_ORIG_PARAMS
5. SELECT object_name, base_table_name, ddl_txt
FROM DBA_REDEFINITION_ERRORS;
6. DBMS_REDEFINITION.SYNC_INTERIM_TABLE
7. DBMS_REDEFINITION.FINISH_REDEF_TABLE
8. DROP TABLE … PURGE

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24104518/viewspace-712475/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-06-16

  • 博文量
    80
  • 访问量
    140505