oracle+OCP培训笔记.docx
《oracle+OCP培训笔记.docx》由会员分享,可在线阅读,更多相关《oracle+OCP培训笔记.docx(95页珍藏版)》请在冰豆网上搜索。
![oracle+OCP培训笔记.docx](https://file1.bdocx.com/fileroot1/2023-5/15/362d1a75-8c99-44be-8259-de1098dde220/362d1a75-8c99-44be-8259-de1098dde2201.gif)
oracle+OCP培训笔记
体系结构及管理:
2.5-3天
备份与恢复:
5天-5.5天
性能调整:
5天-5.5天
OracleServer:
例程和数据库
用户进程:
客户应用程序(发出SQL语句)
服务器进程:
为用户进程所分配(默认:
一一对应)
执行SQL操作(影子进程)
ORA-1034:
例程未启动(特权用户:
STARTUP)
连接:
用户进程到服务器进程的物理通信通道
会话:
特定用户的连接
例程:
由一组内存结构和后台进程组成
SGA(SystemGlobalArea):
数据高速缓存重做日志缓冲区共享池
后台进程:
隐含执行(SMONPMONDBWRLGWRCKPTARCH)
数据库:
由一组OS文件组成
数据文件:
存放数据(数据字典用户数据UNDO数据)
控制文件:
记录和维护数据库的物理结构(关联例程和数据库)
重做日志:
记录数据库变化(恢复数据库)
参数文件:
存放例程的初始化参数(PFILE和SPFILE)
口令文件:
验证特权用户(启动关闭备份和恢复)
归档日志:
非活动重做日志的备份(完全恢复数据库)
处理SELECT:
1解析:
生成执行计划(内部执行步骤)---库高速缓存
2执行:
数据-->数据高速缓存
3提取数据:
数据-->客户端
A:
SELECT*FROMempWHEREempno=7788--100字节
B:
SELECT*FROMempWHEREEMPNO=7788;
9I:
共享池尺寸可以动态修改
数据块:
Oracle在数据文件上执行IO操作的最小单位(8K)
9I:
1不同表空间可以使用不同数据块尺寸(不指定BLOCKSIZE:
标准数据块)
2不同数据块尺寸只能使用不同数据高速子缓存
3数据高速缓存尺寸可以动态修改
DB_nK_cache_size:
定义非标准的数据高速缓存
PGA(ProgramGlobalArea):
存放后台进程和服务器进程的数据和控制信息
1SGA:
共享,PGA:
私有
2pga_aggregate_target(9I):
PGA总计内存空间
排序区:
存放排序操作的临时数据(ORDERBY)
会话信息:
存放会话所具有的权限和角色
游标状态:
SQL语句所处的阶段
堆栈空间:
存放会话变量
处理DML语句:
解析和执行
执行步骤:
1数据-->数据高速缓存
2在被作用行上加锁
3数据变化-->重做日志缓冲区
4修改数据(数据段UNDO段)
UNDO段:
存放事务所修改数据的旧值
UPDATEempSETsal=1000WHEREempno=7788;
INSERT
重做日志缓冲区尺寸不能动态修改
脏缓冲区:
DML操作后的缓冲区
DBWR:
脏缓冲区写入到数据文件(DBWn)---db_writer_processes
--发出检查点
检查点:
用于同步数据库的数据文件控制文件和重做日志(当前SCN完全一致)
1关闭数据库(SHUTDOWNABORT例外)
2日志切换
3强制检查点
4初始化参数
SCN(SystemChangeNumber):
记录数据库变化的惟一标识号(顺序递增)
---备份和恢复
A:
UPDATE---100000
B:
DELETE---100100
LGWR:
重做日志缓冲区-->重做日志
13S
2COMMIT(快速提交)
31/3LOG_BUFFER
4在DBWR之前(先写日志后写数据)
UPDATE
处理COMMIT:
1服务器进程:
COMMIT和SCN-->重做日志缓冲区
2LGWR:
重做日志缓冲区-->重做日志
3提示用户进程:
提交完成
4释放锁
SQL*Plus:
管理数据库(启动例程关闭例程等)
SQL*Loader:
文本文件数据-->数据库
EXP:
数据库数据-->EXP文件(10G:
EXPDP)
IMP:
EXP文件-->数据库(10G:
IMPDP)
ORAPWD:
管理特权用户的口令
SYSDBA:
最高权限(启动和关闭建立数据库)--OS用户:
ORA_DBA组(OSDBA)
SYSOPER:
启动和关闭(不具备DBA角色的权限)--OS用户:
ORA_OPER组(OSOPER)
DBA:
在启动数据库之后执行各种管理操作(不能启动和关闭数据库)
特权用户登录:
ASSYSDBA或者ASSYSOPER
OS验证:
使用OS用户确保特权用户的安全性--不允许远程登录
sqlnet.ora:
ORACLE_HOME\network\admin
ORACLE_HOME:
Oracle数据库软件的安装目录
1修改参数
2重新启动Oracle服务
配置OS验证
口令文件验证:
指使用口令文件确保特权用户的安全性(建议)
--允许远程登录
口令文件默认位置:
ORACLE_HOME\database
口令文件名称:
PWDORACLE_SID.ORA
ORACLE_SID:
例程名(MS)
1删除原有口令文件
2建立口令文件
3修改初始化参数
4重新启动数据库
5修改SQLNET.ORA文件
修改特权用户口令为ADMIN
配置监听程序和网络服务名(NetManager)
监听程序:
用于监听客户端的连接请求(OracleServer端)
1配置监听位置
网络协议:
常用TCP/IP
主机:
机器名或者IP地址
端口:
IP端口号(未占用IP端口)
2配置数据库服务
全局数据库名:
应该设置为初始化参数service_names的值
Oracle主目录:
应该设置为环境变量ORACLE_HOME的值
SID:
应该设置为环境变量ORACLE_SID的值
3保存网络配置,重新启动监听程序
1删除原有监听程序LISTENER
2配置监听程序LISTENER并重新启动
网络服务名:
连接到目标数据库的网络别名(客户端)
NET服务名:
任意指定
协议:
与监听程序的协议必须完全一致
主机名:
监听程序所在机器名或者IP地址
端口:
监听程序所使用的IP端口
服务名:
监听程序所配置的全局数据库名
保存网络配置
1配置网络服务名S1(连接到本地数据库)
2以S1连接到本地数据库,然后检查主机名
3配置网络服务名S2(连接到其他机器数据库)
4以S2连接到其他机器数据库,然后检查主机名
OEM两层结构:
日常数据库管理(独立启动)
1OracleServer:
启动数据库启动监听程序
2客户端:
OEMConsole(配置网络服务名)
OEM三层结构:
日常数据库管理高级管理操作(监视事件运行作业等)
1OracleServer:
启动数据库启动监听程序启动Agent
2OracleManagementServer:
启动OMS服务--配置资料档案库
3客户端:
OEMConsole
InstanceManager:
启动例程关闭例程修改初始化参数--以特权用户登录
SecurityManager:
管理用户角色以及PROFILE(概要文件)
--特权用户或者DBA用户
1启动OEMConsole
2以SYS用户登录到本地数据库(MS),关闭并重新启动例程
3以SYSTEM用户登录到数据库,建立用户USER1并授予系统权限UNLIMITED
TABLESPACE
4运行SQL*Plus以USER1用户登录
StorageManager:
管理表空间数据文件和重做日志等--特权用户和DBA用户
SchemaManager:
管理数据库对象()
SQL*PlusWorksheet:
SQL*Plus图形化工具(独立工具)
1以SYSTEM用户登录,建立表空间TBS1(数据文件名:
TBS1.DBF,尺寸:
10M)
2以SYSTEM用户登录为SCOTT用户授予角色和权限,使该用户可以使用OEMConsole
3以SCOTT用户登录,在TBS1表空间上建立表T1
4以SCOTT用户运行SQL*PLUSWORKSHEET
参数文件:
用于存放启动例程所需要的初始化参数
1200多个初始化参数
2多数参数都有默认值
3参数文件:
非默认的初始化参数
PFILE:
文本格式存放参数--9I之前
SPFILE:
二进制格式存放参数--9I新特征(建议)
参数文件默认位置:
ORACLE_HOME\database
PFILE默认名称:
initSID.ora(SID:
例程名)
SPFILE默认名称:
spfileSID.ora
常用参数:
db_name:
指定数据库名称
instance_name:
指定例程名=db_name
service_names:
指定数据库服务名=db_name.db_domain
control_files:
指定数据库的控制文件(关联例程和数据库)
undo_tablespace:
指定例程默认的UNDO表空间
PFILE:
直接编辑进行修改
SPFILE:
不能直接编辑
修改PFILE:
1参数存在--直接编辑
2参数不存在--在尾部增加一行
3每行只能设置一个参数
修改SPFILE:
SCOPE=SPFILE
db_namedispatchers:
不能使用SPFILE修改
1建立PFILE
2手工编辑PFILE修改参数
3重新启动例程(指定PFILE)
4建立SPFILE
启动和关闭:
SYSDBA或者SYSOPER身份
STARTUP选项:
1NOMOUNT:
启动例程
2MOUNT:
启动例程装载数据库
3OPEN(默认):
启动例程装载数据库打开数据库
4FORCE:
强制重新启动(SHUTDOWNABORTSTARTUPOPEN)
STARTUP或者SHUTDOWN:
确保已经启动例程服务(OracleServicems)
1确定当前例程正在使用的参数文件
2修改初始化参数timed_statistics的值为FALSE(SPFILE)
3使用SHUTDOWNIMMEDIATE命令关闭数据库
4使用STARTUP启动例程并打开数据库
5检查参数timed_statistics的值
6建立PFILE文件inittemp.ora
7依据inittemp.ora建立SPFILE文件spfileaa.ora
SHUTDOWN:
NORMAL(默认):
等待所有客户应用断开连接
TRANSACTIONAL:
不会等待断开连接等待事务结束
IMMEDIATE:
不会等待事务结束(自动回退未提交事务)
--发出检查点
ABORT:
快速终止例程和数据库--不会发出检查点(自动例程恢复)
--防止物理文件损坏
动态性能视图:
显示例程的相关信息(特权用户和DBA用户)
静态初始化参数:
指只能通过修改参数文件进行修改的参数
动态初始化参数:
指在数据库运行时可以动态修改的参数
ALTERSESSION:
只对当前会话生效
ALTERSYSTEM:
对所有会话都生效
ALTERSYSTEM(9i默认):
修改内存和SPFILE
ALTERSYSTEM..DEFERRED:
只对将来会话生效
终止会话:
终止阻塞会话
1以SYS用户建立会话一,以SCOTT用户建立会话二
2在会话二中更新雇员7788的工资为1000
3在会话一中使用SHUTDOWNTRANSACTIONAL关闭例程?
4在会话二中提交事务,然后在会话一中检查例程是否已经关闭
5启动例程并打开数据库,然后显示数据库所有物理文件
6显示例程名及其状态
7显示数据库名及日志操作模式
8修改当前会话的日期格式YYYY/MM/DD,然后显示当前系统日期
建立数据库:
1OS用户:
ORA_DBA组
2特权用户:
SYSDBA身份
3UNIX共享内存区>2*SGA
修改字符集:
只能在同民族的字符集之间进行修改(ZHS16GBK--ZHS16..)
WE8ISO..
ORACLE_SID:
设置例程标识符
ORACLE_BASE:
软件基目录
ORA_NLS33(指定字符集):
使用除US7ASCII之外的其他字符集
NLS_LANG=语言_地区.字符集
在Windows平台上建立数据库:
1建立例程服务(确定例程名特权用户口令)
2准备SPFILE:
基于默认例程建立PFILE文件
编辑PFILE文件
db_name=instance_name
control_filesdb_block_size
undo_tablespace
background_dump_dest:
指定ALERT文件和后台进程跟踪文件所在目录
user_dump_dest:
指定用户进程跟踪文件所在目录
建立SPFILE
3启动例程
4建立数据库
5安装数据字典PL/SQL包和PROFILE
6配置网络
1建立例程服务(例程名:
DEMO)
2建立SPFILE文件spfiledemo.ora,参数设置:
db_name=demo
instance_name=demo
db_block_size=2048
control_files=c:
\demo\control01.ctl
background_dump_dest=c:
\demo\bdump
user_dump_dest=c:
\demo\udump
undo_tablespace=undotbs1
3建立文件夹demoudumpbdump
三启动例程(以SYSDBA身份登录)
四建立数据库
出错处理:
1语法错误:
编辑SQL脚本
2要建立的文件已经存在(SHUTDOWN删除已建立的所有文件
STARTUPNOMOUNT重新建立)
1登录到DEMO例程,并启动该例程
setoracle_sid=demo
2查询V$INSTANCE确定例程名及其状态
3建立DEMO数据库
日志组一:
c:
\demo\redo1a.logSIZE10M
日志组二:
c:
\demo\redo2a.logSIZE10M
SYSTEM表空间数据文件:
c:
\demo\system01.dbfSIZE150M
默认临时表空间:
TEMP(临时文件:
c:
\demo\temp.dbfSIZE20M)
UNDO表空间:
undotbs1(数据文件:
c:
\demo\undotbs1.dbfSIZE30M)
SYS口令:
admin
SYSTEM口令:
manager
字符集:
ZHS16GBK
4查询V$INSTANCE确定例程状态
5安装数据字典PL/SQL包和PROFILE
安装以前检查:
SELECTinstance_name,statusFROMv$instance;
安装数据字典:
catalog.sql(必须以SYS用户运行)
@%oracle_home%\rdbms\admin\catalog
安装PL/SQL包:
catproc.sql(必须以SYS用户运行)
@%oracle_home%\rdbms\admin\catproc
安装PROFILE:
pupbld.sql(必须以SYSTEM用户运行)
@%oracle_home%\sqlplus\admin\pupbld
6配置网络
配置监听程序:
配置数据库服务重新启动监听程序
配置网络服务名
1配置监听程序(增加DEMO数据库),然后重新启动监听程序
2配置网络服务名DEMO
3以SYS用户使用不同网络服务名分别连接到MS和DEMO
数据库,并查询V$INSTANCE确定例程名
数据字典:
Oracle系统的最重要组成部分
--存放着数据库的系统信息
数据字典存放位置:
SYSTEM表空间
数据字典所有者:
SYS用户
SELECT
SYS.AUD$:
内容可以被删除(DELETE)
数据字典组成:
数据字典基表:
存放着基本信息(..$)--建立数据库时自动
建立(sql.bsq)
数据字典视图:
基于基表所建立的视图(catalog.sql)
--取得数据库系统信息
数据字典视图分类:
USER_XXX:
当前用户所拥有的对象
ALL_XXX:
当前用户可访问的所有对象
DBA_XXX:
数据库的所有对象
1USER_XXXALL_XXX:
所有用户可以直接访问
2DBA_XXX:
DBA角色或者SELECT_CATALOG_ROLE角色
DICT:
显示当前用户可访问的所有数据字典和动态性能视图
DICT_COLUMNS:
显示字典列的作用
DBA_SEGMENTS:
显示数据库所有段的详细信息
DBA_DATA_FILES:
显示所有数据文件的详细信息
DBA_TABLESPACES:
显示表空间的详细信息
1以SYSTEM用户登录到MS数据库,显示DBA_TABLES列
table_name和owner的作用
2查询数据字典显示SCOTT用户的所有索引及惟一性
DBA_INDEXES
3显示数据库的所有用户以及默认表空间(DBA_USERS)
4查询DBA_SEGMENTS显示SCOTT用户EMP段所在的表空间
段类型及尺寸
5显示当前数据库的所有表空间名
6显示表空间SYSTEM所包含的数据文件及尺寸(dba_data_files)
控制文件:
用于维护和记录数据库的物理结构
V$XXX:
SGA和控制文件(物理结构相关)
V$DATABASEV$DATAFILE等
多元化控制文件:
防止控制文件损坏
--分布控制文件到不同磁盘
1修改初始化参数control_files
2关闭数据库
3复制控制文件(关闭之后复制)
4重新启动数据库
V$CONTROLFILE:
显示数据库包含的所有控制文件
V$CONTROLFILE_RECORD_SECTION:
显示控制文件所记载
各记录部分的详细信息
1列出DEMO数据库所有控制文件
2为DEMO数据库增加两个控制文件
C:
\DEMO\CONTROL02.CTL
C:
\DEMO\CONTROL03.CTL
3列出DEMO数据库控制文件,以及控制文件所记载数据
文件部分的信息
4关闭数据库,删除CONTROL03.CTL文件,然后启动数据库
查看显示信息
5解决控制文件CONTROL03.CTL的损坏
ALTERSYSTEMSETCONTROL_FILES='',''
SCOPE=SPFILE;
STARTUPFORCE
重做日志:
记录数据库变化(DDLDML)--恢复数据库
1每个数据库至少包含两个日志组
2日志组循环使用
3建议:
每个日志组应该包含多个日志成员(镜像)
--防止日志成员损坏
DBWR:
脏缓冲区-->数据文件(发出检查点)
LGWR:
重做日志缓冲区-->重做日志(COMMIT在DBWR之前)
CKPT:
发出检查点(同步所有物理文件)--基于SCN
关闭数据库(ABORT例外)日志切换
ARCH:
重做日志-->归档日志(ARCHIVELOG模式)
日志切换
10:
00检查点SCN=100000
AUPDATESCN=100100
BDELETESCN=100200
ACOMMITSCN=100300
断电
启动(例程恢复)
1比较SCN
2REDO
3打开数据库
4UNDO--取消未提交事务
日志序列号:
重做日志的使用标识号(顺序递增)
日志组一:
1357911--数据文件损坏
日志组二:
246810
6---备份
NOARCHIVELOG:
不保留重做日志内容的日志操作模式
恢复--只能恢复到完全备份点的状态
ARCHIVELOG:
将重做日志内容复制到归档日志的日志操作模式
ARC6ARC7..ARC10
恢复--恢复到失败点状态
V$LOG:
显示日志组的详细信息
V$LOGFILE:
显示日志成员的信息
日志切换:
LGWR停止写一个日志组,开始写另一个日志组
的事件
手工日志切换:
自动日志切换:
日志组写满
检查点:
手工检查点:
初始化参数fast_start_mttr_target:
控制例程恢复
的最大时间(单位:
秒)=600
1检查当前日志操作模式
2显示DEMO数据库的日志组信息(组号状态尺寸)
3显示日志组2所包含的日志成员
4手工切换日志,确定当前正在使用的日志组及日志序列号
增加日志组:
ALERT文件:
Checkpointnotcomplete或者
Groupnotarchived
增加日志成员:
防止日志成员损坏(镜像)
默认:
每个日志组最多2个日志成员
STALE:
很长时间未使用(太大)
重定位重做日志:
不能移动当前日志组的日志成员
1移动到速度最快的硬盘上
2移动日志成员到不同磁盘上
删除日志组:
1日志组所有成员全部损坏
2改变日志组尺寸(建议:
20分钟--30分钟之间切换日志组)
建立大日志组
删除小日志组
1当前正在使用的日志组不能删除
2逻辑删除(物理文件需要手工删除)
删除日志成员:
删除损坏的日志成员
--当前正在使用日志组的日志成员不能删除
清除重做日志:
(UNIX)在OPEN状态误删除了当前日志组的
所有成员
--先建立后删除日志组(组号不会改变)
OMF(OracleManagedFile):
9I新特征
1建立日志组和数据文件时不需要指定文件名
2删除日志组和表空间时会自动删除相应文件
db_create_online_log_dest_n(n=1..5):
指定OMF日志成员所在目录
db_create_file_dest:
指定OMF数据文件所在目录
1增加一个新日志组,日志成员(尺寸:
10M):
C:
\DEMO\REDO3A.LOG
C:
\DEMO\REDO3B.LOG
2为日志组一和日志组二分别增加一个日志成员
日志组一:
C:
\DEMO\REDO1B.LOG
日志组二:
C:
\DEMO\REDO2B.LOG
3显示所有日志成员信息
4手工切换日志三次,然后显示所有日志成员信息
5关闭数据库,手工删除日志文件C:
\DEMO\REDO1B.LOG
6重新启动数据库
7确定损坏的日志成员,并删除该日志成员
逻辑:
数据库由一个或多个表空间组成
表空间:
由一个或多个数据文件组成
数据文件不能被删除
段:
用于存放特定逻辑对象的所有数据,由一个或多个区组成
表段:
存放表的数据(段名=表名)
索引段:
存放索引的数据(段名=索引名)
临时段:
存放排序操作的临时数据
UNDO段:
存放UNDO数据
区:
Oracle分配空间的逻辑单位,由连续的数据块组成
每次扩展:
一个区
Oracle块(数据块):
Oracle在数据文件上执行IO操作的最小
单位
1以SYSTEM用户连接到MS数据库,显示该数据库的所有
表空间