`
文章列表
---压缩表可减少数据量,从而减少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 ...
/* 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 ...
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 ...
/* 几个索引的扫描方式: 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 ...
/* 索引 索引由三部分组成,根块(root),Branch(茎块),Leaf(叶子块)。其中Leaf块主要存储了key column value(索引列具体值),以及能具体 定位到数据块位置的rowid。 索引的创建过程: 1.要建索引先排序,将索引列的值顺序取出,及该行的rowid放入到内存中。 2.依次将内存中的顺序存放的值和rowid存放入索引块中。 3.当填满两个索引块后,oracle会产生一个块,用于管理同级的叶子块。这个块记录了叶子块的信息,并不记录索引列的键值,所以使用的空间比较少。 4.当管理叶子块的块被填满后,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 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 ...
--聚合因子试验准备: --分别建两张有序和无序的表 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 */ --从一条UPDATE语句看Oracle体系结构 SQLPLUS ADMIN/ADMIN UPDATE TT1 SET ID = 6 WHERE OBJECT_ID = 12; /* 1.执行SQLPLUS ADMIN/ADMIN,Oracle会在PGA内存区域开辟一个私有进程/线程,保存此SESSION的环境配置,登陆权限等。 ...
不完全恢复 指的恢复到某一个时间点,在这个时间点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打开后 ...
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 的工作模式: 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.启动到归档 ...
表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。 局部索引local index 1.  局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,一句话,局部索引的分区机制和表的分区机制一样。 2.  如果局部索引的索引列以分区键开头,则称为前缀局部索引。 3.  如果局部索引的列不是以分区键开头,或者不包含分区键列,则称为非前缀索引。 4.  前缀和非前缀索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键。 5.  局 ...
/* 参考于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 ...
Global site tag (gtag.js) - Google Analytics