第一章:
进行数据库逻辑模型设计的时候,逻辑模型是通过实体-关系图来表示的,这种表示方法叫做”E-R图”(Entity-Relationship Model).逻辑模型由以下三个元素组成
1. 实体
2. 属性
3. 关系
在关系数据库系统中,最基本的元素是表
列又称为字段(Field)或者属性
数据字典就是Oracle自动创建的表以及视图组成,我们不能修改
审计信息(如谁存取或者修改过对象)
输入SQL语句:DROP TABLE students,Oracle会存放数据字典中有关students的表信息删除
数据字典的每个视图集有三种视图前缀为
USER(在当前用户的模式内)
ALL(包括用户有权限访问的内容)
DBA(为全部用户可存取的视图)
第二章:
数据块是Oracle最小的存储单位
一个共享服务器模式的系统有下面的三个部分组成
1. 监听器
2. 一个或者多个调度进程
3. 一个或者多个共享服务进程
第四章:
配置监听器的方法有两种
1. 通过图形界面工具Netr Manager
2. 直接使用文本编辑器编辑监听器配置文件listener.ora
监听器是位于服务器端的,独立运行的一个后台进程
UNIX下启动监听器的命令是su – oracle
我们可以让连接描述符起个别名”网络服务名”
第五章:
SQL*Plus是DBA的最爱!(一下的操作为unix平台)
sqlplus启动SQL*Plus
输入用户名是:system@myzdb
其中system是数据库的用户名,myzdb就是网络服务名
SQL语句结束有3中方式:以分号结束(;);在单独的一行,输入斜杠(/);以一行空白航结束.
SQL> SELECT EMPLOYRR_ID, LAST_NAME,JOD_ID, SALARY FROM ENP_DETAILS_VIEW WHERE SALARY > 12000;
用于查询工资高于12000元的员工
PL/SQL块是以DECLARE或BEGIN开头并以END结束的一段代码
以下的代码段往表中插入1000条记录
SQL> BEGIN
FOR V_Counter IN 1..1000 LOOP
INSERTINTO A4
VALUES(‘21212121fsaasd’);
ENDLOOP;
COMMIT;
END;
/
SQL> host dir d:\
可以用这种方法来执行系统命令host是关键字 dir是系统命令
登陆命令:
语法 CONNECTusername/passwd@网络服务名SYSOPER|SYSDBA
SYSOPER|SYSDBA表示以超级用户的身份来登陆数据库
SQL>DISCONNECT 注销
编辑命令:
语法:A[PPEND]test
把文本添加到当前行的末尾
语法:C[HANG]/旧字符串/新字符串
修改字符串
语法:CL[EAR] 选项
清楚某项设置或者内容
语法:DEL[n|n m|n*|n LAST| *|* n| * LAST| LAST]
*代表当强行
删除指定缓冲区中指定的行
语法:I[NPUT][text]
在当前缓冲区中的当前航再添加一行
语法: L[IST][n|n m|n *|n LAST| *|* n| * LAST| LAST]
显示
语法:PRO[MPT][text]
显示文本信息
语法:DEF[INE][variable]|[variable = text]
定义一个变量,并把一个字符值赋给它;或者显示变量的值
语法:SETsystem_variable value
设置SQL*Plus的环境
语法:R[UN] 也可以用/重复最后一条语句
运行SQL缓冲区中的SQL语句
SQL>SET TIMING ON可以跟踪语句的执行时间
用start命令或者@命令可以用来运行一个脚本文件
SQL>@F:\script\ch05_1.SQL
记住要加后缀
用Ctrl+C可以终止正在运行的SQL语句
SQL>COLUMN rec_time FORMAT A40
可以用来格式化输出,就是把rec_time这个字段限制在最大40个字符
COLUMN SALARY FORMAT $99,999
可以吧工资格式化成这种形式
站点配置文件的名字通常叫glogin.sql在开启SQL*Plus时候自动运行,所以我们可以修改这个文件来设置环境
SQL>SPOOL D:\scrip/sptest.txt
可以指定将查询结果输出到哪个文件
SQL>SPOOL off来关闭
替换变量是用&
SQL>SELECT * FROM PHONE_INFOR WHEREPRICE>&unitprice
之后系统会要求你舒服unitprice
每次执行这条SQL语句,不需要对SQL语句做任何修改,只要按照提示输入值就可以
也可以用OEM来管理数据库
第六章:
打开数据库步骤
先登陆数据库
1. SQL> CONNECT sys AS SYSDBA
2. SQL>STARTUP启动的信息全部包含在警报文件中
可以通过SQL>SHOWPARAMETER BACKGROUND_DUMP_DEST来现实警报文件的路径
启动Oracle数据库要经历3个阶段
1. 启动实例
2. 装载数据库
3. 打开数据库
初始化参数文件SPFILE(二进制,在DBA中可以永久修改)和PFILE(文本模式,在DBA中只能临时修改)
启动数据库的时候,Oracle会读取参数文件中的值,然后根据这些值来对实例和数据库进行设置
可以用SELECTname,value FROM V$PARAMETER
SQL> SHOW PARAMETERS来显示所有初始化参数的值
也可以指定显示初始化参数的值
SQL>SHOW PARAMETER undo_retention
显示undo_retention参数的值和状态
或者
SELECT name,value FROM V$PARAMETER WHEREname=’ undo_retention’
/
可以根据SPFILE来生成一个PFILE
CREATE PFILE = ‘PFILE的名字’ FROM SPFILE = ‘SPFILE的名字’
反之亦然
SQL>STARTUP FORCE;来重启数据库
SQL> SELECT open_mode FROM v$database显示数据库的状态
以下几种关闭数据库的方式
SQL>SHUTDOWN IMMEDIATE;
最常用也是最安全的
SQL>SHUTDOWN ABORT;最快的关闭方式,但是下次重新启动的时候要恢复实例
SQL>SHUTDOWN NORMAL;为最慢的方式,等所有的用户登出数据库才关闭
SQL>SHUTDOWN TRANSACTIONAL;不会丢失客户端的数据
第七章:
一个数据库被分成一个个的逻辑单元,这些逻辑单元叫"表空间".表空间用于存放数据库对象(如表,索引等).
每个数据库都拥有一个系统表空间(SYSTEM Tablesoace)和一个辅助表空间(SYSAUX Tablespace).这两个表空间都是小文件表空间
一个数据文件由多个操作系统块组成
数据文件有以下特征:
1. 一个数据文件能属于一个数据库
2. 数据文件可以被设置成自动扩展
3. 一个或者多个数据文件形成一个表空间(表空间是Oracle的逻辑结构)
4. 一个数据文件值能属于一个表空间
对于表空间中区的空间管理
1. 字典管理,通过数据字典对区进行管理,正逐渐被淘汰因为会存储回滚信息
2. 本地管理,通过位图对区进行管理
可以扩展表空间和让表空间离线/在线,有三种离线方式一般用NORMAL
也可以对表空间加密
CREATE TABLESPACE securespace
DATAFILE ‘F:\NEWDB\ZDB\userdata1’ SIZE 100M
ENCRYPTION USING ‘AES256’
DEFAULT STORAGE(ENCRYPT)
表被存放在表空间,从逻辑结构的角度,表空间是表的容器;从屋里结构的角度,表实际上存放在数据文件,数据文件是表的屋里载体.
块组成区,区组成段,段组成表空间,表空间组成数据库.这是Oracle存储逻辑结构
段有:
1. 数据段
2. 索引段
3. 临时段(是系统性能降低的征兆)
4. 回滚段
回滚段是根据循环查找来使用的
第八章:
自动存储管理(Automated Storage Management,ASM)实质上是一个卷管理器,对磁盘进行管理,ASM装载磁盘组,并使ASN文件对数据库实例有效,即使数据库实例能访问实例.同时提供冗余对数据进行保护.ASM使管理员从管理成百上千数据文件的繁琐事务中解脱出来
一个ASM磁盘组由多个磁盘组成,一个ASM文件只能存放在一个磁盘组中,一个文件所获得的空间要从磁盘组中进行划分,每个磁盘组都包含ASM元数据.
ASM元数据包括:
一个磁盘属于哪个磁盘组
磁盘组上的有效空间
一个磁盘组中有哪些文件
区(Extent)的位置
ASM磁盘
磁盘阵列上的一个磁盘或者分区
一整块磁盘或者来自一个磁盘上的分区
逻辑卷
网络文件系统
每个磁盘组中的每个磁盘会被分成多个单元(AU)
可以存放在磁盘组中的文件有:
控制文件
数据文件,临时文件和数据文件副本
服务器参数文件
重做日志文件,归档日志文件和闪回日志文件
RMAN生成的备份
灾难恢复配置
Change Tracking Bitmaps(改变跟踪图)
ASM磁盘组上创建文件时,最小的可寻址单元是区
Oracle读取数据是进行并行读取的
第九章:
Oracle的基本内存结构分成3种:
系统全局区,被所有进程共享的SGA
程序全局区,私有的,每个进程都有一个PGA
软件代码区
SGA主要由下面的结构组成
数据库高速缓冲区
重做日志缓冲区
共享池(字典缓冲区的大小将影响数据库的整体性能)
大池
Java池
流池
可以用自动内存管理来管理这些内存
可以用SQL>SELECETNAME,BYTES/1024/1024||’M’ FORM V$SGAINFO
WHERE Name=’BufferCache Size’;来查各种内存的信息
只需改红字来指定
第十章:
进程有用户进程和Oracle进程
Oracle进程有服务器进程和后台进程
服务器进程有专有服务器进程和共享服务器进程
一个实例可以有多个后台进程
归档进程:党发生一次日志切换时,归档进程将吧重做日志文件复制到指定的存储设备上.,可以用ALTER SYSTEM命令动态修改ARCHIVE_MAX_PROCESSES
校验点进程:党一个校验点发生时,Oracle必须更新所有数据文件的头部,以记录校验点的详细信息
数据库书写进程:数据库书写进程是后台进程,它负责吧数据库告诉缓冲区中的数据写到磁盘上的数据文件中.
作业队列进程:作业队列进程用于批处理,它主要负责作业的运行.
日志书写进程:负责重做日志缓冲区的管理
进程监控进程:负责进程的管理.当用户进程失败,进程监控进程将清除该用户进程占用的数据库高速缓冲区及其他各种资源
队列监控进程:负责监控消息队列
恢复进程:主要用于处理失败的分布式事务.
系统监控进程:数据库启动时,系统监控进程负责实例恢复
第十一章:
控制文件其实是一个仓库,该仓库用于存放数据库物理结构信息.是一个很小的二进制文件,一个控制文件只属于一个数据库
要好好的保护控制文件和时常做备份,没有控制文件数据库将不能正常进行
第十二章:
重做日志用于记录所有数据库的修改
重做日志分成几组,每组有几个文件都是一样的.
如果当前的重做日志组被填满的时候,Oracle就会切换到下一组有效的重做日志组
如果数据库运行在归档模式,重做日志文件记录的内容已经写到数据文件中并且已经归档,则该重做日志组也被认为有效
第十三章:
Oracle的物理结构
数据文件
控制文件
重做日志文件
归档日志文件
参数文件
警报文件
跟踪文件
备份文件
逻辑数据库结构
数据库
区
段
表空间
块组成区,区组成段,段组成表空间,表空间组成数据库.这是Oracle存储逻辑结构
SGA叫系统全局区,是一片共享的内存区域,SGA包含以下几个片内存区域
数据库高速缓冲区
重做日志缓冲区
共享池
大池
Java池
流池
后台进程:
归档进程
校验点进程
数据库书写进程
作业队列进程
日志书写进程
进程监控进程
队列监控进程
恢复进程
系统监控进程
其他后台进程
第十四章:
DBA角色是预定义的角色,不能把该角色授予普通的用户
有三种类型的预定义账户
管理员账户
样例账户
内部账户
可以通过
AlTER USERitem ACCOUNT LOCK来锁定非法用户
概要文件可以限制用户对资源的消耗
数据库管理员有4种验证方式
数据字典验证,操作系统验证,口令文件验证.基于网络的验证
第十五章:
Oracle是最新的导入导出工具
Orace数据泵由三部分组成:命令行客户端,数据泵API,元数据API
有4种方式移动数据
数据文件复制(最快)
直接路径(次快)
外部表(直接创建一个DUMP)
网络链接导入
主表是用来保存整个导入导出的信息
导出模式有以下几种
全库导出模式
模式导出
表导出模式
表空间导出模式
可移动表空间导出模式
有三种调用接口来导出
命令行接口
参数文件接口
交互式接口
第十六章:
SQL是高级非过程化编程语言,它允许用户在高层数据结构上工作,而不要求用户指定数据的存取方法,也不需要用户了解数据的具体存放方式
SQL语言细分成以下6中
数据定义语言
数据操作语言
事务控制语言
回话控制语言
系统控制语言
数据定义语言DDL用于改变对象的定义,可以:
创建,改变,删除模式对象及其他数据库结构
重命名数据库对象
删除所有数据
管理权限
设置审计
增加注释
数据操作语言DML用于查询或者操作数据库对象中的数据.只改变表中的数据,并不会改变表的结构,可以
从表或者视图中检索数据
往表或者是视图中插入数据
修改列的值
有条件地往表或视图中插入或者更新数据
从表或者视图中删除数据
查看SQL语句的执行计划
锁住表及用户
事务控制语言
事务控制语言主要用于事务控制,包括提交,回滚,设置回滚点,设置事务
系统控制语言
系统控制语言用于修改数据库实例的属性
事务就是一个SQL语句块
DDL语句是(隐式提交)自动提交的,但是DML语句要用户输入COMMIT
COMMIT提交后事务将不存在
命名事务
SET TRANSACTION NAME’INSERT INTO table tre’
往表中插入数据
INSERT INTO tra VALUES(2,’kk’);
查看事务是否存在
SELECT name FROM v%transaction;
这时事务存在
提交事务
COMMIT
事务将不存在了
事务读一致性
就是说只能看到COMMIT之前的数据,不能看到COMMIT之后的数据
SET TRANSACTION READ ONLY
然后
SELECT * FROM tra
只能看到COMMIT之前的数据
kk
这时候就算在添加数据
INSERT INTO tra
VALUES(2,’bb’);
不COMMIT的话还是看不到的
只有COMMIT后才能看到
只读事务内只能执行下面的SQL语句
不到FOR UPDATE的SELECT语句
锁表(LOCK TABLE)
设置角色(SET ROLE)
修改会话(ALTERSESSION)
修改实例设置(ALTERSYSTEM )
回滚点是事务中的标记,允许用户回滚事务的一部分,而不是整个事务
更新表eps
UPDATE eps
SET ID = 53221
WHERE name = ‘BEN’
设置回滚点sp1
SAVEPOINT sp1
再次更新表eps
更新表eps
UPDATE eps
SET ID = 77225
WHERE name = ‘XIAO MIN
设置回滚点sp2
SAVEPOINT sp2
回滚到回滚点sp1
ROLLBACK TO SAVEPOINT sp1
自治事务就是嵌套在一个事物中的新事物,当执行自治事务的时候主事务被挂起.结束后执行主事务,使用PRAGMA AUTONOMOUS_TRANSACTION指定自治事务
Oracle表类型
普通表
聚簇表
分区表
外部表
临时表
索引组织表
聚簇表由多个表组成,几个表共享相同的数据块,多个表共享这些列,这样的列叫聚簇关键字
只有满足下面两个条件才适合使用聚簇:
建立聚簇表的目的是为了查询,不是为了修改
查询时,常常对聚簇中的多个表进行连接
外部表
外部表是这样的表,数据库只存放外部表的定义,外部表的数据存放在数据库之外.创建外部表的SQL语句分成两部分,一部分描述列的定义,另一部分描述外部数据源如何映射成数据库的列
临时表
用CREATE GLOBALTEMPORARY TABLE创建临时表,临时表分成两类
会话型的临时表
事务型的临时表
都只存在会话或者事务期间
索引组织表
快速的随机访问
快速的范围扫描
更少的存储需求
因为表的数据很大,以至于一个索引条目不能够容纳,因此Oracle将一条记录分成两部分进行存储
索引部分
溢出区,存放非主键值
创建聚簇
CREATE CLUSTER tb_cluster(postcode int)
TABLESPACE myspace;
吧表student加入聚簇tb_cluster中
CREATE TABLE student(
ID INT PRIMARY KEY,// PRIMARY KEY指定为主键
NAME VARCHAR2(20) NOT NULL,
Postcode INT
)
CLUSTER tb_cluster(postcode);
CREATE TABLE students(
Name VARCHAR(20) PROMARY KEY,
id NUMBER,
detail VARCHAR2(100)
)
ORGANIZATION INDEX//指定创建的表是索引组织表
TABLESPACE user
PCTTHRESHOLD 30//指定溢出比例
INCLUDING detail//指定列名
OVERFLOW TABLESPACE myspace;
授予用户rawman对目录(dat_dir)读写权限
GRANT READ,WRITE ON DIRECTORY log_dir TOrawman;
为了使用外部表,Oracle要求:
对存放数据的目录要有读的权限
对存放日志文件的目录要有写的权限
对存放坏文件的目录要有写的权限
克隆表t_clone1
CREATE TABLE t_clone1
AS SELECT * FROM stb
WHERE 1=0;没有数据,仅仅是结构相同的克隆
CREATE TABLE t_clone2
AS SELECT * FROM stb;
这样就跟stb一样有数据了
可以修改表的属性
增加列
ALTER TABLE tb_ordernary5
ADD (lenth NUMBER(8,3));
列重命名
ALTER TABLE tb_ordernary5
RENAME COLUMN lenth TO new_lenth;
对列加密
ALTER TABLE tb_ordernary5
MODIFY(new_lenth ENCRYPT USING ‘3DES168’);
使用加密算法3DES168’对列new_length加密
ALTER TABLE tb_ordernary5
MODIFY (new_length DECRYPT);
对列进行解密
删除列name,address
ALTER TABLE tb_ordernary5 DROP (name,address);
DESC tb_date_test可以查看表的类型
DROP TABLE student_infor;吧表放入回收站
PURGE RECYCLEBIN;清空回收站
DROP TABLE student_infor PURGE;直接删除表
SHOW RECYCLEBIN;查看回收站
FLASHBACK TABLE instructor TO BEFORE DROP
[RENAME TO instructor_restore];从回收站恢复表[并重命名]
插入语句的基本语法:
INSERT INTO 表名 (列1, 列2, 列3,…)
VALUES(值1, 值2, 值3,…);
未被指定的将插入默认值或者(NULL)
可以不指定列名,但是列的顺序必须一一对应
INSERT INTO 表名
VALUES(值1, 值2, 值3,…);
从数据源表t_source往目标表t_target插入数据
INSERT INTO t_target(id,name)
SELECT id,name
FORM t_source t
WHERE t.adress=’上海’;
COMMIT
SELECT name A,age B FROM t_null;在列后面指定一个名字为一个别名,显示的时候显示别名,界面更友好
别名可以在当前的SQL语句中使用,简化输入
SELECT T.name A,T.age B
FROM t_null T
WHERE T.name=’王晶’;
SELECT COUNT(*) FROM t_null
*表示返回所有的记录数
返回共有多少条记录
*也可以指定一个列名,用来返回拥有指定值的数量是多少
SELECT COUNT(DISTINCT age) FROM t_null
返回age列中不重复的数据共有多少种
SELECT name,age FROM t_null
WHERE ROWNUM<=3;
只返回前三行的记录
SELECT name,age FROM t_null
ORDER BY age DESC;
DESC是按照降序排序
如果按照两个字段排序,先按照第一个字段排序,再按照第二个字段排序
SELECT MAX(salary) FROM group_employees;
用于求出最大值
MIN是最小值
AVG是平均值
SUM是总和
SELECT DISTINCTdept_name FROM group_em[loyees WHERE dept_name=’基金管理部’;
DISTINCT用于去除重复值
SELECT *FROM group_employees
WHERE name LINK ‘王%’;
其中LINK是说明用了模糊查询
%指的是通配符,代表多个字符
SELECT *FROM group_employees
WHERE name LINK ‘王_’;
_只代表一个字符,所以就是所有姓王并且只有2个字的名字
DECODE函数用法,是用于条件归类和分析
DECODE(条件,值1,返回值1,值2,返回值2,…..,值n,返回值n,默认值);
还有CASE也是用于条件分类
简单版:
SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN ‘low’
WHEN 5000 THEN ‘High’
ELSE ‘Medium’ END
FROM customers;
当credit_limit的值等于100时,返回值是low,当值等于5000时候,返回值High否则返回Medium
复杂版:
SELECT NAME,(CASE WHEN SCORE < 60 THEN ‘D’
WHEN SCORE>=60 AND SCORE < 70 THEN ‘C’
WHEN SCORE>=70 AND SCORE < 80 THEN ‘B’
WHEN SCORE>=80 THEN ‘A’
ELSE ‘NO SCORE’ end) FROM score
SELECT ‘BB’||’C’ FROM DUAL;用于连接连个字符串,可以对应输出
例如管理员汪峰
可以行列互换,用于统计或者转换格式
expr1 BETWEEN expr2 AND expr3用于测试expr1在不在2和3之间
SELECT ‘测试字符’ FROM dual WHERE ‘c’ BETWEEN ‘d’;
SELECT * FROM T_NULL WHERE dept_name ISNULL
用于查询值为NULL的值(空值)不是空字符
IS NOT NULL指的是不空
WHERE EXITSTS(subquery)用于指定subquery在不在表中
在就返回这些in西
WHERE IN(subquery)用于选定记录
SELECT dept_name,count(*)
FROM group_employees
GROUP BY dept_name
GROUP BY用于分组统计
保安部1
后勤部 3
这样可以查询每个部门有多少人.
SELECT dept_name,name,salary
FROMgroup_employees A
WHERE(A.dept_name,A.salary) IN (
SELECTdept_name,MAX(salary)
FROMgroup_employees B
GROUP BYdept_name)
ORDER BYdept_name;
找出每个部门工资最高的人,并按dept_name;排序
SELECTTO_CHAR(deal_date,’YYYY’)年,TO_CHAR((deal_date,’MM)月,SUM(money)销售收入
FROM shoe_sales
GROUP BY ROLLUP(TO_CHAR(deal_date,’YYYY’),TO_CHAR(deal_date,’MM’))
这里进行分组汇总,先按照月汇总再按照年汇总,月的和年的都会被显示出来,先显示月再显示年
如果黄字是CUBE就是多维汇总
可以实行批量字符替换
可以去除字符串中的数字
统计某个字符(字符串)出现的次数
判断一个字符串是否为全部数字
去掉字符串中的空格
删除字符串的前几个字符
字母大小写的转换
SELECT dept_name,name,salaryFROM product_A
UNION ALL
SELECTdept_name,name,salary FROM product_B
合并2个查询,包括重复
SELECTdept_name,name,salary FROM product_A
UNION
SELECTdept_name,name,salary FROM product_B
合并2个查询,不包括重复
SELECTdept_name,name,salary FROM product_A
INTERSECT
SELECTdept_name,name,salary FROM product_B
找出相同,等于
SELECTdept_name,name,salary FROM product_A
WHERE(dept_name,name,salary)IN(SELECTdept_name,name,salary FROM product_B
)
SELECTdept_name,name,salary FROM product_A
MINUS
SELECTdept_name,name,salary FROM product_B
用第一个查询到的减去第二个,集合减
DELETE FROMtable_name
WHERE
用于删除表,where指定删除记录,如果没有where子句就是删除整个表
TRUNCATE TABLEstudent2;
这个是删除整个表,这样的删除效率比较高
重建表可以先建一个跟源表相同结构,然后再删除源表,再用新建表再建一个同结构同源表名源表,效率较高,但是要重新维护约束,除法器和权限等
Sql语句不识别大小写,但是对象识别
完整性约束是一些规则利用这些规则,对表中的一列或者多列的数据进行限制,防止一些非法的数据进入数据库,有5种类型的约束
不为空约束
唯一值约束
主键约束
参照完整性约束
检查约束
主键可由单列组成也可以由多列组成
大对象数据类型专为大容量存储而设计的,Oracle设计了4中大对象类型.他们是BFILE, BLOB,CLOB,NCLOB
LOB定位器就是就是指向LOB数据的指针
使用CREATE TYPE … AS TABLE OF定义嵌套表
可以使用DML语句操作远程的数据库,但是不能用DDL
INSERT INTO kk@remoteddb2
@后用用于有调用远程的数据库
用关键字PARTITION(p2)指定分区,在筛选过滤的时候只扫描这个分区,有利于管理和提高效率
自动工作负载库AWR负责自动收集,处理,维护性能相关的统计信息,每个一个小时采样一次快照
ADDM性能监控器是Oracle提供的性能诊断工具,AWR是性能检测器的基础,能帮你找出性能问题的根本原因,并自动人提出问题的解决之道
CREATE INDEXind_name4 ON ct(name);创建索引,也可以创建其他不同的索引,有唯一性索引,符合索引,…
可以吧索引移向另一个表空间
索引的DEL_LF_ROWS_LEN/LF_ROWS_LEN值大于20
HEIGHT的值大于4就需要重建索引
ALTER INDEXinfd5 REBUILD;
优化器用于产生执行计划.产生计划时候,优化器会对表达式和条件进行评估,它综合各方面的因素,然后生成执行效率最高的执行计划
AUTOTRACE用于性能调整的工具
访问路径是指从数据库中检索数据的方法,访问路径有
全表扫描
索引扫描
行ID扫描
聚簇访问
哈希访问
采样表扫描
连接方法
连接是指从一个或者多个表中检索数据
主要由3种连接方式:
嵌套循环连接,哈希连接和排序合并连接
索引是一把双刃剑
两条sQL语句相同必须满足条件是
空格,大小写,换行,注释,关键字.值相同
引用的对象必须属于相同的模式
如果绑定变量,兵丁变量的名字,类型,长度必须相同
最好一次吧条件写全,这样扫描表的次数就会减少
提示以/*+开始以*/结束,用于改变SQL语句的执行假话
第十八章:
一个模式是一个数据库对象的集合
模式名就是用户名,用户名就是模式名,
模式就是用户
视图是表中数据的逻辑表示,视图也可以说成是一段存储的SELECT语句,它用于从数据库检索视图要表示的数据.
视图就是一个被封装的表
CREATE VIEWv_zero AS
SELECT *
FROM kk.students
WHEREid>1000;
Kk是基表的拥有者
然后v_zero就可以当做一个比较小的表来用
第二十章:
包也是模式对象,它是相关对象继承在一起的PL/SQL结构
第二十一章:
即使客户端让你没有安装Oracle客户端的情况下也能使用SQL*Plus
第二十二章:
所谓一致性冷备份,指的备份所有数据文件和控制有相同的系统改变好.冷备份必须是一致性备份,否则在数据库恢复后有可能打不开数据库
如果数据库运行在非归档模式,这样的备份是无效的备份,说白了,进行这样的备份还不如不备份
第二十三章:
通过RMAN的客户端工具来恢复
第二十四章: