`
AllenHU0320
  • 浏览: 85812 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle10g系统管理14

 
阅读更多

61.设计表
规划表的类型
规划数据块空间使用
规划表的位置
使用并行方式建表
使用NOLOGGING选项建表
使用子查询(as select)建表时,通过指定nologging选项,可以最小化建表所生成的重做信息,从而提高建表性能。使用SQL*Loader或INSERT进行直接装载时,使用NOLOGGGING也可以加快数据装载速度。
使用COMPRESS选项建表
预计和规划表尺寸

 

行格式
建立普通表时,Oracle会为表分配相应的表段,并且表的所有数据都会存放到相应的表段中。在Oracle数据库中,行数据存储在数据块中,并且行长度可变。一般情况下,行数据是按照列定义顺序存放的。如果使用了LONG或LONG RAW类型,那么它们的数据总是放在行的尾部。
如果使用了LOB类型(CLOB和BLOB)并且该列的数据长度超过4000个字节。那么该列的数据会存放到相应的LOB段中
行头:包含列个数、行链、行锁等信息
列长度:如果列值小于250字节,则占用1个字节,否则占用3个字节
列值:列的实际数据,NULL不会占用空间

 

常用Oracle数据类型
CHAR(N)或CHAR(N BYTE)
CHAR(N CHAR)
VARCHAR2(N)或VARCHAR2(N BYTE)
VARCHAR2(N CHAR)
NUMBER(P,S)
DATE
TIMESTAMP
RAW(N)
LONG,LONG RAW,LOB

 

rowid
数据对象号6位-相对文件号3位-数据块号6位-行号3位
OOOOOO-FFF-BBBBBB-RRR

查询ROWID
ROWID是表的伪列,与其他列一样可以直接查询,因为其数据以掩码格式存放,用包DBMS_ROWID进行转换
select dname,rowid,dbms_rowid.rowid_row_number(rowid) row# from dept where deptno=10;

事务临时表是指数据只在当前事务内有效的临时表
create global temporary table temp1(cola int)
on commit delete rows;
insert into temp1 values(1);
commit;
select * from temp1;无数据
事务临时表temp1的数据只在当前事务内可以查看:当使用commit或rollback结束事务后,其临时数据会被自动清除

会话临时表是数据只在当前会话内有效的临时表
create global temporary table temp2(cola int)
on commit preserve rows;
insert into temp2 values(1);
commit;
select * from temp2;有数据
使用会话临时表时,如果使用commit提交事务,那么其数据仍然可以查询,但关闭会话后,Oracle会自动清除其临时数据


修改表的物理属性,使用alter table改变块空间使用参数pctfree和pctused时,新设置对所有块都起作用,但对于已分配块不会立即生效,
而使用alter table改变事务入口initrans时,该设置只会对将来分配的数据块生效。

重新组织表
alter table department move tablespace user02;
执行alter table命令重新组织表时,因为rowid会发生改变,从而导致表的所有索引转变为无效状态,所以在重新组织表之后必须重新建立索引

使用UNUSED选项删除列
alter table emp set unused column comm;
alter table emp drop unused columns checkpoint 1000;

 

62.管理索引表
索引表以B-树结构来组织表的数据,它是主键B-树索引的变种。对于普通表而言,其数据以无序方式存储。而对于索引表来说,其数据以B-树结构来组织,并且其页块既包含键列数据,也包含非键列数据。一般情况下,表及其索引数据分别存放在表段和索引段中。当在where子句中引用索引列时,首先定位索引数据并取得ROWID,然后根据ROWID取得表的数据。如果要经常基于主键列检索表数据,那么Oracle建议使用索引表。建立索引表时,Oracle会将表及其主键索引的数据一起存放到索引段中。当在where子句中引用主键列时,Oracle可以直接根据主键索引值取得表行数据。对于普通表来说,表、索引数据分别存放到表段、索引段,要占用更多空间。而对于索引表来书,键列和非键列的数据都被存放到主键索引段中。当经常使用主键列定位表数据时,应该建立索引表。使用索引表,一方面降低了磁盘和内存空间占用,另一方面也可以提高访问性能。

建立索引表
create table sales_info(
   id number(6) constraint pk_sale primary key,
   customer_name varchar2(30),
   sales_amount number(10,2),
   sales_date date,
   remark varchar2(2000)
)organization index tablespace user01
pctthreshold 20 including remark
overflow tablespace user02;

 

63.管理外部表
外部表是表结构被存放在数据字典,而表空间被存放在OS文件中的表。通过使用外部表,不仅可以在数据库中查询OS文件的数据,还可以使用INSERT方式将OS文件数据装载到数据库中,从而实现SQL*Loader所提供的功能。建立外部表后,可以查询外部表的数据,在外部表上执行连接查询,或对外部表的数据进行排序。在外部表上不能执行DML修改也不能在外部表上建立索引。

建立目录对象,并授予用户权限
create directory ext as 'd:\ext';
grant read,write on directory ext to scott;

建立外部表
create table ext_emp(
   id number(4),
   f_name varchar2(20),
   l_name varchar2(25),
   job varchar2(10),
   mgr number(4),
   hiredate date,
   sal number(8,2),
   comm number(2,2),
   dept_id number(4),
   email varchar2(25)
)organization external(
   type oracle_loader default directory ext
   access parameters(
      records delimited by newline fields terminated by ','
      missing field values are null(
         id,f_name,l_name,job,mgr,hiredate char date_format date mask "dd-mm-yyyy",sal,comm,dept_id,email
      )
   )location('emp.dat')
);

修改外部表
修改默认directory对象
alter table ext_emp default directory ext_new;
修改文件位置
alter table ext_emp location ('emp_1.dat');
修改访问参数
alter table ext_emp access parameters(fields terminated by ';');

显示特定用户的表
select table_name,num_rows,pct_free,blocks,chain_cnt from dba_tables where owner='SCOTT';

显示行所在实际位置
select deptno,dname,
       dbms_rowid.rowid_relative_fno(rowid) file#,
       dbms_rowid.rowid_block_number(rowid) block#,
       dbms_rowid.rowid_row_number(rowid) row# from dept;

分享到:
评论

相关推荐

    精通oracle 10g系统管理学习笔记

    在深入探讨Oracle 10g系统管理之前,我们首先要理解Oracle数据库的基本架构。Oracle数据库是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。Oracle 10g是Oracle公司推出的一个重要版本,...

    Oracle 10g 系统管理员简明教程目录

    Oracle 10g 系统管理员简明教程目录 本教程目录涵盖了 Oracle 10g 系统管理员需要掌握的知识点,包括 Oracle 10g 的安装、配置、数据库结构、SQL 语句、PL/SQL 编程等方面。 安装和配置 * Oracle 10g 的安装类型...

    精通oracle 10g系统管理(高清PDF)

    精通oracle 10g系统管理 Oracle本书是专门为Oracle数据库管理员提供的系统管理手册,通过学习本书,读者不仅可以掌握Oracle数据库的基本管理方法,还可了解并掌握Oracle Database 10g所提供的新特征,包括 Web页面的OEM...

    oracle 10g系统管理

    如何更好地管理ORACLE 10G数据库,通过这本精通oracle 10g系统管理你可以了解到怎么成为ORACLE 10G高手。

    Oracle 10g数据库管理艺术

    Oracle 10g数据库管理系统是Oracle公司发布的一款重要的企业级数据库产品,其在数据库领域具有广泛的应用和深远的影响。本书“Oracle 10g数据库管理艺术”无疑是对这一技术的深度解析,旨在帮助读者掌握Oracle 10g的...

    Oracle10g系统管理员使用手册pdf

    《Oracle10g系统管理员使用手册》是一本深入解析Oracle10g数据库管理系统运维的权威指南,主要面向那些需要管理、监控和优化Oracle10g环境的系统管理员。Oracle10g是Oracle公司推出的数据库产品,它在性能、可扩展性...

    精通oracle10g系统管理.pdf

    精通oracle10g系统管理.pdf 精通oracle10g系统管理.pdf 精通oracle10g系统管理.pdf

    oracle10G和oracle11G的OCI.dll

    Oracle 10G是Oracle公司在2003年发布的关系型数据库管理系统,而Oracle 11G则是在2007年推出的升级版。这两个版本之间的主要差异体现在性能、可扩展性、安全性以及管理功能等方面。 1. OCI接口:OCI提供了丰富的API...

    精通Oracle10g系统管理

    Oracle 10g系统管理是数据库管理员(DBA)在企业数据管理中不可或缺的技能。这本书籍"精通Oracle10g系统管理"旨在帮助初学者快速掌握Oracle 10g的相关知识,通过清华大学计算中心的培训资料PPT,你可以深入理解Oracle...

    Oracle10g系统管理

    这个“Oracle10g系统管理”资料可能是为了帮助用户深入理解和掌握Oracle10g的系统管理和维护技巧。下面将对Oracle10g的主要特点、系统管理的核心内容以及可能在教材中涉及的关键知识点进行详细阐述。 一、Oracle10g...

    oracle 10g _64x

    Oracle 10g是Oracle公司推出的数据库管理系统的一个版本,它主要针对64位操作系统环境设计。Oracle数据库系统在IT行业中有着广泛的应用,尤其在大型企业、金融机构和互联网公司的数据存储和管理方面扮演着核心角色。...

    精通oracle 10g系统管理

    精通oracle 10g系统管理

    如果忘记了Oracle Database 10g 管理员用户口令怎么办

    ### 如果忘记了Oracle Database 10g 管理员用户口令怎么办 在日常的数据库管理工作中,可能会遇到忘记管理员用户口令的情况。这不仅会给日常工作带来不便,还可能会影响到系统的正常运行。针对这种情况,本文将详细...

    oracle 11g ,10g软件资源 百度云下载

    Oracle 10g(10g代表10th Generation,即第十代)是Oracle公司发布的一个重要版本,发布于2004年。这一版本在之前的版本基础上进行了大量的改进和优化,引入了许多新特性,特别是在网格计算方面有着显著的进步。以下...

    龙蜥anolis系统oracle11g安装包

    在IT行业中,数据库管理系统是核心组件之一,Oracle 11g是Oracle公司的一款旗舰级数据库产品,被广泛应用于企业级应用。在这个“龙蜥anolis系统oracle11g安装包”中,我们聚焦于在龙蜥Anolis操作系统上安装Oracle 11...

    oracle 10g 考试题库

    Oracle 10g 是Oracle公司推出的数据库管理系统的一个版本,它在2003年发布,提供了许多增强功能和性能优化,对于数据库管理员(DBA)来说是重要的学习和认证目标。"Oracle OCP"(Oracle Certified Professional)是...

Global site tag (gtag.js) - Google Analytics