第一章:ORACLE的结构
一、ORACLE的SERVER
1、SERVER=DATABASE+INSTANCE(内存结构)
2、ORACLOE的连接方式:
A、直接登录:UNIX主机,客户端通过串口,TCP/IP直接登陆到主机,使用ORACLE
B、C/S方式:客户端通过TCP/IP+NET8,做数据的存储,调用,查询。端口活动少,速度加快
C、三层结构:在C和S之间加一个应用服务器,C通过TCP/IP,PPP,RS232连到应用服务器上,调用业务程序,通过业务程序从应用服务器以TCP/IP+NET8访问S端。适合大型业务。
二、如何连接数据库
1、USER PROCESS:通过C端的应用程序(SQLPLUS,DEVELOPE 2000。。。),产生,运行C端,用于发出USER的请求。
2、SERVER PROCESS:响应一个特定的USERPROCESS,随着USER PROCESS的请求,作相应的处理。SP 和UP数量相等,当UP终止,SP也会终止。同时SP所占用的资源释放,(内存)。一个SP占用内存约18M-50M。内存:PGA
3、SESSION:会话,连接,从C到S的连接链路,从用户登陆到数据库开始,到用户退出登陆终止。
三、ORACLE的INSTANCE;
1、INSTANCE:实例,内存结构,定义了ORACLE数据库在启动和工作过程中所使用的内存的大小,及分配方式。分配方法由INIT《SID》。ORA(参数文件)
2、INSTANCE的组成:
A、SGA区,共享内存区
B、后台进程:
1、DBWR:定期将CACHE中的数据写回硬盘
2、LGWR:记录所有已提交数据的修改动作。
3、SMON:监控数据库状态,释放临时段,做数据一致性的恢复。
4、PMON:监控ORACLE进程的运行状态。
2、SGA的组成
A、 SHARE POOL:LIB CACHE,存储编译后的执行代码
DICTIONARY CACHE:数据字典 CACHE
SELECT * FROM EMP,只有数据字典可以将对象信息转为ORACLE自己看的懂的信息 。
共享池的大小:SHARED_POOL_SIZE
B、DATABASE BUFFER CACHE 存储ORACLE常用数据大小=DB_BLOCK_SIZE*DB_BLOCK_BUFFERS
C、PGA的概念,独占内存区,只给一个特定SERVERPROCESS使用。当SP终止后,内存释放。
D、REDO LOG BUFFER:回滚实现所使用。
四、ORACLE DATABASE的组成:
1、DATABASE:DATAFILE,REDOLOG,控制文件。
2、附加文件:参数文件(INIT), PASSWORD文件,备份的日志文件。
第二章:如何管理ORACLE的INSTANCE(INTANCE的启动与终止)
一、ORACLE的启动过程
1、START AN INSTANCE:完成内存的初始化
2、MOUNT AN DATABASE:挂起数据库,读控制文件,仍然不允许普通用户访问数据库,但数据库管理员可以在这一级对库的维护,RECOVERY,调整。
3、OPEN数据库:允许正常访问,对库做数据操作。
二、ORACLE的终止:
1、CLOSE DATABASE
2、DISMOUNT DATABASE
3、RELEASE INSTANCE
三、ORACLE的数据库管理员:
1、数据库完成安装后,有两个自动生成的数据库管理员,SYSTEM,SYS,都有DBA的权限
2、SYS:CHANGE_ON_INSTALL(password),SYS是数据字典的所有者。
3、SYSTEM:MANAGER(PASSWORD)是工具表的所有者(OEM管理器)
四、INIT文件
1、INIT文件:主要定义了INSTANCE的启动的参数,所有对INIT参数的修改最终会影响到整个数据库,所有的修改只对下一次数据库的启动生效。
2、参数=值(系统根据你的环境优化的结果)
3、所有的参数都可以修改,除了db_block_size:
4、在ORACLE的企业版中,参数文件的命名格式:init<sid>.ora,
ifile=........\init.ora
ifile表示连接文件,将参数的配置文件指定到另一个目录下的文件中。
《SID》\PFILE\INIT.ORA
5、所有的文本编辑命令均可用于修改INIT文件
五、ORACLE的每一步启动的过程
1、INSTANCE的启动
A、读INIT文件,
B、根据INIT的参数分配内存(INSTANCE)
C、开始做跟踪,审记
D、后台进程启动
2、MOUNT DATABASE
A、对数据库中的控制文件操作
B、为数据文件定位。
C、控制文件的位置,数量由INIT文件定义
D、用于,数据恢复,维护,数据文件的重定位
3、OPEN DATABASE
A、允许用户正常访问
B、所有的在线数据文件,处于打开状态
C、SMON,作一个一致性检测
4、CLOSE DATABASE
A、回写CACHE中的数据(DBWR)
B、关闭数据库的数据文件
C、CONTROL文件还可以使用,INSTANCE没有释放。
5、DISMOUNT DATABASE
A、关闭控制文件
B、INSTANCE可以使用
6、RELEASE INSTANCE
六、数据库启动的命令
1 STARTUP [NOMOUNT|MOUNT|OPEN] [PFILE=。。。。][RESTRICT]
A、STARTUP NOMOUNT:将数据库启动到INSTANCE启动,但 不涉及数据文件
B、STARTUP MOUNT:启动MOUNT状态,控制文件打开
C、STARTUP OPEN(STARTUP): 将数据库完全打开,允许用户访问
D、STARTUP RESTRICT: 将数据库完全打开,允许有RESTRICT权限的用户访问。用于需要在OPEN状态下作数据库维护,而又不希望普通用户登陆的时候。
E、STARTUP PFILE=当你希望数据库启动时,使用你新定义的INIT文件时。
七、数据库的终止命令
1、SHUTDOWN [NORMAL|IMMEDIATE|ABORT|TRANSCATIONAL]
A I T N
允许新连接: N N N N
等待用户退出: N N N Y
等待事物的结束: N N Y Y
关闭文件: N Y Y Y
八、动态视图:
在ORACLE 里提供大量的动态视图包括,内存,磁盘的信息,连续反映数据库的变化,所有的这类视图,以v$开头。V$INSTANCE.数据库启动每到一步的时候,相应的视图会打开。STARTUP NOMOUNT,与内存
相关的视图打开。
九、如何显示参数的配置
1 SVRMGRL-->CONNECT INTERNAL-->SHOW PARAEMTER 参数名称
2 v$parameter
十、如何终止一个SESSION
1、找到相关SESSION的信息
SELECT SID, SERIAL# FROM V$SESSION WHERE USERNAME='SCOTT'
2、终止该进程:
ALTER SYSTEM KILL SESSION '7,15'
3、所有以上操作不会影响数据库的一致性, A、释放资源
B、释放锁
C、回退当前会话。
第三章:建立数据库
一、建立数据库的准备
1、足够权限的用户
对于操作系统而言,是一个ADMIN
对于数据库而言,DBA的权限
2、你的系统是否有足够的内存,64M
3、有没有硬盘空间:操作系统空间+数据库系统空间+应用数据空间
二、如何规划你的数据库
1、至少在你的数据库上有两个控制文件。
2、尽量保证日志组内部的成员数》2,且同一组内的成员间,处于不同硬盘。
3、对于同一表空间内的多个数据文件放在不同的硬盘上。主要是为了保证数据安全和I/O并发。
4、对于不同用处的数据,放在不同的表空间上。
SYSTEM表空间
TEMP 表空间
USER 表空间
OEM 表空间
INDEX 表空间
V$TABLESPACE
三、如何手工建库:
1、在数据库安装的过程中,当安装完成时,已经有一个库,自动生成的。库名称,对应的INSTANCE的名称(SID)在安装过程中由用户指定。实际上指定义了数据库生成的最基本信息,其他选项按默认值配置。
2、手工生成数据库
A、设置环境变量和核心参数(UNIX)
B、复制一个INIT文件。
使用一个OS的COPY命令
举例:DB_NAME=OLM
SID_NAME=OLM
MAX_FILES=100
使用写字板改:DB_NAME
SID_NAME
以及其他可选项:
MAX_FILES=100
SHARED_POOL_SIZE=10000
C、启动数据库到NOMOUNT:
因为有了INIT文件,所以系统可以根据INIT的参数配置,初始化内存。'
SVRMGRL--》CONNECT INTERNAL--》STARTUP NOMOUNT PFILE=C:\WIN95\INITOLM.ORA
D、下命令手工建库
CREATE DATABASE OLM
[ MAXLOGFILES 5]这个数据库最大的日志成员组的数量
[MAXLOGMEMBERS 4]定义了每组中成员的数量
[MAXDATAFILES 100]定义了最大的数据文件的数量 LOGFILE
GROUP 1 ('C:\WIN95\REDO1.LOG') SIZE 1M,
GROUP 2 ('C:\WIN95\REDO2.LOG') SIZE 1M
DATAFILE
'C:\ORACLE\ORADATA\SYSTEM01.DBF' SIZE 100M;
四、关于其他操作
1、数据字典视图没有生成
SVRMGRL》@CATALOG。SQL
@CATPROC。SQL
2、创建其他表空间,比如说排序表空间 ,ROLLBACK,TEMP
3、所有的数据文件可以不存在,但所有的路径必须存在。
4、如果是选用自动建库,四的步骤自动完成。
五、信息获取
1、V$DATABASE
2 V$INSTANCE
3 V$TABLESPACE
六、ALTER DATABASE命令
1、启动到NOMOUNT,STARTUP NOMOUNT
2、从NOMOUNT 启动到MOUNT: ALTER DATABASE MOUNT
3、从MOUNT到OPEN : ALTER DATABASE OPEN
第四章:数据字典
一、数据字典的使用:
1、数据字典提供了:逻辑和物理上的数据库结构信息:提供有多少个表空间提供了有多少个数据文件及位置
2、提供硬盘的分配信息
3、提供用户信息,权限
二、组成
1、ORACLE在完成建库已经建立了数据库的基表。
A,编码形式的,不可读
B,是数据字典视图的信息来源。
2、数据字典视图,通过运行CATALOG。SQL,CATPROC。SQL产生的,可读,专为用户提供信息的视图。视图是基表的上层,来源于基表。
3、数据字典视图的分类:
DBA_XXX: dba_tables 数据库管理员使用
all_xxx: all_tables 所有有权访问这个对象的用户
user_xxx:user_tables 该对象的属主
第五章、控制文件的管理
一、控制文件的内容
1、数据库名称和SID名称
2、所有的数据文件的分布
3、TABLESPACE的名称
4、日志段的段号
二、如何可以获取控制文件的信息
1、V$CONTROLFILE
SELECT * FROM V$CONTROLFILE
2 V$PARAMETER
3 INIT文件中定义
三、控制文件的管理
1、ORACLE中,控制文件数量不少于2为好。当拥有两个以上的控制文件时,控制文件之间是镜像关系,当任意损坏一个的时候系统不至于崩溃。
2、如何维护:
A、SHUTDOWN 数据库
B、用OS的COPY命令,将控制文件复制一个。
C、修改INIT文件中关于CONTROLFILE的选项。
D、STARTUP 数据库
E、通过V$CONTROLFILE 查看信息
3、控制文件的内容,大小不可改
4、当修改数据库以下参数时可能会改变控制文件大小
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
5、SELECT * FROM V$CONTROLFILE
NAME
/DISK1/CONTROL1.DBF
/DISK2/CONTROL2.DBF
第六章:日志的管理
一、日志的组和成员
1、ORACLE中,记录不同数据库操作的称为日志组
2、ORACLE中,同一日志组内的不同日志文件称为日志成员。
二、归档模式和非归档模式
1、非归档模式:日志文件的内容不经过备份直接被覆盖
2、归档模式:日志文件的内容经过备份,再被覆盖
3、如何知道:归档方式
A、ARCHIVE LOG LIST《SVRMGRL》
B、V$DATABASE
C V$INSTANCE
4、如何知道有几个组,日志段的段号
V$THREAD
V$LOG ********
几个组,每组几个成员,大小,状态
5、如何知道有多少个日志文件,位置,属于哪个组。 v$logfile
三、如何修改(增加)日志组
ALTER DATABASE ADD LOGFILE
('C:\WIN95\REDO11.LOG','C:\WIN95\REDO12.LOG') SIZE 1M;
四、如何加一个日志成员:
ALTER DATABASE ADD LOGFILE MEMBER
'C:\REDO13.LOG' TO GROUP 1,
'C:\REDO14.LOG' TO GROUP 2;
五、如何重定位日志文件
1、SHUTDOWN
2、COPY 一个到新目录下
3、STARTUP MOUNT;
A、修改文件位置最终记录到 CONTROLFILE
B、如果到OPEN下,可以做,但是不一定好用,用户可以访问,一旦对库操作,日志改变,内容会不一致。
4、ALTER DATABASE RENAME
DATAFILE 'C:\REDO13.LOG' TO 'E:\ORACLE\REDO13.LOG' ;
5、ALTER DATABASE OPEN
六、删除日志组:
ALTER DATABASE DROP LOGFILE GROUP 组号;
1、CURRENT状态不能DROP
2、ACTIVITY不可以DROP
七、删除日志成员:
1、ALTER DATABASE DROP LOGFILE MEMBER 'C:\REDO12.LOG'
八、日志的设置:
1、组的数量不少于2组,4组够了。
2、每一个成员的大小:1M-2M,也可以多一些,如10M,成员最好两个以上
3、日志组数量增多,日志成员空间大,可以有效的提升运行速度但是一旦系统不正常关机,下次重启动时,速度很慢。
九、错误
1、非当前日志组,一个成员损坏,系统正常运行
2、当非当前日志组所有成员损坏,系统自动DOWN机
3、当前组所有成员损坏,数据库崩溃,做全库恢复
第七章:表空间和数据文件的管理
一、ORACLE的逻辑结构
1、DATABASE--》TABLESPACE(表空间)--》SEGMENT(段)--》EXTENT(区)--》DB BLOCK
二、逻辑结构
1、TABLESPACE:
A、一个表空间只属于一个数据库
B、一个表空间中含有多个数据文件
C、表空间作用提供:用户数据的存储空间,空间大小=所包含的数据文件的大小的总和。
2、段(SEGMENT)
A、段是存储在表空间中的具有不同特性的存储结构
B、段在物理上,只属于一个表空间
C、组成是由一些EXTENT组成的
D、当一个表空间有多个数据文件时,段可以跨越多个数据文件。
3、区(EXTENT)
A、EXTENT是由一些连续的DB BLOCK 组成的,
B、EXTENT是段的组成单位,一个段可以包含一个或多个EXTENT
4、DB BLOCK:是ORACLE空间分配和建库是的最小分配单位
三、表空间分类:
1、SYSTEM 表空间:
A、建库自动创建的,只包含数据字典,和系统回滚段
B、SYSTEM表空间是ORACLE的库的所有操作所必须访问的,因为操作最终都要通过数据字典进行翻译或更新数据字典。
C、SYSTEM表空间只包含系统数据,但用户也可以将自己的应用数据建在SYSTEM表空间中,但ORACLE 不建议这样做。
2、用户数据表空间(非系统表空间)
A、由用户自己建的表空间,保存用户数据的。
B、在结构上与SYSTEM表空间,一致。
C、表空间中可以放:TABLE,INDEX,临时,回滚
四、如何建立表空间
1、命令
CREATE TABLESPACE 表空间名称
DATAFILE 'C:\WIN95\ZT.DBF' SIZE 1OM DEFAULT STORAGE (INITIAL 100K NEXT 100K MAXEXTENTS 1000 PCTINCREASE 0);
2、DEFAULT STORAGE的参数
A、MINEXTENTS
B、单位可以是:[K|M]
五、如何建立临时表空间:
CREATE TABLESPACE 表空间名称
DATAFILE 'C:\WIN95\OLM.DBF' SIZE 1OM DEFAULT STORAGE (INITIAL 100K NEXT 100K MAXEXTENTS 1000 PCTINCREASE 0) TEMPORARY;
六、如何加一个数据文件给一个表空间
1、空间不够
2、ALTER TABLESPACE 表空间名称 ADD DATAFILE 'C\WIN95\123.DBF' SIZE 100M;
3、路径必须存在,路径下没有同名文件。
七、自动增长
ALTER TABLESPACE 名字 ADD DATAFILE
'C:\WIN95\222.DBF' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M;
八、如何修改DEFAULT STORAGE 参数
ALTER TABLESPACE 名字 DEFAULT STORAGE (INITIAL 12OK NEXT 120K MAXEXTENTS 1200);
九、OFFLINE状态
1、对数据的存取,仅限于ONLINE状态的表空间所含数据。
2、当表空间为OFFLINE时、数据不可用,用户不可访问
3、在表空间重定位,需要将表空间设成OFFLINE。
4、ALTER TABLESPACE 名称 [OFFLINE|ONLINE]
5、SYSTEM表空间不可OFFLINE
十、移动数据文件
1、当因为硬盘过旧,不安全,空间不够,需要移动到更大的硬盘时,需要移动数据文件
2、执行过程
A、先改为OFFLINE,
B、OS 的COPY ,将数据文件复制到新的硬盘上
C、ALTER TABLESPACE 名称 RENAME DATAFILE '。。。。。' TO '。。。。'
D、ALTER TABLESPACE 名称 ONLINE;
3、执行过程(2)
A、SHUTDOWN DATABASE
B、STARTUP MOUNT
C、OS 的COPY ,将数据文件复制到新的硬盘上
D、ALTER DATABASE RENAME FILE '老路径+文件名' TO '新路径+文件名'
E、ALTER DATABASE OPEN;
十一、如何让一个TABLESPACE 只读
1、命令:
ALTER TABLESPACE 名称 READ ONLY
变为可读可写:
ALTER TABLESPACE 名称 READ WRITE
2、表空间必须ONLINE
3、没有访问
4、没有激活状态的回滚段
5、只读只需要备份一次就够了。
十二、DROP 表空间
1、命令:DROP TABLESPACE 名称:
适合于新的表空间,在这个表空间中没有任何用户数据。
[INCLUDING CONTENTS]
数据文件中包含了用户表和索引的 表空间必须加参数
2、注意事项
A、SYSTEM表空间不能DROP
B、DROP命令在ORACLE中,只是在逻辑上解除了数据文件和数据库间的关系,文件本身仍然存在于硬盘上,DOS的DEL删实际的数据文件
十三、如何获取信息:
1、V$DATAFILE:显示所有的数据文件名,路径,状态,及所属表空间号,只读与否
2、V$TABLESPACE: TS#,NAME
做组合查询 :TS#
SELET D.NAME,T.NAME FROM V$DATAFILE D, V$TABLESPAE T
WHERE T.TS#=D.TS#;
3 DBA_DATA_FILES;
显示文件名,表空间名,大小,是否自动扩展,
4、DBA_TABLESPACES
tablespace_name,以及建立该表空间时的所有的参数
第八章:临时表空间
一、临时表空间的使用:
1、临时表空间是用于排序命令:在这个表空间内部不能存放任何永久性的段,不能放TABLE,INDEX,
ROLLBACK,只能放临时段。
2、临时表空间的使用方法:
A、排序的时候,首先用到内存,内存的排序空间的大小:SORT_AREA_SIZE
B、当内存空间不足以排序时,用到临时表空间
C、哪些命令可能引起排序:
SELECT .... FROM EMP ORDER BY
SELECT .....FROM EMP GROUP BY
SELECT .....DISTINCT
CREATE INDEX
D、临时段最好设在临时表空间中,如果建用户时没有特别指定,将用 SYSTEM 表空间排序。这类现象应该避免
E、临时段在排序时产生空间分配, SHUTDOWN空间回收,SMON进程负责
二、信息的获取:
1 V$SORT_SEGMENT
TABLESPACE,SIZE,STATUS
2 V$SORT_USAGE
第九章:回滚段
一、回滚段的作用
1、用于回退事物:保留旧值,在提交之前,一旦事物放弃提交,旧值恢复回来。
2、保持数据的一致性,在提交之前,将访问所修改数据的用户,引导到旧值的存放地。
3、事物的恢复
二、回滚段的类型
1、SYSTEM
2、非系统回滚段(用户自己建的回滚段,用于自己的业务)
三、回滚段的增长
1、从本章开始,所有的对象的创建,不会再有SIZE的定义。只有EXTENT的数量定义。
2、回滚段有激活的和非激活的之分,对于那些含有既没有提交,又没有回退的事物的信息
的EXTENT成为激活状态。反之则为非激活状态。
3、回滚段的EXTENT的分配和使用:是循环的自动的。
4、增加的时候,最大数量由MAXEXTENTS来决定。
5、ROLLBACK,可以自动回收空间,回收到多少可以由OPTIMAL指定,回收以EXTENT为单位,在EXTENT切换时开始回收,停止:=OPTIMAL值,遇到ACT的EXTENT止。
四、ORACLE的回滚段的设置:
1、OLTP:(在线事物处理系统)事物量很大,但是每个事物对数据改动很小。火车定票,设回滚段的时候:数量多(1RBS/4TRAN),但每个回滚不需要太大。
2、 BATCH:(批处理)事物少,每个事物改动量大, 工资代发
RBS:少
SIZE: 大
五、如何建立一个回滚段:
1、命令:
A、在作之前,先建立一个RBS的专用表空间
B、CREATE ROLLBACK SEGMENT 回滚段名称 TABLESPACE 专用表空间名称
STORAGE (INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 4M);
MINEXETENTS 》=2
MAXEXTENTS 不要设为 UNLIMITE
六、如何将ROLLBACK设为ONLINE
1、手工设置:
ALTER ROLLBACK SEGMENT 名称 ONLINE;
2、修改INIT文件:
ROLLBACK_SEGMENTS=(名字)
最多可以设多少个ONLINE的回滚段:MAX_ROOLBACK_SEGMENTS
七、修改ROLLBACK的STORAGE参数
ALTER ROLLBACK SEGMENT 名称 STORAGE(MAXEXTENTS 200);
八、手工回收空间
ALTER ROLLBACK SEGMENT 名称 SHRINK TO 4M[4K]
1、手工回收,也是遇到ACT的停止
2、ALTER ROLLBACK SEGMENT 名称 SHRINK ,没有指定值,回收到OPTIMAL值,
3、当你的指定值比实际值大的时候,整个语句不执行。
九、设为OFFLINE:
ALTER ROLLBACK SEGMENT 名称 OFFLINE
十、DROP ROLLBACK
DROP ROLLBACK SEGMENT 名称
DROP之前,必须先OFFLINE
十一、信息的获取:
1、DBA_ROLLBACK_SEGS
SEGMENT_NAME,OWNER,STATUS,TABLESAPCE_NAME
2、查OPTIMAL值
A、V$ROLLNAME
B V$ROLLSTAT(OPTSIZE)
连接字段,USN
十二、错误分析:
1、ORA-01628:ROLLBACK的增长已经达到MAXEXTENTS的值,修改MAXEXTENTS的值,
2、ORA-01562+ORA-01560:是TABLESPACE的空间不够了,加数据文件,
3、ORA-01555:数据一致性被破坏,ROLLBACK太小,加大MAXEXTENTS 加大EXTENT的大小 OPTIMAL加大
第十章:表的管理
一、ORACLE的表的分类:
1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。
2、PARTITIONED TABLE:分区表,人为控制记录的分布,将表的存储空间分为若干独立的分区,记录按一定的规则存储在分区里。适用于大型的表。
二、建表
1 CREATE TABLE 表名 (EMPNO NUMBER(2),NAME VARCHAR2(20)) PCTFREE 20 PCTUSED 50
STORAGE (INITIAL 200K NEXT 200K MAXEXTENTS 200 PCTINCREASE 0) TABLESPACE 表空间名称
[LOGGING|NOLOGGING]所有的对表的操作都要记入REDOLOG,ORACLE建议使用NOLOGGING;
[CACHE|NOCACHE]:是否将数据按照一定的算法写入内存。
2、关于PCTFREE 和PCTUSED
A、行迁移和行链接
B、PCTFREE:制止INSERT,为 UPDATE留FREE 空间
C、PCTUSED:为恢复INSERT操作,而设定的。
三、拷贝一个已经存在的表:
CREATE TABLE 新表名 STORAGE(。。) TABLESPACE 表空间
AS SELECT * FROM 老表名 ;
当老表存在约束,触发的时候,不会拷过去。
四、修改表的参数
ALTER TABLE 名称 PCTFREE 20 PCTUSED 50 STOAGE(MAXEXTENTS 1000);
五、手工分配空间:
ALTER TABLE 名称 ALLOCATE EXTENT(SIZE 500K DATAFILE '。。');
1、SIZE选项,按照NEXT分配
2、表所在表空间与所分配的数据文件所在的表空间必须一样。
六、水线
1、水线定义了表的数据在一个BLOCK中所达到的最高的位置。
2、当有新的记录插入,水线增高
3、当删除记录时,水线不回落
4、减少查询量
七、如何回收空间:
ALTER TABLE 名称 DEALLOCATE UNUSED [KEEP 4[M|K]]
1、当空间分配过大时,可以使用本命令
2、如果没有加KEEP,回收到水线
3、如果水线《MINEXTENTS的大小回收到MINEXTENTS所指定的大小
八、TRUNCATE 一个表
TRUNCATE TABLE 表名,表空间截取MINEXTENT,同时水线重置。
九、DROP 一个表
DROP TABLE 表名 [CASCADE CONSTRAINTS]
当一个表含有外键的时候,是不可以直接DROP的,加CASCADE CONSRIANTS将外键等约束一并删掉。
十、信息获取
1、dba_object
2 dba_tables:建表的参数
3 DBA_SEGMENTS:
组合查询的连接字段:DBA_TABLES的table_name+dba_ojbect的object_name+dba_segments的SEGMENT_NAME
第十一章:索引的管理
一、索引的分类:
1、逻辑上:
单列索引 复合索引 唯一索引 非唯一索引
2、物理上:
B-TREE OR BITMAP
B-TREE (NORMAL和反向索引)
二、CREATE INDEX
CREATE INDEX 名称 ON 表名(列名) PCTFREE 30 STORAGE(。。。。。) TABLESPACE 名称
没有定义PCTUSED:索引是按照一定存储的,如果通过PCTUSED允许恢复对BLOCK的INSERT操作,可能影响INDEX的效率。
三、建立索引的注意事项
1、索引对查询性能有提高,但对DML语句有影响。
2、索引也应该放在一个专用的表空间
3、定义索引的EXTENT的大小时,=5*DB BLOCK
4、建立索引时,应采用 NOLOGGING
方式。
四、修改索引
ALTER INDEX 名称 STORAGE(新值)
五、分配空间给索引
1、ALTER INDEX 名称 ALLOCATE EXTENT(SIZE 200K DATAFILE '。。')
六、重建索引
1、提高查询性能
2、当一个索引重建时,老的索引会在新索引建立完成后,被删除。
3、新索引建立过程中,老的索引仍可用于查询。
4、硬盘的开销大,
七、DROP一个索引
DROP INDEX 名称
八、信息获取
1、DBA_INDEXES:建索引的参数
2、DBA_IND_COLUMNS:
第十二章:用户的管理
一、ORACLE的安全域
1、TABLESPACE QUOTAS:表空间的使用定额
2、DEFAULT TABLESPACE:默认表空间
3、TEMPORARY TABLESPACE:指定临时表空间。
4、ACCOUNT LOCKING:用户锁
5、RESOURCE LIMITE:资源限制
6、DIRECT PRIVILEGES:直接授权
7、ROLE PRIVILEGES:角色授权先将应用中的用户划为不同的角色,
二、创建用户时的清单:
1、选择一个用户名称和检验机制:A,看到用户名,实际操作者是谁,业务中角色。
2、选择合适的表空间:
3、决定定额:
4、口令的选择:
5、临时表空间的选择:先建立一个临时表空间,然后在分配。不分配,使用SYSTEM表空间
6、CREATE USER
7、授权:A,用户的工作职能
B,用户的级别
三、用户的创建:
1、命令:
CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY
TABLESPACE 临时表空间名
QUOTA 15M ON 表空间名
[PASSWORD EXPIRE]:当用户第一次登陆到ORACLE,创建时所指定的口令过期失效,强迫用户自己定义一个新口令。
[ACCOUNT LOCK]:加用户锁
QUOTA UNLIMITED ON TABLESPACE:不限制,有多少有多少。
[PROFILE 名称]:受PROFILE文件的限制。
四、如何控制用户口令和用户锁
1、强迫用户修改口令:ALTER USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE;
2、给用户加锁:ALTER USER 名称 ACCOUNT [LOCK|UNLOCK]
3、注意事项:
A、所有操作对当前连接无效
B、1的操作适用于当用户忘记口令时。
五、更改定额
1、命令:ALTER USER 名称 QUOTA 0 ON 表空间名
ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名;
2、使用方法:
A、控制用户数据增长
B、当用户拥有一定的数据,而管理员不想让他在增加新的数据的时候。
C、当将用户定额设为零的时候,用户不能创建新的数据,但原有数据仍可访问。
六、DROP一个USER
1、DROP USER 名称
适合于删除一个新的用户
2、DROP USER 名称 CASCADE: 删除一个用户,将用户的表,索引等都删除。
3、对连接中的用户不好用。
七、信息获取:
1、DBA_USERS:用户名,状态,加锁日期,默认表空间,临时表空间
2、DBA_TS_QUOTAS:用户名,表空间名,定额。
两个表的连接字段:USERNAME
GRANT CREATE SESSION TO 用户名
第十三章:PROFILE的管理(资源
文件)
一、PROFILE的管理内容:
1、CPU的时间
2、I/O的使用
3、IDLE TIME(空闲时间)
4、CONNECT TIME(连接时间)
5、并发会话数量
6、口令机制:
二、DEFAULT PROFILE:
1、所有的用户创建时都会被指定这个PROFILE
2、DEFAULT PROFILE的内容为空,无限制
三、PROFILE的划分:
1、CALL级LIMITE:
对象是语句:
当该语句资源使用溢出时:
A、该语句终止
B、事物回退
C、SESSION连接保持
2、SESSION级LIMITE:
对象是:整个会话过程
溢出时:连接终止
四、如何管理一个PROFILE
1、CREATE PROFILE
2、分配给一个用户
3、象开关一样打开限制。
五、如何创建一个PROFILE:
1、命令:CREATE PROFILE 名称
LIMIT
SESSION_PER_USER 2
CPU_PER_SESSION 1000
IDLE_TIME 60
CONNECT_TIME 480
六、限制参数:
1、SESSION级LIMITE:
CPU_PER_SESSION:定义了每个SESSION占用的CPU的时间: (1/100 秒)
2、SESSION_PER_USER:每个用户的并发连接数
3、CONNECT_TIME:一个连接的最长连接时间(分钟)
4、LOGICAL_READS_PER_SESSION: 一次读写的逻辑块的数量
5、CALL级LIMITE
CPU_PER_CALL:每个语句占用的CPU时间
LOGICAL_READS_PER_CALL:
七、分配给一个用户:
CREATE USER 名称。。。。。。
PROFILE 名称
ALTER USER 名称 PROFILE 名称
八、打开资源限制:
1、RESOURCE_LIMT:资源文件中含有
2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
3、默认不打开
九、修改PROFIE的内容:
1、ALTER PROFILE 名称参数 新值
2、对于当前连接修改不生效。
十、DROP一个PROFILE
1、DROP PROFILE 名称
删除一个新的尚未分配给用户的PROFILE,
2、DROP PROFILE 名称 CASCADE
3、注意事项
A、一旦PROFILE被删除,用户被自动加载DEFAULT PROFILE
B、对于当前连接无影响
C、DEFAULT PROFILE不可以被删除
十一、信息获取:
1、DBA_USERS:
用户名,PROFILE
2、DBA_PROFILES:
PROFILE及各种限制参数的值
每个用户的限制:PROFILE(关键字段)
十二、PROFILE的口令机制限制
1、限制内容
A、限制连续多少次登录失败,用户被加锁
B、限制口令的生命周期
C、限制口令的使用间隔
2、限制生效的前提:
A、RESOURCE_LIMIT:=TRUE
B ORACLE\RDBMS\ADMIN\UTLPWDMG.SQL
3、如何创建口令机制:
CREATE PROFILE 名称
SESSIONS_PER_USER
.....
password_life_time 30
failed_log_attempts 3
password_reuse_time 3
4、参数的含义:
A FAILED_LOGIN_ATTEMPTS:
当连续登陆失败次数达到该参数指定值时,用户加锁
B PASSWORD_LOCK_TIME:加锁天数
C PASSWORD_LIFE_TIME:口令的有效期(天)
D PASSWORD_GRACE_TIME:口令修改的间隔期(天)
E PASSWORD_REUSE_TIME:口令被修改后原有口令隔多少天被重新使用。
F PASSWORD_REUSE_MAX:口令被修改后原有口令被修改多少次被重新使用。
第十四章:ORACLE的权限管理
一 授权的两种分类:
1 SYSTEM 授权:允许特定的用户对特定的一类对象做特定的操作.可操作的对象:TABLES,INDEXES,PROCEDURES,SEGMENTS;系统授权是对某一类对象.
GRANT SELECT ANY TABLE TO ZT
2 OBJECT(对象授权):
A 允许一个特定的用户对一个特定的对象做特定的操作.对象:TABLE,INDEX,SEGMENT,..
GRANT UPDATE ON EMP TO ZT
二 系统授权的特点
1 ORACLE中有超过80种以上的 SYSTEM授权
2 几乎所有的SYSTEM授权包含 ANY关键字
3 SYSTEM授权:GRANT授权
4 SYSTEM授权:REVOKE回收
5 允许用户做系统一级的操作,建表空间,建SESSION.
6 最常用的系统授权:
INDEX:CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
TABLE:CREATE ANY TABLE
ALTER ............
DROP .,.......
SELECT .......
UPDATE.........
SESSION:CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
TABLESPACE: CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
三,如何授权:
1 命令格式
GRANT CREATE SESSION,SELECT ANY TABLE TO [USERNAME|PUBLIC|ROLE]
2带有转授权限:
A 转授:当A用户得到系统授权后, 如果可以将这个权限授给别人,称转授.
GRANT CREATE SESSION,SELECT ANY TABLE
TO [USERNAME|PUBLIC|ROLE] WITH ADMIN OPTION
举例:
1 SYSTEM->ZT
GRANT CREATE SESSION TO ZT WITH ADMIN OPTION
ZT用户可以拥有CREATE SESSION权限
2 ZT->OLM
GRANT CREATE SESSION TO OLM,
ZT,OLM也有了.
四 SYSDBA和SYSOPER系统权限
1 SYSOPER:SYSTEM OPERATOR:系统操作员
STARTUP,SHUTDOWN;
ALTER DATABASE[MOUNT|OPEN];
RECOVER TABLESPACE
BACKUP DATABASE
ARCHIVELOG OR NOARCHIVELOG;
2 SYSDBA
SYSTEM DABASE ADMIN:数据库管理员,
SYSOPER WITH ADMIN OPTION
RECOVER DATABASE
CREATE DATABASE
五 信息获取
DBA_SYS_PRIVS
GRANTEE:得到权限的人
PRIVILEGE:得到何种权限
ADMIN OPTION:是否可以转授
想知道SCOTT有多少权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='SCOTT'
六 回收权限:
REVOKE 权限 FROM [USERNAME|PUBLIC|ROLE]
举例:
SYSTEM->ZT(CREATE SESSION WITH ADMIN OPTION)
ZT->OLM(CREATE SESSION)
SYS ZT OLM
PRIV Y Y Y
REVOKE Y N Y
七 对象授权
TABLE: ALTER DELETE SELECT UPDATE INSERT
INDEX:DELETE INSERT SELECT UPDATE
少CREATE,对象是已经存在的事物,授权者是所有者.
一,授权:
GRANT UPDATE(ENAME) ON EMP TO ZT WITH GRANT OPTION
二信息获取
1 DBA_TAB_PRIVS:
GRANTEE:得到者
GRANTOR:授权者
PRIVILEGE:权限
GRANTABLE:是否可以转授
OWNER:所有者
三 回收对象授权
1 REVOKE 权限 FROM 用户
SYSTEM->ZT(UPDATE ON EMP WITH GRANT OPTION)
ZT->OLM(UPDATE ON EMP)
SYS ZT OLM
PRIV Y Y Y
REVOKE Y N N
第十五章:角色管理
一,角色及其特点:
1,角色实际上是若干权限的集合体
2,DBA通过为应用中的不同用户,不同职责,定义不同的角色,可以达到减少工作量的目的.
3,角色的使用同授权一样,可以用 GRANT授权,REVOKE回收.
4,角色可以象开关一样打开关闭
5,角色的使用可以提高性能.
6,角色的使用可以大大减少工作量
二 建立角色
1 CREATE ROLE 名
2 CREATE ROLE 名
IDENTIFIED BY 口令
三 修改角色
1 ALTER ROLE 名称 IDENTIFIED BY 口令
将没有口令的加一个口令
2ALTER ROLE 名称 NOT IDENTIFIED
将有口令的变为没有口令
三 分配一个角色
GRANT ROLE 名 TO 用户名
四 回收一个角色
REVOKE ROLE 名 FROM 用户名
五 如何创建一个默认角色
只有设为默认角色,才可以在用户登录时,使角色所含有的权限生效
1 ALTER USER SCOTT
DEFAULT ROLE 角色1,角色2
2 ATLER USR SCOTT
DEFAULT ROLE ALL
3 ALTER USER SCOTT DEFAULT ROLE ALL EXCEPT 角色名
4 ALTER USER SCOTT DEFAULT ROLE NONE
六 打开和关闭角色:
1 SET ROLE 名称
2 SET ROLE IDENTIFIED BY 口令,(建立角色时,带口令)
3 SET ROLE NONE
七 删除角色
DROP ROLE 名称
八 信息获取
DBA_ROLE:
DBA_ROLE_PRIVS:
九 如何向角色里加权限:
GRANT 权限 TO 角色名
REVOKE 权限 FROM 角色名
角色:1不能跟用户名重复
2 ROLE的ALTER和其他对象的ALTER 不一样,ROLE的ALTER不能修改ROLE的内容,只可以修改角色的认证方式