Oracle原理笔记(待续)

图例:

蓝色:Oracle命令

红色:概念

黄色:动态性能视图

加粗:一段的开始

---------------------------第一章 Oracle体系结构概述-----------------------------------------------------

一、概述 什么是Oracle server

Oracle Server是一个系统,包括两个部分Oracle instanceOracle database

二、Oracle的内存结构

2.1、Oracle instance

instance 有两部分组成,由内存后台进程组成

...... 内存

包括一个SGA,

多个PGA,一个Server Process对应一个PGA

一个instance只能对应一个database,一个database可以对应多个instance

...... 后台进程

下面有说明

2.2Oracle database 就是一堆硬盘上的文件

有三种文件: Data files Control files Redo Log files

查看SGA区信息的命令:show sga


2.3 SGA区的组成:一个数据库实例只有一个SGA

Shared Pool

Library Cache 存储编译后的SQL,PL/SQL语句

Data Dictionary Cache 数据字典,存储着数据库的控制信息,比如动态性能视图

Database Buffer Cache 占内存最大的,存储数据的缓存

Redo Log Buffer 存储对表的修改,事务日志

java Pool(可选)

Large Pool(可选)

SGA增长的最小单位叫granule

查看granule: select component,granule_size from v$sga_dynamic_components;

SGA的最大值由参数 SGA_MAX_SIZE决定

2.4 PGA的组成:一个Server Process对应一个PGA,什么是Server Process下面的说明。


三、Oracle的进程结构

User Process (用户进程) 如sql plus就是一个用户进程

Server Process (服务进程) 负责与用户连接的进程

background Process (后台进程) DBWn , LGER, PMON,SMON,CKPT

DBWn (必有)Database Writer 最多可有20个,负责把Database Buffer Cache中被修改的数据写的data files中。IO任务繁重可配置多个DBWn 进程

LGER (必有)Log Wriger 负责把Redo Log Buffer中的数据写到Redo Log files中。

PMON (必有)Process Monitor 用于释放,清理进程级的资源,如进程出错时销毁进程,重新生成进程。

SMON (必有)System Monitor 用于释放,清理系统级的资源

CKPT (必有)CheckPoint 是轻量级的进程,写入更新检查点信息。

ARCn (可选)Archiver 负责写归档日志

四、Oracle的逻辑结构

Oracle Server上只有一个Oracle Database。

一个Oracle Database可以有多个表空间组成。

一个表空间有多个segment组成。

一个segment有多个Extent组成。

一个Extent是一组连续的blocks(块)。

五、Oracle的物理结构

一个表空间有多个Data file组成。

一个segment可以跨Data file


------------------------第二章 Oracle 服务器入门---------------------------------
一、Oracle的管理工具
OUI(Oracle Universal Installer) 安装删除数据库
DBCA(Oracle Database Configuration Assistant) 创建管理数据库
SQL Plus 不用说了吧
OEM(Oracle Enterprise Manager) 管理企业中多个数据库
Oracle Net Manager 网络助手
Recvoery ManagerRMAN
Date Pump


------------------------第三章 管理Oracle实例-----------------------------------

一、oracle的初始化参数

oracle的初始化参数(pfile,spflie中的参数)都保存在v$parameter视图中,可以使用sql查具体参数的值

方便快速查看参数的命令:
show parameter 参数名(可简写),例如show parameter pga_ag 是查pga_aggregate_targer参数的值

查看oracle的SID, 看linux下的oracle的环境变量,(linux命令) :env | grep ORACL

SID的讲解


二、pfile,spfile讲解
1 pfile,spfile的说明与命名规范
这两个文件保存在OracleHome/dbs目录
pfile命名规范 :int + SID +.ora
spfile命名规范 :spfile + SID +.ora
2 使用一个例子pfile修改成一个当前数据库能使用的pfile
3 使用pfile创建spfile
create spfile='spfile文件名' form pfile='pfile文件名';
create spfile form pfile; 使用默认值

4pfile的修改,直接使用文本编辑器修改。

---spfile---

1、修改spfile中的内容:<这是可选部分>

alter system set parameter=value <comment='说明' > <deferred> <scope=memory|spfile|both> <sid='sid|*'>;

2、把spfile中的参数改回默认值

alter system reset parameter scope=both sid='*';

3 使用spfile 创建pfile
create pfile='pfile文件名' form spfile='spfile文件名' ;
create pfileform spfile;
使用默认值

4 使用strings命令(Linux命令)查看二进制文件中的文字
strings 二进制文件名 | more


三、Oralce的启动

启动oracle startup
启动监听进程 lsnrctl start 远端的用户可以通过网络连到数据库

3.1、Oralce的启动的顺序:

1、先找spfileSID.ora

2、如果没有,再找Default spfile (spfile.ora文件)

3、如果没有,再找initSID.ora

3.2、使用指定的pfile或spfile来启动当前Oralce的数据库

startup后面可加参数 srartup pfile=$ORACLE_HOME/dbs/init*.ora ,指定使用pfile来启动当前数据库

srartup spfile='' 这是不可以的, 也就是说,不能用直接指定的spflie来启动当前数据库,

但我们可以可以写一个pfile指向一个spfile,

pfile文件 123.ora 的内容:

spfile=$ORACLE_HOME/dbs/spfileABC.ora

spfileABC.ora是一个存在的,有效的spfile文件。

srartup pfile='$ORACLE_HOME/dbs/123.ora ' 命令来启动当前数据库,就可以使用我们指定的spfile

3.3、Oracle 启动的4个阶段:

1 shutdown 状态,关闭状态

2 nomount 状态,instance启动阶段,读初始化参数,分配内存,启动后台进程,但没挂载数据库(dataFile)

3 mount 状态,打开控件文件,日志文件,挂载数据库(dataFile),一般用户不能访问, 只有管理员能访问, 可做备份恢复工作。管理员使用的命令是有限的.

4 open 状态,可以正常对外提供服务

5 restrict 状态,一般用户(无restrict权限)不能连接到数据库,管理员可以做一些维护工作,管理员可以使用所有的命令

6 read only 状态 ,只读状态,用户可查数据,管理员又可以做一些离线的操作.

startup nomount , 进入nomount 状态

alter database mount; , 进入mount 状态

startup mount ,直接进入mount 状态

alter database open; , 进入open 状态

startup restrict , 直接进入restrict 状态

alter system enable restricted session; 可从open状态进入restrict 状态

startup mount; alter database open read only; 进入read only状态

3.4、把已连接上来的用户踢下去:

1 查看在线用户 : select sid,serial#,username from v$session;

2 通过用户名,找出相应的sid,serial# 值,为下一步做准备

3 alter system kill session 'sid值 , serial#值';


四、Oralce的关闭的顺序:

1 colse a database 把SGA中的数据写到硬盘上,关闭redo log files,数据文件.

2 Unmount a Datebase 关控制文件

3 ShutDown an Instance 关实例,放内存

停止oracle shutdown abort 最狠的,强断开session,回滚未完成的事务,没能关数据文件,会留垃圾,下次再启动时SMON进程再来清理这些垃圾(没能及时写入数据文件的数据).

停止oracle shutdown immediate 最常用的,强断开session,回滚未完成的事务, 会正常关数据文件,不留垃圾.

停止oracle shutdown transactional 断开session, 等所有事务提交, 会正常关数据文件,不留垃圾.

停止oracle shutdown normal 等session自己断开, 等所有事务提交, 会正常关数据文件,不留垃圾.


五、诊断文件 Diagnostic Files

5.1 诊断文件的类型:

1 alert_SID.log 文件。

2 Background trace 文件。

3 User trace 文件。 文件名:SID_ora_PID.trc

5.2 alertSID.log 文件

文件名:alert_SID.log

文件只有一个。

记录你的操作,重大事件的结果,记录每次启动的初始化参数。文件很大

本文件存放在位置,要查询background_dump_dest参数,show parameter dump;

可以使用VI 来查看文件的内容。

5.3 Background trace 文件

文件名:SID_processname_PID.trc

每个PID相同的进程一个文件。

如果后台进程出现错误,就会写这类文件, 这种情况较少。

5.4 User trace 文件

文件名:SID_ora_PID.trc

server process 进程出现错误, 你想主动记录用户的操作时,就会写这类文件

本文件存放在位置,要查询user_dump_dest参数,show parameter dump;

5.5 手工控制记录 User trace 文件

在session级别记录

alter session set sql_trace=true;

修改成功后,用show parameter sql_trace查看, 10G版本可以看到变化,9I版本看不到,但实际已修改成功

在instance 级别记录

修改初初始化参数文件 sql_trace=true

这时远端用户,执行的SQL语句,都会被记录下来, 记在user_dump_dest参数指定的目录下的SID_ora_PID.trc文件中。

------------------------------第四章 创建数据库--------------------------------------------------------

用DBCA创建

手动创建

手动删除以有数据库

------------------------------第五章 数据字典和动态性能视图----------------------------------

一、数据字典(DD)(静态,不常变化)

1.1 数据字典是

是只读的表和视图,存储在 system 表空间,所有者是SYS用户,数据字典用来保存以下信息:

1 数据据库的物理与逻辑结构

2 数据库对的定义与空间分配

3 数据完整性的约束

4 用户信息

5 角色信息

6 特权信息

7 审计信息

创建数据字典时,使用catalog.sql 脚本来创建的。

1.2 分类

DBA_XXX 是“所有”,是DBA能访问的schema

ALL_XXX 不是“所有”,是当前用户的全部能访问schema, 比USER_XXX 多了一些被授权访问的其它用户的schema

USER_XXX 用户自己的schema

1.3 常用的数据字典

dba_tables 记录数据中所有的表。

all_tables记录当前用户的全部能访问的表,可能有一些是被授权访问的其它用户的表。

user_tables 记录当前用户所有的表,就是当前用户“拥有”的表。

dba_objects 记录数据中所有的数据对象

all_objects记录当前用户的全部能访问的数据对象,可能有一些是被授权访问的其它用户的数据对象

user_objects 记录当前用户所有的数据对象,就是当前用户“拥有”的数据对象。

dictionary 总揽表,记录着全部的数据字典与动态性能视图

select * from dictionary 10.2G版本中大约有1870条记录

二、动态性能视图 (动态,常变化)

是虚表,不是真表, 是内存中的信息,只是以“表”的形式来展示,记录数据库当前的活动情况,如现在数据库有几个事务没有提交,是常变化的。用于监控与调优数据库。所有者是SYS用户。

v$fixed_table 动态性能视图的一揽表,存储所有的动态性能视图名称。10.2g版本大约有1383条录,9i版本大约有900多条

v$controlfile 此时控制文件信息

v$database 此时数据库信息

v$datafile 此时数据文件信息

v$instance 此时实例信息

v$parameter 此时初始化参数信息,是存储在内存中的。 (重要)

v$session 此时远端用户与数据库建立的session信息

v$sga此时SGA的信息

v$spparameter 此时spfile中的参数信息,是存储在spfile文件中的

v$tablespace 此时表空间信息

v$thread redo log信息

v$version 版本

------------------------------第六章 管理控制文件-----------------------------------------------------

------------------------------第七章 管理联机Redo日志文件-----------------------------------

------------------------------第八章 管理表空间和数据文件-------------------------------------

------------------------------第九章 存储空间管理-存储结构和关系------------------------

------------------------------第十章 Undo管理---------------------------------------------------------

------------------------------第十一章 管理表---------------------------------------------------------

------------------------------第十二章 管理索引---------------------------------------------------------

------------------------------第十三章 维护数据完整性---------------------------------------------------------

------------------------------第十四章 管理口令与安全---------------------------------------------------------

------------------------------第十五章 管理用户---------------------------------------------------------

------------------------------第十六章 管理Privileges---------------------------------------------------------

------------------------------第十七章 管理角色---------------------------------------------------------

------------------------------第十八章 审计Auditing---------------------------------------------------------

------------------------------第十九章 导入数据到数据库---------------------------------------------------------

------------------------------第二十章 全球化支持---------------------------------------------------------

你可能感兴趣的:(oracle)