导图社区 ORACLE基础管理
oralce数据库管理基础知识,下一步会更新SQL管理相关知识(查询、索引、视图、约束)及高级管理(备份还原)、高可用(DG、RAC、Stream、OGG)
编辑于2019-12-20 06:19:58ORACLE11gR2基础管理
1、体系结构
产品系列
服务器
数据库服务器
数据库:磁盘上的一组文件,大小无限制,通过实例访问数据库
实例:一组进程和内存结构,用户通过实例访问数据库
实例和orale数据库构成oracle服务器
客户端-服务器模型:客户生成SQL,服务器执行sql,用户进程与服务器进程使用oracle专用协议--ORACLE NET
客户端
用户
用户进程
服务端
sql进程
实例
数据库
应用服务器
Web应用程序
数据库层:管理数据访问
客户端层:与用户通信
应用程序层:程序逻辑与sql
企业管理器
Database Control
管理数据库、RAC
Application Server Control
应用服务器实例
Grid Control
管理任何位置任何数据库和应用服务器
开发工具
内部语言
PL/SQL
ORACLE特有的3GL
java
外部语言
oracle提供支持大多数语言的oci
Oracle Developer Suite
Oracle Forms Developer
Oracle Reports
Oracle Discoverer
应用程序
Oracle E-Business Suite
会计、人资、制造、客户管理和服务
Oracle Collaboration Suite
电子邮件、日记管理、语音邮件、传真、web会议、文件服务(最强大的功能)
子主题
预备知识
oracle概念
实例:进程和内存
数据库:物理文件
交互工具
OUI
DBCA
sqlplus、pl/sql
SQL概念
表、行、列
基本查询
操作系统概念
SGA系统全局区--共享全局区
PGA程序全局区--非共享全局区
11g内存自动分配,dba控制总量
单实例体系结构
单实例体系结构
数据文件
重做日志文件
控制文件
数据库物理结构的详细信息
RDBMS
数据库不得丢失数据
备份
重做日志捕获变更
分布式体系结构
整合起来将实现100%正常运行时间与0%数据丢失
实时应用集群RAC
多实例打开一个数据
高性能、容错、扩展
无止境扩展,底层操作系统硬件集群能力的限制
100%运行时间
select prarllel from v$instance;
查询是否位rac一部分
流
多个Oracle服务器相互之间传播事务
容错
调整
select * from dba_streams_administrator;
DataGrard
主数据库更新备用数据
select protection_level from v$database;
实例内存结构
SGA
数据库缓冲区缓存
执行SQL
块
多行一块
多块一行
大小由DBA设计
大小影响性能
足够大以缓存经常访问的数据块
过大:会缓存不访问的块,影响性能
过小:导致磁盘活动过多
内存过大,格式化数据缓冲区时间过长,启动速度变慢
可动态调整,也可自动管理
日志缓冲区
LGWR
大小默认,启动时设置为固定值,不可自动管理
大小调整需重启
共享池
库缓存:解析sql
数据字典缓存:存储最近使用的对象
PL/SQL区:过程、函数、打包的过程、打包的函数、触发器等
SQL查询和PL/SQL缓存
大小自动管理,LRU
其他:大池、Java池、流池
select component,current_size,min_size,max_size from v$sga_dynamic_components;
PGA
用户会话
select name,value from v$pgastat where name in ('maximum PGA allocated','total PGA allocated');
实例进程结构
SMON系统监视器
查找验证控制文件来安装数据库
查看验证数据文件、联机日志文件来打开数据库
执行各种内部管理任务
PMON进程监视器
销毁无效进程
将销毁PGA内存返回给操作系统空闲进程
会话异常终止,回滚活动事务
DBWn数据库写入器
一个实例有多个写入器(不超过20个)、8个CPU对应一个
最近未使用写入缓冲区(LRU),
极懒算法(尽可能少)
触发条件
没有任何缓冲区
脏缓冲区过多
遇到三秒超时
遇到检查点
alter system checkpoint;
LGWR日志写入器
触发条件
commit
日志缓冲区占用超过1/3
DBWn要写入脏缓冲区
oralce体系的最大瓶颈
CKPT检查点进程
确保脏数据块写入磁盘,从而减少实例恢复时的日志应用
增量检查点代替全量检查点
触发条件
请求
有序关闭数据库
MMON可管理性监视器
定期从SGA捕获统计数据,每小时一次,存储与数据字典中,默认8天
手机快照数据并启动ADDM
MMAN内存管理器
SGA和PGA内存自动管理
ARCn
数据块变更写入日志缓冲区
归档日志写入
RECO
分布式数据库的事务管理
其他进程
CJQ0,J000,D000,DBRM,DIA0,DIAG,FBDA,PSP0...
select program from v$session order by program;select program v$process order by program;
ps -ef|grep oracle |wc -l
存储结构
物理存储结构
控制文件
一个控制文件和多个副本(多路复用控制文件)
记录数据文件、联机重做日志的位置
维护数据库完整性的信息
时间戳、序列号、备份信息等
联机重做日志文件
那时间顺序存储应用与数据库的变更向量
至少有两个联机重做日志文件,多个副本,每个文件都有一个成员
至少两个组,每组一个成员
数据文件
其他数据文件
实例参数文件
口令文件
归档重做日志文件
警报日志和跟踪文件
逻辑存储结构
段
表段
信息行
索引段
快速访问特定行
撤销段
用于回滚
数据文件:多对多
区
子主题
块
表空间
一个或多个段的集合
一个或多个数据文件的集合
数据字典
DBA_
ALL_
USER_
安装和创建数据库
管理工具
OUI
解决不兼容性
JDK/JRE1.5
产品清单
\Oracle\Inventory
windows: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\inst_loc
需要注册表权限
linux:\etc\oraInst.loc
需要root权限,即root运行orainstRoot.sh
启动时检测该文件,如无该文件,则认位未安装oralce
先决条件测试
先决文件
/install/oraparam.ini(linux)
\install\oraparam.ini(window)
products.xml
/stage/prereq/db/refhost.xml(linux)
\stage\prereq\db\refhost.xml(window)
无法检测通过策略
编辑oraparam.ini或refhost
运行oui开关告知忽略先决条件
运行oui期间忽略先决条件
运行OUI
setup.exe
runInstaller.sh
创建和升级工具
DBCA
DBUA
Sqlplus、SqlDeveloper
sqlplus
/u01/app/oracle/product/db_home/bin/sqlplus
环境变量
ORACLE_HOME
PATH
必须包含oralcle的bin目录
LD_LIBRARY_PATH
包含oracle的lib目录
SqlDeveloper
安装位置独立
jre1.5
OEM
Database Control
Grid Control
其他工具
Net Manager/Net Configuration Assistant
防止手工配置出现的低级语法错误
数据加载和卸载程序
Data Pump
Sql Loader
备份程序
RMAN
Oracle Secure Backup
规划
选择操作系统
linux、windows、Solaris、AIX、HPUX
成本、易用性、硬件选择、现有技术能力、可扩展性、容错性、性能
Linux
Red Hat
SUSE
Oracle Enterprice Linux
硬件
配置
版本、补丁、必须的包、内核参数
子主题
OFA
核心环境变量
ORACLE_BASE
linux标准
/pm/h/u
windows便准
\oracle\app
ORACLE_HOME
$ORALCE_BASE/product/db_n
环境变量
unix
linux
display
127.0.0.1:0.0
因shell各异
/etc/profile
windows
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
OUI安装数据库
linux
runInstaller.sh
runInstaller.sh -ignoreSysPrereqs
runInstaller -slient -responsefile responsefilename
runTinstaller -record -destinationFile responsefileanem
静默安装前必须创建产品清单文件(/etc/oraInst.loc)
windows
setup.exe
DBCA创建数据库
实例、数据库、数据字典
实例:由参数文件定义
内存结构大小
后台进程行为
所有参数都有默认值,除DB_NAME
控制文件——数据库其他文件
步揍:创建实例->创建数据库->创建数据库
实践:创建实例->创建数据库和数据字典对象->创建数据字典视图
使用DBCA创建一个数据库
创建一个参数文件和一个口令文件
使用参数文件创建一个实例
执行create database 至少生成一个控制文件、两个联机重做日志文件、用于system和sysaux表空间的两个数据文件以及一个数据字典
运行sql脚本生成数据字典视图与补充的pl/sql包
运行sql脚本生成database conrol及其他选项
如果要创建database control,启动dbca前需要配置监听器,因为database control是通过监听器连接到数据库的
DBCA创建的脚本及其他文件
实例参数文件
\ORACLE_BASE\admin\DB_NAME\script\init.ora
创建数据库的shell脚本程序
windows中是批处理文件
在linux中是shell脚本程序
createdatabse命令
后期创建脚本
createdbfile.sql
createdbcatalog.sql
emrepository.sql
postDBCreation.sql
其它功能
Create A Database
Congigure Database Options
Delete A Database
Manage Templates
Configure Automatic Storage Management
实例管理
设置数据库初始化参数
静态参数和动他参数及初始化参数文件
select name,value from v$parameter orer by name;
显示当前运行生效的参数值
select name,value from v$sppraameter order by name;
显示spfile中的值
更改参数命令:alter system
scope默认位both,如果不指定scope=spfile,将无法修改静态参数,如果pfile启动,scope=spfile将失败
scope=both
scope=spfile
scope=memory
第一次创建数据库实例时用pfile
create spfile [='spfilename'] from pfile [='pfilename']
如未指定spfilename将使用ORACLE_SID
create pfile [='pfilename']from spfile [='spfilename']
基本参数
select name,value from v$parameter where isbasic='True'order by name;
更改参数
更改静态参数只能使用scope=spfile的alter system
示例
alter ststem log_buffer=6m
alter system log_buffer=6m,scope=spfile
有些参数可影响整个系统、单独会话或都影响
alter system set optimizer_mode=all_rows;
alter session set optimizer_mode=first_rows;
有些参数只能在会话级别
alter session set nls_date_format='dd-mm-yy hh24:mm:ss'
启动和关闭数据库
Database Control->监听->数据库
Database control的启动与连接
配置
计算机主机名
TCP端口
启动
emctl start dbconsole
emctl stop dbconsole
emctl status dbconsole
依赖于三个环境变量
PATH
ORACLE_HOME
ORACLE_SID
启动监听器
监听器是一个进程
启动方法
lsnrctl
lsnrctl start
lsnrctl status
lsnrctl stop
database control
windows服务
启动sqlplus
sqlplus /nolog
启动和关闭数据库
连接
connect user/pwd@orcl as sysdba
connect / as sysdba
sysoper和sysdba
startup
shutdown
alter database mount/open/close/dismount
alter database/tablespace begin/end backup
recover
启动和关闭
shutdown
nomount
nomout模式只使用参数文件和警报文件
show parameter background_dump_dest
mount
nomout读取控制文件至mount模式
open
因为实例启动时init文件只被读取一次,所以称为静态参数文件,spfile不断更新,成为动态参数文件
关闭shutdown
normal
transactional
immediate
abort
startup force=shutdown abort+satrtup
使用警报日志和跟踪文件
位置
background_dump_dest参数指定
数据字典和动态性能视图
数据字典视图
DBA_
DBA_OBJECTS
DBA_DATA_FILES
DBA_USERS
DBA_TABLES
DBA_ALERT_HISTORY
ALL_
USER_
动态性能视图
v$instance/v$sysstat/v$database/v$datafile
配置ORACLE网络
配置和管理Oracle网络
Oracle Net和客户端-服务器范例
Oracle Net与通信协议
建立会话
connect scott/tiger@orcl
连接到本地实例
依然使用Oracle Net
使用IPC协议
不需要监听
名称解析
启动服务器进程
创建监听器
Net Manager允许一个监听器配置多个监听地址,而Net Configuration Assistant
数据库注册
非RAC中实例与监听在同一服务器上,RAC中任何监听可连接任何实例
静态注册
编辑listener.ora
对布局敏感
动态注册
alter system register;
如果重启监听或启动监听之前启动了实例,需要重新注册监听或等一分钟系统自动注册
如果监听器不在主机标识的地址上的默认端口运行,则需设置local_listener参数重新注册
alter system set local_listener=list2;
alter system register;
alter system set local_listerner='(address=(protocol=tcp)(host=127.0.0.1)(port=1522))'
解析名称的技术
连接字符串被解析为一个监听器的地址和一个实例或服务的名称
解析方法
Easy conncet
用法简单、无需配置、默认启动、只能使用TCP、不能与Oracle Net的高性能使用
connect store/admin123@ggh.wd.co:1522/oracl
connect store/admin@asd.asd.co
本地命名
即修改tnsnames.ora文件
对布局敏感
目录命名和外部命名
监听器控制实用程序
Database Control
lsnrctl命令
services:查看监听提供的服务
verson:版本
reload:强制监听在listener.ora重读条目
save_config:将任何联机更改写入listener.ora
trace:启动对监听的跟踪
change_password
quit、exit、set、show
lsnrctl help
配置服务别名
Net Manager
配置Service Naming
实质上就是编辑tnsnames.ora
测试:tnsping
文件名和tnsadmin环境变量
listener.ora
定义监听器的服务器段文件
tnsnames.ora
用于解析名称的客户端文件
sqlnet.ora
可选,可在服务端、客户端任何地方,包含所有连接和监听器设置
典型oralce服务器至少单个主目录
Enterprice Manager Grid Control Agent
Automatic Storage Management
实例
tns_admin变量名
数据库链接
create database link prodstore connect to store identified by admin123 useing 'prod';
案例:更新开发库
使用Oracle共享服务器体系结构
专用服务器体系结构的局限性
共享服务器体系结构
配置共享服务器
参数
disoatchers
控制实例启动阶段所启动的进程数及进程的行为,共享服务器的唯一必须参数
选项
启动的调度进程数
监听的协议类型
端口、网卡、监听地址
shared_servers
shared_servers
1
max_shared_servers
process的1/8
实例:
alter system set dispachers='(dispachers=2)(protocol=tcp)'
alter system set shared_servers=20
使用共享服务器的场合
降低性能
共享服务器模式下startup和shutdown无效,管理员应该用专用连接
如果默认为共享模式,在tnsnames中修改server=decicated项确保连接为专用连接
Oracle存储结构
表空间和数据文件
Oracle数据存储模型
表的大小不再受环境对最大文件大小的限制
可编程模式对象不是段,不存储数据,存在于数据字典中
oralce块:基本I/O单元,数据文件为连续的oralce块,块大小不变,默认8k
DB_BLOCK_SIZE
更新块大小唯一方法新建数据库
段、区间、块、行
select segment_type,count(1) from dba_segment group by segment_type;
table,index,type2 undo(撤销段),rollback,table partition,index partition,cluster,
alter table tablename allocate extent storage (datafile 'filename');
表空间有多个数据文件时,重写oracle选择
DBA_SEGMENTS确定表的表空间
dba_tables确定非分区表的表空间,分区表可以在不同的表空间
文件存储技术
本地文件系统
集群文件系统
原始设备上的文件
ASM设备上的文件
ASM只能存储数据库文件、不能存储二进制文件。始终必须将Oracle主目录保存在常规文件系统上
命令
select name,block_size*file_size_blks bytes from v$controlfile;
select member,bytes from v$log join v$logfile using (group#);
select name,bytes from v$datafile union all select name,bytes from v$tempfile;
创建表空间和数据文件
创建表空间
所有表空间应该本地管理
视图
v$tempfile
v$atafile,dba_data_files
v$tablespace
更改表空间
重命名表空间及数据文件
alter tablespace tablespacename rename to tablespacename;
oracle通过表空间编号和数据文件编号维持关系
v$tablespace.ts#
v$datafile.file
数据文件重命名需要处于脱机状态
使其联机或脱机
alter tablespace tablespacename offline [normal|immediate|temporary]
normal(默认):正常离线,脏块写入数据文件
immediate:立即离线,不转储,数据文件损坏,再次连接前需运用重做日志恢复
temporary
标记为读写或只读
alter tablesapce tablespacename [read only|read write]
更改阈值报警
报警
85%一般报警
97%严重报警
查看报警
database control中alert页
alert文件
重新调整表空间的大小
添加数据文件、调整现有数据文件大小、数据文件autoextend
alter database datafile filename resize n[M|G|T]
alter tablespace storedata add datafile 'd:\datafile.dbf'size 50m;
alter database datafile 'd:\datafile.dbf'autoextend on next 50m maxsize 2g;
删除表空间
drop tablespace tablespacename [including contents [and datafiles]];
未指定contents单包含对象将删除失败
与另一个表空间的表存在外键关系,并且该表空间中的表为父表,删除失败
未指定and datafiles则只删除表空间及内容,数据文件需手动删除
OMF
DB_CREATE_FILE_DEST
数据文件默认位置
DB_RECOVERY_FILE_DEST
归档重做日志和备份文件默认位置
DB_CREATE_ONLINE_LOG_DEST_n
联机重做日志默认位置
管理表空间中的空间
管理表空间的空间
将空间分配给表空间
设置数据文件大小
表空间中的空间分配给段
分配区间
将段中的空间分配给行
维护块空闲空间量的位图
区间管理
字典管理
照顾8i以前版本
本地管理
uniform size
如果指定该选项,那么表空间中分配的每个区间将使用此大小
create tablespace large_tabs datafiles 'large-tabs_01.dbf' size 10g extent managent local uniform size 10m;
create tablesapce any_tabs datafile 'ang_tab_01.dbf'size 10g extent management local autoallocate;
oracle建议使用autoallocate
select tablespace_name,extent_management from dba_tablespace;
execute dbms_space_admin.tablespace_migrgte_to_local('tablespacename');
表空间转换为本地管理
管理段空间
方法
手动
自动
Oracle推荐
查看管理方式
select tablespace_name,segment_space_management from dba_tablespace;
无法将自动管理转换为手动,除非重新建表
ORACLE安全性
用户:连接数据的用户
模式(scheme):用户拥有的对象
创建和管理用户账户
用户账户属性:用户名、验证方法、默认表空间、配额、临时表空间、配置文件、账户状态
默认表空间
alter database default tablespace tablespacename
默认表空间为system,最好修改为别的表空间
配额
临时表空间
alter user username temporary tablespace tablespace_name;
配置文件
用户状态(9种)
alter user username account lock/unlock;
alter user username password expire;
强制用户下次登陆时更改口令
身份验证方法
操作系统身份验证
口令文件身份验证
口令、外部身份、全局身份验证
create user ops$jwa identified externally
创建用户
create user scott identified by tiger default tablespace users temporary tablespace temp quota 10m on users,quota unlimited on example profle developer_profile password expire account unlock;
alter user scott identified by lion;
alter user scott default tablespace store_data temporary tablespace temp;
alter user scott quota unlimited on store_data,quota 0 on users;
alter user scott profile prod_profile;
alter user scott password expire;
alter user scott account unlock;
drop user [cascade];
授予和撤销权限
对象权限
grant select on tablename to username;
grant all on tablename to username;
with grant option:权限传递
系统权限
权限
grant create session ,alter session,create table,create view,create synonym,create cluster,create database link,create sequence,create trigger,create type,create procedure,create operator to username;
grant create table to scott with admin option;
管理和创建角色
创建角色并授予权限
create role rolename;
grant create session to role;
预先定义的角色
connect,resource,dba,select_catalog_role,scheduler_admin
启用角色
创建和管理配置文件
配置文件的口令限制始终有效,而资源限制需要rescure_limit为true才有效
管理口令
资源限制
alter system set rescure_limit=true
创建和管理配置文件
select user,profile from dba_users;
select * from dba_profiles where profile='default'
数据库安全和最小权限原则
PUBLIC权限
UTL_FILE
UTL_TCP
UTL_SMTP
UTL_HTTP
对安全性重要的实例参数
UTL_FILE_DIR
REMOTE_OS_AUTHENT和OS_AUTHENT_PREFIX
O7_DICTIONARY_ACCESSIBILITY
REMOTE_LOGIN_PASSWORDFILE
标准数据库审计
数据库审计
参数AUDIT_TRAIL
基于值的审计
audit create any trigger;
audit select any table by session;
细粒度审计
审计SYSDBA
AUDIT_SYS_OPERATIONS为true时,默认为false
系统
windows
windows/Application/log
Unix
AUDIT_FILE_DEST参数指定
redolog
联机重做日志
归档重做日志