Oracle 10g 体系结构
1. 用户 通过 例程 访问 数据库 的 (即:当用户连接到数据库并使用数据库时,实际上是连接到该数据库的例程,通过例程(instance)来连接、使用数据库。所以,例程是用户和数据库之间的一个中间层)。
2. 数据库运行时,如果对数据库进行了修改,则产生 重做记录,重做记录 首先被保存在内存中的 重做高速日志缓存区 中。当满足条件时,LGWR进程就将 重做记录 写入到 重做日志文件 。当发生重做日志切换时,ARCH进程再将 重做日志文件 中的数据写入到 归档日志文件 中。
3. Nomount (未加载数据库状态): 启动例程,oracle会打开参数文件(spfile),但并没有加载数据库。
Mount (加载数据库状态): 当加载数据库时,oracle会根据参数文件中指定的控制文件打开控制文件,是数据库处于mount状态。
Open (打开数据库状态): 当打开数据库时,oracle会根据控制文件中的信息,打开所有 数据文件 和 重做日志文件 。
4. Oracle数据库的逻辑存储结构:表空间(tablespace)、段(segment)、区(extent)、数据块(datablock)
5. 例:查询SCOTT使用的数据段在哪个表空间、有多大、有几个区,可用下面语句查询数据字典USER_EXTENTS。
Sql>connect scott/tiger;
Sql>select segment_name,tablespace_name,bytes,blocks from user_extents;
6. 例:查询SCOTT使用的索引信息,可用下面语句查询数据字典USER_INDEXS。
Sql>scott/tiger
Sql>select index_name,table_owner,table_name,tablespace_name from user_indexs;
7. 例:查询是否使用了自动撤销管理功能
Sql>select value from v$parameter where name=’undo_management’;
8. ARCH(归档进程)
该进程负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志文件中。注:只有数据库处在归档模式(ARCHIVELOG)时,ARCH进程才会被启动。
要启动ARCH进程,需要将初始化参数LOG_ARCHIVE_START设置为TRUE。如果不设为TRUE,则即使数据库运行在归档模式下,ARCH进程也不会启动,也就不能进行自动归档,需要手工归档。 (补充,见后面附一)
9. 数据字典 :其所有者为sys用户,存储System表空间中。任何用户(包括DBA)都不能对数据字典的内容进行修改。所有用户只能在数据字典上进行查询(Select)操作。
[@more@]第八章 第九章 管理控制文件
① 多路复用控制文件
1. 修改初始化参数control_files 。
因为oracle是通过初始化参数control_files定位并打开控制文件的,所以,为了多路复用控制文件,必须利用Alter SYSTEM语句修改该初始化参数,以便添加新的控制文件的名称。 以sys用户、sysdba身份登录SQL*PLUS(如conn sys/sys as sysdba),执行以下语句:
Sql〉Alter system set control_files=
‘c:oracleproduct10.1.0oradataoamiscontrol01.ctl’,
‘c:oracleproduct10.1.0oradataoamiscontrol02.ctl’,
‘c:oracleproduct10.1.0oradataoamiscontrol03.ctl’,
‘e:control04.ctl’ scope=spfile ;
系统已更改。
其中,前面三个控制文件是原有的控制文件,而e:control04.ctl是新添加的、放在不同磁盘上的控制文件,目前还不存在。
2. 退出SQL*PLUS。
3. 关闭数据库。
4. 打开控制面板上的‘服务’。
5. 停止与Oamis数据库有关的所有服务。即OracleServerOAMISSID服务和OracleDBConsoleoamissid服务。
6. 复制现有的控制文件。为确保所有控制文件互为镜像,完全相同,必须在关闭数据库的情况下,复制一个现有的控制文件,如 control01.ctl ,形成新的控制文件 e:control04.ctl。
7. 重新启动数据库。打开控制面板的“服务”窗口,启动与OAMIS数据库有关的所有服务,即OracleServerOAMISSID服务和OracleDBConsoleoamissid服务。
8. 使用数据库。
② 备份/恢复 控制文件
备份了控制文件后,当保存控制文件的硬盘损坏了,只需要在初始化文件中将control_files参数设置成指向备份的控制文件,然后就可以启动数据库了;如果硬盘没有损坏,则只需要将备份的控制文件复制到被损坏的控制文件的位置上,并将文件名称该成原来的控制文件名称,然后就可以重新启动数据库了。
备份控制文件需要使用Alter Database Backup Controlfile语句。有两种方法可以进行控制文件的备份操作。
★ 将控制文件备份为二进制文件
将控制文件备份为二进制文件,实际上是在数据库运行期间原封不动的复制当前的控制文件。如:
SQL〉alter database backup controlfile to ‘e:control.bkp’ 。
此时,在E盘下产生一个备份的控制文件 control.Bkp 。
★ 将控制文件备份为文本文件,又称为跟踪备份(backup to trace)。
Sql>alter database backup controlfile to trace ;
数据库已更改。
跟踪备份被存放在由初始化参数USER_DUMP_DEST指定的目录中。
◆ 创建新的控制文件
2. 制作一个包含数据库的所有数据文件和重做日志文件的列表。
查询重做日志文件
Sql>select member from v$logfile ;
查询数据文件
Sql>select name from v$datafile ;
查询控制文件
Sql>select name from v$controlfile ;
3. 关闭数据库 。
SQL〉shutdown immediate
4. 将数据库中所有 数据文件、重做日志文件、spfile参数文件备份到其他地方。
5. 启动一个新例程,但是不要装载或打开数据库。
SQL〉startup nomount
6. 使用 Create Controlfile 语句为数据库创建一个新的控制文件。
Create controlfile reuse database “oamis” noresetlogs noarchivelog
Maxlogfiles 16
Maxlogmembers 3
Maxdatafiles 100
Maxinstances 8
Maxloghistory 454
Logfile
Group 1 ‘d:oracle10.2.0oradataredo01.log’ size 10m,
Group 2 ‘d:oracle10.2.0oradataredo02.log’ size 10m,
Group 3 ‘d:oracle10.2.0oradataredo03.log’ size 10m
-- standby logfile
Datafile
‘d:oracle10.2.0oradatasystem01.dbf’,
‘d:oracle10.2.0oradataundotbs01.dbf’,
‘d:oracle10.2.0oradatasysaux01.dbf’,
‘d:oracle10.2.0oradatausers01.dbf’,
‘d:oracle10.2.0oradataexample01.dbf’
Character set zhs16gbk ;
可见,在创建控制文件时,需要指定数据文件和重做日志文件的信息。
注:Create Controlfile 语句具有潜在的破坏数据文件和联机重做日志文件的风险。省略文件名会引起文件中数据的丢失,或者失去访问完整数据库的能力。
7. 在离线存储设备上存储新控制文件的备份。
8. 编辑Contril_files初始化参数。
9. 以下面一种方法打开数据库。
SQL>Alter database open ;
第十章 管理表空间 (table space)
表空间在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。 从物理上说,数据库的数据被保存在数据文件中,而从逻辑上说,数据库的数据是被保存在表空间中。
比喻: 将数据库(database)比作一个存放资料的柜子,则柜子中的抽屉就是表空间(table space),抽屉中的文件夹就是数据文件(data file),文件夹中的纸就是段,记录在纸上的文字就是数据。 属于不同应用的数据应当被放置在不同的表空间中,就好像不同类别的资料应该放在不同的抽屉中一样。
与表空间对应的物理结构是 数据文件 (datafile)
任何方案对象(如表、索引)都被存储在表空间的数据文件中。
1. 三个默认表空间 : SYSTEM、SYSAUX、TEMP。
2. 创建大文件表空间(大文件表空间只能放置一个数据文件或临时文件):
Create bigfile tablespace bigfilespace01
Datafile ‘d:oradataoamisbigfilespace01.dbf’
Size 25G ;
3. 创建小文件表空间
Create [smallfile] tablespace samllfilespace01
Datafile ‘d:oracle10.2.0oradatasmallfilespace01.dbf’
Size 20G;
4. 扩展表空间:
法一:添加数据文件
SQL>alter tablespace xxzqb
Add datafile ‘d:oracleproduct10.2.0oradataoamisxxzqb02.dbf’
Size 50M ;
法二:改变数据文件的大小
SQL〉alter database
Datafile ‘d:oracleproduct10.2.0oradataoamisxxzqb02.dbf’
Resize 80M ;
法三: 允许数据文件自动扩展
SQL〉alter database
Datafile ‘d:oracleproduct10.2.0oradataoamisxxzqb02.dbf’
Autoextend on next 1M maxsize 20M ;
即当表空间被填满以后,该数据文件会自动扩展,每次扩展的尺寸为1M,最大尺寸为20M。
5. 修改属性、状态
◆将表空间xxzqb转变为脱机状态(OFFLINE)
SQL〉alter tablespace xxzqb offline ;
◆将表空间xxzqb转变为联机(ONLINE)
SQL〉alter tablespace xxzqb online ;
◆使表空间可读写(或只读)
SQL〉alter tablespace xxzqb READ WRITE (READ ONLY);
◆修改表空间的名称 (10g以前不能实现)
SQL〉Alter tablespace xxzqb rename to xxzqb_new ;
6. 10g默认表空间
10g默认表空间是SYSTEM表空间,默认临时表空间是TEMP表空间。
◆ 设置数据库默认表空间
SQL〉Alter Database Default tablespace xxzqb ;
◆ 设置数据库默认临时表空间
SQL〉Alter Database Default Temporary Tablespace xxzqb_temp ;
7. 删除表空间
在删除表空间之前要先使表空间脱机,再删除。
SQL〉Drop Tablespace xxzqb Including Contents ;
这条语句只是删除数据字典中的表空间信息,而其相关的数据文件仍存在磁盘上,要删除表空间及其相关数据文件应该:
SQL〉Drop Tablespace xxzqb Including Contents and DataFiles ;
8. 查询表空间信息
Sql>select * from dba_tablespaces;
第十一章 管理数据文件
数据文件是用来存储数据库中的数据的文件,依赖于表空间,不能独立存在,所以DBA在创建数据文件时,必须指明该数据文件属于哪一个表空间。
数据文件的大小实际上代表了该数据文件在磁盘上的可用空间。对于新创建的表空间和数据文件,其中没有数据,但存入数据后就会占用可用空间。当数据文件被写满后,就不能再向其中写入数据了,也就不能向表空间写数据了。这时,DBA要增加新的可用空间,如给该表空间增加新的空白数据文件,或使数据文件可以自动扩展空间。
1. 创建数据文件
实际上是向表空间添加新的数据文件。
在OEM中创建和添加数据文件的出发点和过程有所不同。在OEM中,创建数据文件是在“数据文件”页中完成的,添加数据文件是在“表空间”页中完成的。但在命令行方式下,创建数据文件和添加数据文件是一样的。
◆ 向表空间xxzqb添加一个大小为10MB的新数据文件。
SQL>Alter TableSpace xxzqb
Add Datafile ‘d:oracleproduct10.2.0oamisxxzqb_1.dbf’
Size 10M ;
◆ 向临时表空间temp_xxzqb中添加一个大小为1M的新临时数据文件
SQL〉Alter Tablespace temp_xxzqb
Add Tempfile‘D:oracleproduct10.2.0oradataoamistemp_xxzqb_1.dbf’
注:添加新的数据文件时,如果存在同名的文件,则alter tablespace语句将失败。如果要覆盖同名的操作系统文件,必须在alter tablespace语句中显式的指定Reuse子句。
2. 改变数据文件的大小
◆ 法一:设置数据文件为自动增长
◆ 法二:手工改变数据文件的大小
★ 在创建表空间xxzqb时将数据文件xxzqb_1.dbf设置为自动增长方式
SQL〉Create SmallFile TableSpace xxzqb
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_1.dbf’
Size 10M
Autoextend On
Next 5M
Maxsize 40M
其中,Next参数指定每次自动增长的大小;Maxsize参数指定的是数据文件的最大大小
★ 在表空间xxzqb创建以后再添加一个新的自动增长方式的数据文件
SQL〉Alter TableSpace xxzqb
Add datafile ‘D:oracleproduct10.2.0oradataoamisxxzqb_2.dbf’
Size 10M
Autoextend On
Next 10K
Maxsize 40M
★ 如果数据文件已经创建,则可以用Alter Database 语句将他的某个数据文件设置为自动增长方式
SQL〉Alter DataBase
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_3.dbf’
Autotend On
Next 2M
Maxsize 40M
★ 要取消已有数据文件的自动增长方式,同样可以用Alter Database语句
SQL〉Alter DataBase
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_4.dbf’
AutoSize 20M
3. 手工改变数据文件的大小
将数据文件xxzqb_5.dbf增大到8M:
SQL〉Alter DataBase
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_5.dbf’
Resize 8M
4. 使数据文件联机或脱机
◆ 数据库处于Archivelog模式中(必须的),使数据文件联机或脱机
SQL〉Alter DataBase
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_1.dbf’
Online / Offline
◆ 数据库处于NoArchivelog模式中,使数据库脱机
SQL〉Alter DataBase
DataFile ‘D:oracleproduct10.2.0oradataoamisxxzqb_1.dbf’
Offlione Drop
注意:这会使数据文件脱机并立即删除它,所以,可能导致丢失数据文件。这种方法一般只用于临时表空间的临时数据文件。并且,如果没有进行介质恢复,就不允许上述数据文件联机。
例:
Sql>alter database
Datafile ‘d:oracle10.2.0oradatamydata02.dbf’
Online ;
结果为:
Alter database
*
第1行出现错误:
ORA-01113:文件11需要介质恢复
ORA-01110:数据文件11:’d:oracle10.2.0oradatamydata02.dbf’
5. 改变数据文件的位置和名称
◆ 同一表空间的数据文件的重命名
Step1:使表空间脱机
SQL〉Alter TableSpace xxzqb Offline Normal;
表空间已更改。
Step2: 退出SQL*PLUS 。
Step3:停止数据库服务。(控制面板---“服务”)
Step4:在操作系统中重新命名数据文件。如将xxzqb_1.dbf--àxxzqb_01.dbf,
Xxzqb_2.dbf--àxxzqb_02.dbf
Step5: 启动数据库服务
Step6: 再次启动SQL*PLUS 。
Step7:使用带有Rename Datafile子句的Alter Tablespace语句在数据库内部修改数据文件的名称。如:
SQL〉Alter TableSpace xxzqb
Rename DataFile
‘D:oracleproduct10.2.0oradataoamisxxzqb_1.dbf’,
‘D:oracleproduct10.2.0oradataoamisxxzqb_2.dbf’
To
‘D:oracleproduct10.2.0oradataoamisxxzqb_01.dbf’,
‘D:oracleproduct10.2.0oradataoamisxxzqb_02.dbf’
表空间已更改。
Step8:使表空间联机
SQL〉Alter TableSpace xxzqb Online ;
表空间已更改 。
◆ 同一表空间的数据文件的重定位
Step1:启动SQL*PLUS ,使表空间脱机
使表空间脱机,是为了关闭该表空间所有的数据文件,以便在停止数据库服务时不会造成数据出错问题。
SQL〉Alter TableSpace xxzqb Offline Normal;
Step2:退出SQL*PLUS 。
Step3:停止数据库服务
Step4:在操作系统中重新定位数据文件,将属于xxzqb表空间的数据文件xxzqb_1.dbf和xxzqb_2.dbf重新定位到 e:xxzqb_01.dbf和 e:xxzqb_02.dbf
Step5:启动数据库服务
Step6:再次启动SQL*PLUS 。
Step7:使用带有Rename Datafile子句的Alter Tablespace语句在数据库内部修改数据文件的名称 。如:
SQL〉Alter TableSpace xxzqb
Rename DataFile
‘D:oracleproduct10.2.0oradataoamisxxzqb_1.dbf’,
‘D:oracleproduct10.2.0oradataoamisxxzqb_2.dbf’
To
‘E:xxzqb_01.dbf’,
‘E:xxzqb_02.dbf’
Step8:使表空间联机
Sql>alter tablespace xxzqb online ;
◆ 多个表空间的数据文件的重定位和重命名
同时改变分别属于不同表空间的数据文件的位置或名称的方法或步骤如下:
Step1:启动SQL*PLUS,使各个相关的表空间脱机
SQL〉Alter TableSpace xxzqb01 offline normal ;
SQL〉Alter TableSpace xxzqb02 offline normal ;
Step2:停止数据库服务。(控制面板-----“服务”)
Step3:在操作系统中重命名数据文件,将属于xxzqb01表空间的数据文件xxzqb01_1.dbf重命名为xxzqb01_01.dbf,将属于xxzqb02表空间的数据文件xxzqb02_1.dbf重命名为xxzqb02_01.dbf。
Step4:启动数据库服务服务。(控制面板-----“服务”)
Step5:启动SQL*PLUS,使用带有Rename File子句的Alter Database语句在数据库内部修改数据文件的名称。
SQL〉Alter DataBase
Rename File
‘D:oracleproduct10.2.0oradataoamisxxzqb01_1.dbf’,
‘D:oracleproduct10.2.0oradataoamisxxzqb02_1.dbf’
To
‘D:oracleproduct10.2.0oradataoamisxxzqb01_01.dbf’
‘D:oracleproduct10.2.0oradataoamisxxzqb02_01.dbf’
Step6:使表空间联机
SQL〉Alter TableSpace xxzqb01 online ;
SQL〉Alter TableSpace xxzqb02 online ;
6. 查询数据文件信息
要获取数据库中所有数据文件的基本信息,可以查询DBA_DATA_FILES视图。如:
SQL〉Select * from DBA_DATA_FILES
Where TableSpace_Name=‘xxzqb’;
7. 查询临时数据文件的信息。
Sql>select * from dba_temp_files ;
第十二章 管理重做日志文件 (redo log file)
重做日志文件:主要以重做记录的形式记录、保存对数据库所作的修改。(如果只是查询,则不会产生重做记录信息)。
修改初始化参数值:
Sql>alter system
Set 参数名=参数值
1. 如何写入重做日志文件
LGWR进程以循环的方式填写重做日志文件。当前的联机重做日志文件填满时,LGWR开始向下一个联机重做日志文件填写。
★ 如果数据库处于“非归档日志模式”(NoArchivelog),则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中。
★ 如果数据库处于“归档日志模式”(Archivelog),则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中,并且归档进程ARCH已经将该重做日志文件进行了归档。
2. 重做日志的归档
归档就是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的方式,保存到指定位置。保存下来的重做日志文件的集合被称为归档重做日志文件,复制的过程被称为归档。
只有在处于归档日志模式的数据库中,才会对重做日志文件进行归档。
这些归档日志是数据库成功恢复的关键。如果部分数据库丢失或被损坏了,通常需要几个归档日志文件来修复数据库。归档日志文件必须按照顺序再应用到数据库上。如果其中一个归档日志文件丢失了,其他的归档日志文件就无法使用。
3. 数据库的归档模式
★ 非归档日志模式 。在该模式下,Oracle将不会对重做日志文件进行归档操作。即,当发生日志切换时,LGWR进程将直接写入下一个重做日志文件,覆盖其中的重做记录。------ 在备份这样的数据库时,不仅要备份数据文件,还要备份日志文件。
★ 归档日志模式 。在该模式下,Oracle将对重做日志文件进行归档操作。即,当发生日志切换时,LGWR进程先要等待归档进程(ARCH)将下一个重做日志文件归档完毕之后,才写入该重做日志文件,覆盖其中的重做记录。
4. 查看数据库的归档模式
Sql>select log_mode from v$database ; 或者
Sql>archive log list ;
5. 改变数据库的归档模式 (大略步骤)
Setp1:sql>shutdown immediate ;
Step2:sql>startup mount ;
Step3:sql>alter database archivelog ;
Step4:sql>alter database open ;
第十三章 创建和删除数据库
第十四章 启动和关闭数据库
第十五章 管理网络
第十六章 管理表
在Oracle数据库中,每个用户都拥有自己的方案,方案名称与用户名称相同(但方案与用户是完全不同的概念)。在默认情况下,所有用户所创建的对象都位于自己的方案中,即Oracle用方案的方法将数据库按用户进行划分。
用户可以直接操作的方案对象(简称对象)是表、索引、视图。
Oracle提供了5种约束条件:
1. Null | Not Null (空或非空)
2. Unique (唯一性,但可为空)
3. Check (检查是否满足指定的条件)
4. Primary Key(主键,且不允许为空)
5. Foreign Key(外键)
举例:
Create table deptment
(
Deptid number(9) not null, (非空)
Deptno char(2) default 01 not null, (默认值为01 ,且非空)
Name varchar2(20),
Address varchar2(30),
Constraint pk_deptid primary key (deptid) validate, (设定deptid列为主键)
Constraint uniq_name unique(name) validate,(设定name列唯一性)
Constraint chk_address check (address in (‘1号楼’,’2号楼’,’3号楼’,’4号楼’,)) validate
给address列设定条件,必须为(‘1号楼’,’2
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8676220/viewspace-1003079/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8676220/viewspace-1003079/