oraclesg读书笔记资料_第1页
oraclesg读书笔记资料_第2页
oraclesg读书笔记资料_第3页
oraclesg读书笔记资料_第4页
oraclesg读书笔记资料_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i.oraclesg读书笔记

2.oracle实例=共享内存区域(sga)+后台进程或者线程(要紧进程

dbwn,lgwr,ckpt,arch,pmon,smon)

3.oracle数据库即一系列的os文件,要紧的文件有数据文件,日志文件与操纵文件。

4.其他文件:参数文件与口令文件

5.其它进程:高级队列,RAC,共享服务器,高级复制,

Oracleserver运行环境:

1.Client-applicationserver-server:客户端通过应用服务器访问oracle

2.Client-server:客户端直接通过网络访问服务器

3.Host-base:客户端与服务器位于一台机器上

Oracle服务器的两大重要构成部分:

一。Oracle实例

1.oracleinstance由共享内存结构与后台进程(windows下线程)构成,用来管理数据库

2.实例与数据库的关系

一个时刻,一个实例有且仅能mount一个数据库,而一个数据库能够由多个实例来管理

(比如9i往常的ops,与9i以后的rac,都是能够一个数据库对应多个实例)

4.区别实例与数据库

实例就是共享内存结构+后台进程(线程)

数据库就是一系列的os文件

连接到oracle实例

用户连接实例的过程:

1.用户打开一个客户端工具,如sqlplus,oracleforms.

2.用户进程登陆到服务器,oracle服务器为用户进程开启一个服务器进程(这个应该是指独

占服务器模式下,共享服务器模式下用户进程不可能直接连接到服务器进程而是连接到

调度器,假如存在空闲的服务器进程,调度器就将用户的请求传递给服务器进程),服务

器进程代表用户进程于oracle实例通信与执行sql语句。

Connection:

用户进程与服务器的一个通路,建立连接的三种方式

1.客户端与服务器位于一台机器上,通过interprocess建立connection

2.客户端与通过网络连接到oracle服务器,这也就是常见的cs结构

3.客户端通过网络连接到应用服务器,应用服务器再通过网络连接oracle服务器,这就是

常说的三层结构。

Session

Session是用户到数据库的特殊连接,这里的特殊是指用户是合法的(即用户名与密码是正确

的),当用户正常退出或者者特殊中断的时候都会导致session结束。一个用户能够起很多个

session,如运行不一致的客户端工具。

共享服务器与独占服务器的区别:

独占服务器是指一个服务器进程只能为一个客户端进程服务,同时用户进程直接与服务器进

程连接。关于共享服务器进程,一个服务器进程能够为不一致的客户进程服务,共享服务器

中,客户进程是直接于调度器连接,并非是服务器进程。

二.Oracle数据库

Oracle数据库即一系列的os文件,由三个部分构成,操纵文件,数据文件与日志文件。

数据库由逻辑结构与物理结构之分:

1.

数据库的物理结构,要紧由三个类型的文件构成,操纵文件,数据文件与日志文件。

操纵文件:存储了数据库的结构信息,还有checkpoint信息,同时rman的备份信息也是存

储在操纵文件中,关于rman没有使用catalog的话,操纵文件是很重要的,操纵文件中的内

容分为可重用与不可重用,如数据文件与日志文件的信息就属于不可重用的部分,rman的

信息就属于可重用的部分与control_file_record_keep_time这个参数有关(操纵文件务必保留

rman信息的最短时间),建议将操纵文件储存在多个不一致的磁盘,这几个文件互为镜象,

假如所有操纵文件都损坏能够重建,重建操纵文件读取数据头的信息。

数据文件:数据库中所有的数据都存储在这类文件中,我将它分为四类,system文件(10g中

是system,sysaux,9i中的system),撤消文件(undo,一个数据库尽管能够建立多个undo

tablespace,但是一个时刻只能使用其中的一个),临时文件(要紧用来排序),用户数据文件(除

去以上三类)

日志文件:日志记录了数据库中的重做信息,用户的操作都会被记录在日志文件中,实例恢

复利用status为active与current的日志。

当数据库特殊关机(abort),或者者由于某种原因而特殊当机,那么下次启动的时候就要做实例

恢复,实例恢复的第一个过程是rollforward(前滚),马上数据库恢复到当机前的那个时刻。

接着就open数据库,数据库打开后做rollbacko

2.

其它的文件要紧有参数文件(initsid.ora或者者服务端参数文件),口令文件,归档日志文件。

参数文件:记载了数据库启动信息,nomount的时候就要读取参数文件。

Oracle的认证模式要紧有口令文件认证与os认证。

认证就要通过口令文件。

口令文件存储了sysoper与sysdba用户的密码信息,能够通过查询v$pwfile_users来查询具

有sysoper或者sysdba的用户。

Os认证:

关于windows,os的用户要在oracle_dba组中,同时SQLNET.AUTHENTICATION_SERVICES=(NTS)

关于linux,只要os的用户在oracle_dba组中即可。

归档文件:这类文件只会在归档模式下存在,就是日志文件的副本,altersystemswitch

logfile,altersystemarchivelogcurrent与数据库自己引起的日志切换都会触发arch进程

归档。

Oracle内存结构:sga+pga

Sga:共享内存区域,所有的进程共享,sga在数据库nomount的过程中分配

Pga:进程全局区,又称私有全局区,与进程一一对应,其他进程不能访问。服务器进程进程

启动的时候分配。

Uga:用户全局区域,与会话对应。关于共享服务器模式,uga来自sga,独占服务器模式uga

来自pgao

Sga分类:

1.动态sga:同意在线修改sga的构成部分,直接生效。动态修改的2个前提(1)使

用服务端参数文件(2)修改后的sga的总与小于或者等于sga_max_size。

2.定制(size)sga:在参数文件中把sga的各个组件设置好。

Sga的分配:

粒度(granule):sga分配与收缩的最小单元。

9i:ifsga_max_size<128m

thengranule=4m

elseifplatform=windows

thengranule=8m

else

granule=16m

10g:

ifsga_max_size<1g

thengranule=4m

elseifplatform=windows

thengranule=8m

else

granule=16m

也能够查视图v$sga_dynamic_components

Sga的最小值是三个粒度,onegranuleforfixedsga(includelog_buffer),oneforbuffer

cache,oneforshared_pool(摘自sg)

Sga的要紧构成部分:

一.Sharedpool

Sharedpool:存储最近使用的sql语句与数据定义,大小设置shared_pool_size,能够通过

altersystem在线改。

Sharedpool的要紧构成部分

1.库高速缓存区(librarycache),大小受限于shared_pool_size,为了共享相同的sql语句,

避免不要的硬分析,librarycache使用LRU算法。(有关视图v$librarycache)

(1)共享sql区:存储sql语句的执行计划与分析树,下次运行相同的语句时,能够

直接执行语句,从而避免再次分析。(语句是否共享与cursor_sharing的设置有

关)

(2)共享plsql区:共享最近执行的plsql语句,包含分析与编译的程序单元(存储

过程,函数,包与触发器)

3.数据字典缓存区(datdictionarycache),依靠于shared_pool_size,存储数据字典信息

提高响应时间。(有关视图v$rowcache)

二.Buffercache

从数据文件中读取的数据先缓存到databuffer中,假如下一次要读取相同数据的时候能够直

接从databuffer中提取,减少物理读,遵循LRU算法。

Buffercache大小的设置:

1.db_cache_size:默认cache的大小,不能设置为0,从数据文件中读取的数据默认放这

个池。

2.db_keep_cache_size:保留池的大小,假如一个表很小而有经常查询,能够将这个表keep

到保留池

3.db_recycle_cache_size:回收池的大小,假如一个大对象基本不可能被重用,能够放到这

个池

这三个池相互独立。

buffercache中buffer的大小,默认是db_block_size,9i中能够为用户表空间设置不一致的块

大小,前提是设置db_nk_cache_size(n=2-32,n的大小与平台有关,有的平台n不能为32),

不一致块大小的buffercache也是相互独立。

Buffercache的大小能够通过altersystem修改在线改。

三Log_buffer:

用户对数据库所有修改先存在到log_buffer中,然后由Igwr进程将logbuffer中的数据写入

日志文件。保证数据的一致性。

由log_buffer参数操纵大小,能够再线改。

四.Largepool(可选池)

1.共享服务器下,uga优先从largepool分配

2.rman备份也会使用largepool,前提是当backup_slave_io=n(这个参数我在10g中没找到,

不明白被什么参数替代),backup_tape_io_slaves=true,同时largepool能够分配足够的内

存,否则将会在alert.log中记录一条错误信息,而且不使用io_slaves做备份与恢复。

参数large_pool_size,能够通过altersystem在线改。

五.Javapool(可选)

假如安装同时使用java,就要设置java_pool,大小由java_pool_size确定,9i中默认值24m。

PGA

PGA包含服务器进程与后台进程的数据信息与操纵信息的内存区域,pga在进程创建是创

建,销毁是销毁。

独占模式下pga的结构:

Sortarea,sessioninformation,cursorstate,stackspace

进程结构:

1.用户进程:当客户端向数据库请求连接时创建,用户进程不与数据库服务器直接通信。

2.服务器进程:当用户与数据库建立连接后,服务器进程启动,独占模式下,一个服务器

只能为一个用户进程服务。共享模式下,一个服务器进程能够为多个用户进程服务。

3.后台进程:

⑴dbwn(务必):负责将数据库缓存区中的数据写如数据文件。触发条件

1.Incrementcheckpointandnormalcheckpoint

2.Thenumberofdirtybuffersreachesathresholdvalue(thresholdvalue是多少

呢???)

3.Aprocessscanaspecifiednumberofblockswhenscaningforfreebufferbutnot

found.(specifiednumber指多少???)

4.Timeoutcursor.(多长写一次???)

5.ApingrequestinRACenviorment(不明白pingrequest啥意思)

6.Tablespaceoffline(excludeimmediate)

7.ModifyTablespacereadonly

8.Droportruncateatable

9.Altertablespacetablespace_namebeginbackup;

⑵Igwr(务必):负责将logbuffer中的内容写到logfile,触发条件:

1.commit

2.1/3full

3.1m

4.3seconds

5.dbwnwrites

(3)smon(务必)作用:

1.实例恢复。(1)前滚(2)打开数据库(3)回滚未提交事务

2.合并空闲空间(这个好象是数据字典管理里面才有的吧????)

3.释放临时表空间

(4)pmon(务必)作用:

清理失败的进程。(:I)回滚事务(2)释放锁(3)释放资源(4)重启死亡的

调度器。

(5)ckpt(务必)作用:

1.触发dbwn

2.修改数据头的检查点信息

3.修改操纵文件的检查点信息

分类:

1.完全检查点(altersystemcheckpoint与正常shutdown)

2.增量检查点

检查点的事件:将内存中的数据块写入磁盘

(6)arch(非务必但是非常重要)作用:

Arch进程在归档模式下才存在,当日志切换(包含手工)发生的时候,arch服

务将当前的在线日志归档,并切换到下一个日志组,非归档模式下不存在这个进

程。

数据库的逻辑结构:

1.数据库由表空间构成

2.表空间由段构成

3.段由区构成

4.区由连续的块构成

5.块是io的最小单位

Dml语句的处理过程

1.查找要修改的数据,假如在buffercache中不存在则从数据文件读取

2.服务器进程给需要修改的行加锁,同时通过rollbacksegment或者者undo提供读

一致性,与回滚事务

3.将数据块修改成新值。

参考资料:sg,oracle9i&10g编程艺术

OracleUniversalInstaller:用来安装,升级或者者删除软件

Oracledatabaseconfigurationassistant:用来创建删除或者者修改数据库的属性

Passwordfileutility:口令文件创建工具

Sqlplus:访问数据库的工具

OracleEnterpriseManager:具有图形用户界面的工具,用来管理,监控与调整一个或者者

多个数据库

Oracle的认证模式:os认证与口令文件认证

Os认证只是对本地连接而言。

Os认证:1.用户务必属于ora_dba组,windows下务必SQLNET.AUTHENTICATION_SERVICES二

(NTS)o

口令文件认证:

关于参数remote_login_passwordfile

(1)none:不使用口令文件认证

(2)exclusive:只同意一个实例使用口令文件,同时存储sysdba与sysoper的密码

(3)shared:多个实例能够共用一个口令文件,同时只存储sys的密码,口令文件不能被

修改。

Orapwd工具能够创建口令文件,参数unix下是放在dbs下,windows是放在database下,

参数file=口令文件所在的路径,entries最多存储几个具有sysdba或者者sysoper的用户,

password是sysdba或者者sysoper的密码。

1.参数文件:oraclenomount的过程中务必读取参数文件并从中获取实例启动的一些信

,已、O

(1)文本格式的pfile,windows下通常位于database下,取名initsid.ora,能够用文本编

辑器直接修改,修改后的参数在系统下次启动时生效。

(2)二进制格式的spfile:由oracle服务器保护,能够查看但是绝对不能用手工修改(可

能导致系统启不来),要通过altersystem的方式修改,存放位置于pfile类似,参数

scope能够取三个值,memory,spfile,both.

Both是默认值,即参数的修改既对当前实例也对spfile生效

Spfile有些启动参数没法通过both,能够设置为scope=spfile,下次启动后生效

Memory参数的修改只对当前实例有效

(3)通过pfile创建spfile

Createspfilefrompfile='实际位置,

(4)通过spfile创建pfile

Createpfile='实际位置,fromspfile;

(5)showparameterspfile查看是否为spfile启动

2.使用OMF管理文件

Db_create_file_dest设置数据文件的默认位置

Db_create_online_log_dest_n:设置操纵文件与日志文件的默认位置

往常没用过。mf来个简单的例子:

SQL>altersystemsetdb_create_:file_dest二'G:\oracle\product\1020\oradata';

系统已更换。

SQL>createtablespacetest;

表空间已创建。

SQL>selectnamefromv$datafilewherets#=(selectts#fromv$tablespacewhere

name=,TEST');

NAME

G:\ORACLE\PRODUCT\1020\ORADATA\ORCL\DATAFILE\Ol_MF_TEST_3GNPQHH

W_.DBF

SQL>altersystemresetdb_create_file_destscope=spfilesid-〃将参数变为原值

系统已更换。

SQL>showparameterdb_create_file_dest;

NAMETYPEVALUE

db_create_file_deststringG:\oracle\product\10.2.0\orada

SQL>startupforce;

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

数据库已经打开。

SQL>showparameterdb_create_file_dest;

NAMETYPEVALUE

db_create_file_deststring

3.Oracle的启动过程

(1)nomount:a.读取参数文件(spfilesid.ora->spfile.ora->initsid.ora,或者者手工指定pfile

的位置)

b.分配sga

c.启动后台进程

d.打开alertsid.log与跟踪文件

务必在nomount状态下做的操作

A.创建数据库

B.重建操纵文件

(2)mount:通过参数文件中的control_files读取操纵文件,同时获取日志文件与数据文

件的位置信息(不检查存在性)

务必在mount状态下做的操作

a.移动数据文件与日志文件(这里指alterdatabaserename的方式)

b.启动与关闭归档

c.启动闪回

d.Recoverdatabase;

(3)open:打开数据文件与日志文件,open之前可能要执行实例恢复(smon完成),open

之前先前滚将数据库恢复到当机时刻,然后打开数据库,open之后可能要做回滚。

介质恢复与实例恢复:

介质恢复:Oracle启动过程中会推断是否要做介质恢复(利用归档,备份或者者是redo),

oracle比较操纵文件的sen与数据头的sen假如不一致则要进行介质恢复。分2种情

况,假如操纵文件的sen小于数据头的sen,则说明操纵文件比数据文件旧,这时的

要加usingbackupcontrolfile做恢复。假如操纵文件的sen大于数据文件的sen,则直

接recoverdatabaseo

实例恢复:oracle启动过程假如发现v$datafile中的last_change#为空则要求进行实例

恢复,实例恢复只使用在线日志,更直接的说只使用active与current状态的在线日志,

实例恢复的起点是lowrbao

启动的语法

Startup[force],[restrict],[mount],[pfile],[nomount],[recover]

1.不带参数的startup就是直接启动到open状态

2.startupforce=shutdownabort+startup

3.startuprestrict只同意有restrictedsession的用户才能登陆mount,启动到mount

状态

4.pfile手工指定启动参数文件

5.nomount启动至nomount状态

6.recover启动过程进行介质恢复(这参数还没用过)

受限模式下的数据库

1.原先是以restrict模式打开数据库的,只有具有restrictedsession权限的用户才能登

陆。

2.Open后执行,altersystemenablerestrictedsession;关于已经登陆的用户不受影响,

以后登陆的用户就要具有restrictedsession权限才能登陆。(altersystemdisable

restrictedsession)取消受限模式。

只读打开数据库

1.同意用户查询

2.假如是使用本地管理的临时表空间则能够做磁盘排序操作

3.只读模式同意对数据文件进行offline与online,同时能够对离线的表空间或者者

数据文件做恢复,与一些不产生redo的操作

第三个往常没搞过做个test

1.对离线的数据文件做恢复

SQL>alterdatabasedatafile4offlinedrop;

数据库已更换。

SQL>shutdownimmediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>startupmount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>alterdatabasedatafile4online;

alterdatabasedatafile4online

*

第1行出现错误:

ORA-01113:文件4需要介质恢复

ORA-OHIO:数据文件4:

G:\ORACLE\PRODUCT\1020\ORADATA\ORCL\USERSOLDBF'

SQL>recoverdatafile4;

完成介质恢复。

SQL>alterdatabasedatafile4online;

数据库已更换。

2.对离线的数据表空间做恢复

SQL>altertablespaceusersofflineimmediate;

表空间已更换。

SQL>shutdownimmediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>startupmount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>recovertablespaceusers;

完成介质恢复。

SQL>shutdownimmediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>startup

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

数据库已经打开。

SQL>altertablespaceusersonline;〃这里能直接online说明刚才的recover起作用了

表空间已更换。

3.Readonly模式下能对数据文件做online与offline

SQL>shutdownimmediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>startupmount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>alterdatabasedatafile4offline;

数据库已更换。

SQL>alterdatabasedatafile4online;

数据库已更换。

4.Readonlyopen不做实例恢复的测试

SQL>shutdownimmediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>startupmount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>startupforcemount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>selectlast_change#fromv$datafile;

LAST_CHANGE#

1146688

1146688

1146688

1146688

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>startupforce

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

数据库已经打开。

SQL>startupforcemount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>selectnvl(last_change#,0)fromv$datafile;

NVL(LAST_CHANGE#,0)

0

0

0

0

棉花糖ONE(372368042)21:50:39

很明显,第一个不用做实例恢复,因此alterdatabaseopenreadonly就直接打开了

棉花糖ONE(372368042)21:52:07

SQL>selectnvl(last_change#,O)fromv$datafile;

NVL(LAST_CHANGE#,O)

0

0

0

0

SQL>alterdatabaseopenreadonly;

alterdatabaseopenreadonly

*

第1行出现错误:

ORA-16005:数据库需要恢复

SQL>alterdatabaseopen;

数据库已更换。

第二个务必进行实例恢复,因此没法readonly打开

(*)v$datafile中的last_change#是无穷大应该是针对非只读模式打开的

SQL>startupmount

ORACLE例程已经启动。

TotalSystemGlobalArea167772160bytes

FixedSize1247876bytes

VariableSize75498876bytes

DatabaseBuffers83886080bytes

RedoBuffers7139328bytes

数据库装载完毕。

SQL>alterdatabaseopenreadonly;

数据库已更换。

SQL>selectcheckpoint_change#,last_change#fromv$datafile;

CHECKPOINT.CHANGE#LAST_CHANGE#

11673421167342

11673421167342

11673421167342

11673421167342

只读模式下运行写其它文件,如操纵文件,altert.log,trace,operationsystemaudittrails;

数据库的关闭:

ShutdownmodeAITN

Allownewconnectionnononono

Waituntilcurrentsessionsendnononoyes

Waituntilcurrenttransactionsendnonoyesyes

Forceacheckpointandclosefilesnoyesyesyes

Shutdown数据库的用户务必具有sysoper权限或者者sysdba权限

1EMshutdown(notabort)

执行一个完全checkpoint,将数据头的sen同步到数据库的结束sen,将buffercache中的内容

写入数据文件,回滚未提交的事务,释放资源,下次启动无须做实例恢复。

非正常down机:(shutdownabort,instancefailure或者者startupforce)

不执行完全checkpoint,buffercache中的数据不可能写入数据文件,即全部丢失,不可能回

滚未提交的事务,下次启动的时候使用redo做实例恢复,恢复到实例失败的那个时刻的状

态,然后打开数据库,利用undo回滚未提交的事务,同时释放资源。

通过监控诊断文件来管理实例:

1.alertsid.log按时间的顺序记录了数据库的错误信息,如坏块,ora-600,ora-3113,

数据库的启动信息,日志切换信息,表空间创建与删除信息等,位置也是由参

数background_dump_dest决定。

2.后台跟踪文件:由后台进程产生,文件存放位置由初始参数

background_dump_dest决定,命名方式,sid_processname_pid.trc

3.user_trace_file:用户跟踪文件包含了sql语句的统计信息,与用户的错误信息,

存放在user_dump_dest目录下,大小有max_dump_file_size决定,默认是10m,

命名方式sid_ora_pid.trc.

开启用户trace的方法,设置会话级别的sql_trace为true,设置instance级别

的sql_trace为true,dbms_system.set_sql_trace_in_session设置会话级别。

数据字典视图:

1.当创建数据库的时候,oracle创建对象的结构信息并存放在数据文件中

分类:1.数据字典2.动态性能视图

2.数据字典:是一系列的只读表或者者视图,要紧用来描述数据库与数据库对象

要紧分为2类:

1.

基表:存储了数据库的结构信息,是数据库创建时第一个创建的对象,通过sql.bsq创建,

只有oracle服务器才能写这些表,用户很少直接访问这些表,不要直接对基表执行dml

操作,除了aul$.

2.

数据字典视图:根据基表来创建的视图,简化基表的信息,由catalog.sql创建

3.数据字典的内容

a.数据库中所有模式对象的定义(包含表,视图,索引,聚簇,同义词,序列,存储过程,

函数,包,触发器等。

b.模式对象所分配的空间,与已使用的空间

c.列的默认值

d.完整性约束

e.oracle的用户名

f.用户被授予的权限与角色

g.审记信息,如用户能修改或者者访问模式对象

3.数据字典的使用:

1.oracle服务器通过数据字典查找用户,模式对象与存储结构的信息

2.当一个ddl发生是oracle服务器自动修改数据字典

3.User与dba能够通过数据字典查找一些数据库的有关信息

4.Oracle如何使用数据字典

数据字典中的基表只能oracle服务器对它进行修改。在执行数据库操作,oracle通过读

取数据字典来确认模式对象是否存在,与用户是否有权限访问,当数据库的结构发生变

化时,oracle服务器将更新数据字典。

5.用户与数据库管理员如何使用数据字典

关于所有的数据库用户来说,数据字典视图被做为字典来使用,有些视图所有用户都能

使用,有些视图只有数据库管理员才能使用。

数据字典视图分类:

1.dba-数据库中的所有对象

2.all-用户能访问的所有对象

3.user-用户所拥有的所有对象

数据字典视图是静态视图要紧回答如下问题:

1.对象是否已经创建

2.对象的拥有者是谁

3.用户具有什么权限

4.对象具有什么限制

动态性能视图:记录了当前数据库的行为

1.当数据库发生变化的时候就会被更新

2.信息来自内存或者者操纵文件

3.Dba使用动态性能视图监控与调整数据库

4.动态视图的拥有者是sys

5.动态视图不能执行dml

动态性能视图用来回答

1.对象是否可用,对象是否在线

2.对象是否打开

3.是否拥有锁

4.会话是不是活跃的

查询数据字典与动态性能视图

能够通过查询数据字典与动态性能视图来获取信息

1.通过dictionary查询可用的视图

2.使用使用describe与select来获得可用的列,与列的内容

3.列的注释能够得知这个列在这个视图中的含义。

Diet是dictionary的同义词

Generalview:

Dictionary,dict_columns

Schemaobjects:

dba_indexes,dba_tables,dba_constraints,dba_tab_columns

spaceallocation:

dba_segments,dba_extents

databasestructure:

dba_tablespaces,dba_data_files

操纵文件是一个二进制文件,描述了物理数据库的当前状态

1.丢失操纵文件,需要恢复数据库(感受不完全对,正常shutdown删除操纵文件能够直接

重建就行了)

2.Mount的时候被读取

3.只能与一个数据库对应,即某个或者者某组操纵文件只能被一个数据库使用

4.建议使用multiplex

5.保证数据库的完整性

6.初始化大小在创建数据库是确定

操纵文件是启动与操作数据库过程中所务必的二进制文件,操纵文件只与一个数据库有关,

数据库在启动过程中,务必读取操纵文件,确认数据库是处于valid的状态,操纵文件在数

据库被使用的时候更新,由于在数据库打开的时候,操纵文件务必可写,操纵文件的信息由

数据库服务器修改,dba或者者用户不能直接编辑操纵文件。假如由于某种原因导致操纵文

件不可用,那么数据库将不能正常工作,假如所有操纵文件丢失,那么下次启动数据库的时

候务必做恢复或者者重建,数据库务必保证至少有一个操纵文件,最多能够达到8个。

操纵文件的大小:

操纵文件的大小受maxlogfiles,maxdatafiles,maxlogmembers,maxinstances,maxloghistory的影

响,这些参数假如达到峰值,那么操纵文件会自动扩展。

操纵文件的内容:

1.数据库名与dbid

2.数据库的创建时间

3.表空间的名字

4.数据文件与日志文件的名字与位置

5.当前日志文件的序列号

6.检查点信息

7.undo的信息

8.归档日志文件的信息

9.rman的备份信息

操纵文件的内容分为可重用与不可重用:

可重用部分如rman备份数据文件与日志文件的信息,这些部分只能被rman重用

对操纵文件做多功:

通过修改spfile

1.修改spfile(altersystemsetcontrol_files=(^^,^scope=spfile;)

2.正常关掉数据库(notabort)

3.cp操纵文件到新位置

4.startup

通过修改initsid.ora

1.shutdownnormal

2.修改initsid.ora中的control_files

3.cp操纵文件到新位置

4.startup

操纵文件的备份:

当数据库的物理结构发生变化,应该立即对操纵文件做个备份。

1.Alterdatabasebackupcontrolfileto'filename';

2.AlterdatabasebackupcontrolfiletotraceasWlename,;〃生成重建操纵文件的脚本

OMF管理操纵文件(假如创建数据库的时候不指定control_files,默认使用OMF)

1.取消参数control_61es〃注释掉这个参数

2.设置参数db_create_online_log_dest_n

3.操纵文件名由系统产生,并在alertsidhg中显示

从操纵文件中获取的信息:

V$controlfile:列出操纵文件的名字与状态信息

V$parameter:从参数文件中获取操纵文件的有关信息

V$controlfile_record_section:列出操纵文件中个构成部分的信息

Showparametercontrol_files:列出操纵文件的名字,位置,与状态

从操纵文件中获取信息的一些动态视图

1.v$backup

2.v$datafile

3.v$logfile

4.v$database

5.v$log

6.v$tempfile

7.v$archive

8.v$archived_log

9.v$loghist

10.v$tablespace

REDO:redo记录了数据的所有改变,为介质失败与系统失败提供恢复。

1.Redo是按组来划分的

2.Oracledatabase至少需要2个组(循环使用)

3.每个组至少要一个log成员(oracle建议使用多个日志成员做multiplex),一个日志组的

成员是互为镜象,完全相同的,为了安全建立每个日志组至少2个成员,并放在不一致

的磁盘上。

日志提供了事务的一致性,每个事务的改变同步到日志文件为了反正介质失败或者者system

故障(除了directloads,directreadswithnologgingoption),这些包含未提交的事务,回滚段

信息,段与对象的语句。Redo用于恢复已经提交了但还没写入数据文件的数据,只有redo

才用于实例恢复。

数据库管理员能够为一个日志组保护多个copy,以防止单点故障导致数据库的信息丢失

OnlineLoggroup

1.一系列相同的日志的几个就做一个日志组。

2.相同日志组中的成员具有相同的序列号与大小,当oracle开始写一个日志组的时候就给

予这个日志组一个序列号,当前日志的序列号记录在操纵文件与数据头中

创建初始化日志组:

初始化日志组的个数与成员在数据库创建的时候创建。

1.日志的个数受到createdatabase中的maxlogfiles的限制,maxlogfiles指日志组的最多个

数。

2.Maxlogfiles的最大值受限于os

3.Maxlogmembers限制了日志组最多的日志成员,这个参数的最大值受限制于os

(*)对以上的这部分内容有怀疑,没试过9i不明白,10g是会自动扩展日志

Redologs的工作原理:

a.Redo是循环使用的,a->b->c-a

b.当日志满的时候,lgwr将移到下个日志组。

1.这个就称做日志切换

2.引起检查点(非完全检查点)

3.检查点信息会被写入操纵文件

c.oracle将数据库的所有改变顺序的写入logbuffer,Igwr再将logbuffer中的内容写入日志文

件,坨\¥「将1081)11加1中的内容写入日志文件发生在如下情况

1.提交

2.1/3满

3.达到1m

4.Dbwr将数据缓冲区的内容写入数据文件之前触发Igwr写日志

日志的序列号当下次被使用的时候将被付成新值。

日志切换:

Lgwr顺序的写日志文件,当当前的日志满的时候,Igwr开始往下一个日志组写,这个行为

称之日志切换。

Checkpoint(这里指日志切换引起的):

当检查点发生的,并将日志有关的databuffer的内容写入数据文件,要写的缓冲区数目受到

参数fast_start_mttr_target的影响。

后台进程ckpt,更新数据头与操纵文件,来反映checkpoint已经完成。

Checkpoint发生的条件:

1.日志切换

2.shutdownimmediate,transactional,normal

3.fast_start_mttr_target影响检查点的频率

4.dba手工执行altersystemcheckpoint;

5.whenaltertablespace[offlinenormal,offlinetemporary|readonly|beginbackup]

设置log_checkpoints_to_alert为true,就会把检查点的信息记录到alertsid.log中,默认值为

falseo

强制日志切换与强制检查点

1.日志切换与检查点都会有系统自动触发

2.管理员能够执行

Altersystemswitchlogfile;〃手工切换日志

Altersystemcheckpoint;//手工触发检查点

Checkpointcanbeforce通过使用fast_start_mttr_target

Fast_start_mttr_target是fast_start_io_target与log_checkpoint_time的简化版,假如

fast_start_mttr_target设置为600,那么实例恢复的时间将不可能超过600s,oracle会调

整其它参数来满足这个要求。假如设置了fast_start_mttr_target那么将不能设置

fast_start_io_target与log_checkpoint_tinieout,fast_start_io_target与

log_checkpoint_timeout与log_checkpoint_interval再9i中被fast_start_mttr_target替代。

日志组的管理:

1.添加日志组

Alterdatabaseaddlogfile[groupn]"filename

2.添加日志构成员

Alterdatabaseaddlogfilemember"filename9togroup[n];

3.删除日志组

Alterdatabasedroplogfilegroup[n];

限制:

a.务必保证至少2个日志组

b.Active与current的不能删

C.日志组删除后,OS上的文件没被删除要手动删除

4.删除日志构成员

Alterdatabasedroplogfilemember"filename

限制:

a.不能删除最后一个成员

b.在线日志的成员不能删除

c.归档模式下,假如该成员还没归档,则不能删除

d.日志构成员删除后。s上的文件没有被删除,务必自己删除

5.清空日志

Alterdatabaseclear[unarchived]logfile[filename|groupn];〃等价于drop再add

限制:

能够清空日志,不管归档是否非归档,假如归档没完成就要加unarchived,这使得这个日

志没法用来恢复。

6.重命名或者者重新给log分配位置

至!Jmount状态下,然后alterdatabaserenamefile;

日志的配置:

1.日志组的个数:至少要2个日志组,假如alert.log出现checkpointnotcompleted或者

者grouphavenotbeedarchived,就要增加日志组或者者加大日志的大小

Oracle建议为每个日志组配置2个或者者2个以上的成员,只能临时设置一个日志组只

有一个日志成员

2o日志的位置:不一致的日志成员要放在不一致的磁盘上,只要保证一个日志成员可用,

那么

数据库就不可能shutdown,将online日志与arch日志放在不一致的磁盘上,减少Igwr

与arch的争用。

3.Redo与数据文件不要放在一个磁盘,避免dbwn与Igwr的争用,同时避免因磁盘损坏

而导致日志文件与数据文件同时丢失,导致介质失败

4.日志大小的确定:

日志文件最小50k,最大值受到os的限制,不一致日志组的成员能够有不一致的大小,

但是oracle建议所有日志组的大小设置成一样。(同一日志组的成员一定是一样大的,

互为镜象),不一致大小的日志组,通常发生在要改变日志大小的时候,添加几个临时的

日志组做过度,切换日志,然后删除原先的。

5.影响日志配置的因素:

a.日志切换与检查点的频率

b.日志项的总数

c.存储设备的可用空间,比如磁带的大小

Omf来管理日志文件的位置:

Db_create_online_log_dest_n:设置日志存放的位置

1.添力口日志,alterdatabaseaddlogfile;

2.册!I除日志,alterdatabasedroplogfilegroupn;

3.Archivedlog不能使用omf,而要设置参数log_archive_dest_n

Test:

SQL>altersystemset

db_create_online_log_dest_l='G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL';

系统已更换。

SQL>alterdatabaseaddlogfile;

数据库已更换。

SQL>alterdatabasedroplogfilegroup4;

数据库已更换。

日志的状态(v$logst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论