- 浏览: 129728 次
- 性别:
- 来自: 杭州
最新评论
文章列表
---压缩表可减少数据量,从而减少IO
DROP TABLE t purge;
CREATE TABLE t NOCOMPRESS AS
SELECT rownum AS n, rpad(' ',500,mod(rownum,15)) AS pad
FROM dual
CONNECT BY level <= 200000;
--收集表统计信息
admin@ORCL> execute dbms_stats.gather_table_stats('ADMIN','T');
PL/SQL 过程已成功完成。
--未压缩的表当前情况
adm ...
Oracle PL/SQL 学习
- 博客分类:
- Oracle 开发
/*
PL/SQL集合
1.
RECORD
由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。
01.TYPE t_emp IS RECORD( 其中TYPE,IS,RECORD为关键字,record_name为变量名称
field1 type [NOT NULL][:=expr1], 每个等价的成员间用逗号分隔
field2 type [NOT NULL][:=expr2], 如果一个字段限定NOT NULL,那么它必须拥有一个初始值
fieldn type [NOT N ...
收获,不止Oracle之表连接
- 博客分类:
- Oracle 优化
DROP TABLE T1 PURGE;
DROP TABLE T2 PURGE;
CREATE TABLE T1
(
ID NUMBER NOT NULL,
N NUMBER,
CONTENTS VARCHAR2(4000)
);
CREATE TABLE T2
(
ID NUMBER NOT NULL,
T1_ID NUMBER NOT NULL,
N NUMBER,
CONTENTS VARCHAR2(4000)
);
EXECUTE DBMS_RANDOM.SEED(0);
INSERT INTO T1
SELECT ROWNUM,R ...
收获,不止Oracle之索引篇(2)
- 博客分类:
- Oracle 优化
/*
几个索引的扫描方式:
INDEX FULLL SCAN:扫描一次只读取一个索引块
INDEX FAST FULL SCAN:一次性会读取多个索引块,读取多个数据块不容易保证有序。因此COUNT(*),SUM等不需要排序动作的操作会走INDEX FAST FULL SCAN
INDEX FULL SCAN(MIN/MAX):索引扫描最大值和最小值
*/
--UNION优化
--看出来UNION会用到排序的步骤 SORT UNIQUE
admin@ORCL> SELECT OBJECT_ID FROM T
2 UNION
3 SELECT OBJ ...
所获,不止Oracle之索引篇(1)
- 博客分类:
- Oracle 优化
/*
索引
索引由三部分组成,根块(root),Branch(茎块),Leaf(叶子块)。其中Leaf块主要存储了key column value(索引列具体值),以及能具体
定位到数据块位置的rowid。
索引的创建过程:
1.要建索引先排序,将索引列的值顺序取出,及该行的rowid放入到内存中。
2.依次将内存中的顺序存放的值和rowid存放入索引块中。
3.当填满两个索引块后,oracle会产生一个块,用于管理同级的叶子块。这个块记录了叶子块的信息,并不记录索引列的键值,所以使用的空间比较少。
4.当管理叶子块的块被填满后,oracle又会产生一个上一级管理块,依次 ...
ORACEL IOT(转载)
- 博客分类:
- Oracle 开发
转载(http://blog.sina.com.cn/s/blog_4b12778b0101cgl9.html)
对关系型数据库产品(RDBMS)而言,一个重要特性就是:数据信息都被组织为二维数据表,信息的表达可以通过一系列的关联(Join)来完成。具体数据库产品在实现这个标准的时候,又有千差万别的特点。就是一个特定的数据库RDBMS产品,往往也提供不同的实现方法。
1、从堆表(Heap Table)到索引组织表(Index Organization Table)
Oracle作为一款成熟的数据库软件产品,就提供了多种数据表存储结构。我们最常见的就是三种, ...
--DML redo测试
/*
*普通表的redo size 为insert 5M,delete 18m, update 24M
*临时表redo size 为insert 276096字节, Delete 为15M ,update 为 8M,
*全局临时表与基于事务的临时表 产生的redo size差不多。
*
*/
/*
*另外的备注,若普通表DML每一步,不c ...
Oracle 行转列,列转行
- 博客分类:
- Oracle 开发
Oracle Pivot/Unpivot
此特性只适用于Oracle 11g 以上版本
CREATE TABLE CUSTOMERS
(
CUST_ID NUMBER(10),
CUST_NAME VARCHAR2(20),
STATE_CODE VARCHAR2(2),
TIMES_PURCHASED NUMBER(3)
);
INSERT INTO CUSTOMERS VALUES(1,'ANKER','CT',1);
INSERT INTO CUSTOMERS VALUES(1,'ANKER','ET',2);
INSERT INTO CUSTOMER ...
Oralce 索引聚簇因子
- 博客分类:
- Oracle 优化
--聚合因子试验准备:
--分别建两张有序和无序的表
CREATE TABLE T_COLOCATED ( ID NUMBER, COL2 VARCHAR2(100) );
BEGIN
FOR I IN 1 .. 100000
LOOP
INSERT INTO T_COLOCATED(ID,COL2)
VALUES (I, RPAD(DBMS_RANDOM.RANDOM,95,'*') );
END LOOP;
END;
/
ALTER TABLE T_COLOCATE ...
文章摘抄-收获,不止Oracle
- 博客分类:
- Oracle 优化
/*
摘抄收获,不止Oracle
*/
--从一条UPDATE语句看Oracle体系结构
SQLPLUS ADMIN/ADMIN
UPDATE TT1 SET ID = 6 WHERE OBJECT_ID = 12;
/*
1.执行SQLPLUS ADMIN/ADMIN,Oracle会在PGA内存区域开辟一个私有进程/线程,保存此SESSION的环境配置,登陆权限等。
...
Oracle 不完全恢复
- 博客分类:
- Oracle 管理
不完全恢复
指的恢复到某一个时间点,在这个时间点scn之后的操作会全部消失
recover datafile until scn xxxx;
recover database until scn xxxx;
recover database until sequence xx;--恢复到哪个日志文件截止
recover database until xx;--恢复到哪个时间点
--此时,数据文件头上的scn会小于控制文件的scn号,需要resetlogs才能打开数据库。
alter database open resetlogs;
--当resetlogs打开后 ...
Oracle 备份之RMAN使用
- 博客分类:
- Oracle 管理
RMAN
RMAN只能在Archive log模式下进行,因为备份模式只能是热备份。
--经测试,非归档模式在mount 层次下,noarchive也可以备份。但open状态是不可以备份活动数据文件的。
RMAN只会备份有用的数据块。
通过以下方式连接目标库:
C:\Users\anker>rman
RMAN> connect target sys/system@orcl
连接到目标数据库: ORCL (DBID=1325028359)
备份整个数据库 backup database;
备份完成的文件存放在
%db_recovery ...
Oracle 备份恢复原理
- 博客分类:
- Oracle 管理
Oracle 的工作模式:
1.Archive
2.Noarchive.
归档模式实际上是保留重做日志文件的副本(当在线重做日志切换时),当数据库down掉时,可以利用以前的备份文件+重做日志(归档及online模式)进行恢复。
查看归档模式
此命令只能是sysdba的权限才可以执行。
SQL>Archive log list;
若是DBA权限,需要下面的语句查看
SELECT log_mode from v$database.
归档和非归档如何转换?
1.启动到Amount状态
sys@ORCL> startup mount
2.启动到归档 ...
Oracle全局索引和局部索引
- 博客分类:
- Oracle 开发
表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。 局部索引local index 1. 局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,一句话,局部索引的分区机制和表的分区机制一样。 2. 如果局部索引的索引列以分区键开头,则称为前缀局部索引。 3. 如果局部索引的列不是以分区键开头,或者不包含分区键列,则称为非前缀索引。 4. 前缀和非前缀索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键。 5. 局 ...
Oracle 分批提交DML
- 博客分类:
- Oracle 开发
/*
参考于TOM编程艺术 8.5章在循环中提交
1.采用分批操作并不能提高执行速度,执行效率不如单条DML语句。
2.分批插入可以减少对undo空间的占用,但频繁的提交,可能会导致前面提交的undo空间被其他事务占用而可能导致ORA-0155错误。
3.若分批操作中间半截失败掉,会将你数据库置于一种未知的状态。(DELETE操作不会出现这种情况)
*/
--分批 update
DROP TABLE T2;
CREATE TABLE T2 AS SELECT OBJECT_NAME FROM DBA_OBJECTS;
SELECT * FROM T2;
SE ...