主要由三种文件组成:
1.数据文件
--------------------------------------------------------
表空间最终都是以若干个数据文件的形式存储的。
数据文件中主要包括:
表中的数据、索引数据、 数据字典定义、 数据库对象、 用户定义、
排序时产生的临时数据以及为保证事务重做所必须的数据。
--------------------------------------------------------
操作数据文件必须以sys用户的as sysdba身份连接数据库。
与数据文件相关的数据字典主要包括:
v$datafile,
file$,
dba_data_files,
dba_free_space
dba_temp_files,
v$tempfile
select instance_name from v$instance(查询当前实例名称)
--------------------------------------------------------
查询数据文件的信息
sql>select * from dba_data_files
sql>select * from v$datafile(此数据字典包含文件的动态信息)
一个数据文件只与一个数据库相联系。
数据文件的大小是可以改变的。
可以通过以下语句查询表空间的空间空闲量
sql>select * from dba_free_space
--------------------------------------------------------
修改数据文件的大小
sql>alter database datafile "d:\...\df1.dbf" resize 800m
--------------------------------------------------------
数据库文件的自动扩展特性。 例子:
sql>alter tablespace tbs1 add datafile "d:\...\df2.dbf" size 500m autoextend on next 50m maxsize 1000m
sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend off
sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend on next 30m maxsize unlimited
--------------------------------------------------------
2.控制文件
---------------------------------------------------------
控制文件是一个二进制文件,用来描述数据库的物理结构,
一个数据库只需要一个控制文件, 控制文件的内容包括:
数据库名及数据库唯一标识
数据库创建时间
表空间名字
数据文件和日志文件名字及位置
数据库恢复所需的同步信息,即检查点号
----------------------------------------------------------
控制文件由参数control_files指定,格式如下:
control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl")
参数中各个文件是镜像关系,也就是说,几个文件中只要有一个文件完好,数据库就可以正常运行。
-----------------------------------------------------------
以下语句查询控制文件的信息:
sql>select * from v$controlfile
------------------------------------------------------------
如果控制文件损坏或丢失,数据库将终止并且无法启动,所以,要对控制文件进行镜象,手工镜像步骤如下:
a.关闭数据库
b.复制控制文件
c.修改参数文件,加入新增的控制文件位置描述
d.重新启动数据库
------------------------------------------------------------
另外注意,控制文件中还包含几个服务器参数的设置,如果修改这些参数的值,刚需要重新创建控制文件, 这些参数是:
MAXLOGFILES:最大日志文件个数
MAXLOGMEMBERS:最大日志成员个数
MAXLOGHISTORY:最大历史日志个数
MAXDATAFILES:最大数据文件个数
MAXINSTANCES:最大实例文件个数
所有修改数据库结构的命令都会引起控制文件的改变。
同时出会记录在oracle跟踪文件中, 跟踪文件的名称为alter_SID.log,
路径如下: d:\oracle\product\10.1.0\admin\DB_NAME\bdump\SIDALRT.log(unix是alter_SID.ora)
---------------------------------------------------------
3.重做日志文件(Redo Log Files)
---------------------------------------------------------
日志文件用于记录对数据库的修改信息,对数据库所作的修改信息都被记录在日志中
如果,只是对数据库中的信息进行查询操作,则不会产生日志信息
在Oracle数据库中,日志文件是成组使用的。
日志文件的组织单位叫日志文件组,日志文件组中的日志文件叫日志成员。
日志文件的镜像是保证数据库安全的一种方法 如果日志有镜像,则多个镜像文件中存储的信息是完全相同的
----------------------------------------------------------
每个数据库包含多个日志文件组,
每组日志文件包含一个或多个日志文件;
同一组中的日志文件具有相同的信息,因为同一个日志文件组中的日志成员是镜像关系。
同一组中的日志文件被保存最好保存在不同的物理磁盘中。
----------------------------------------------------------
为了确认系统当前正在使用的日志文件组,可以查询数据字典V$LOG
该数据字典记录了当前日志的使用信息 其中:
V$LOG.GROUP#为日志文件组的编号;
BYTES为日志文件组的大小;
MEMBERS为该组所包含的日志成员数;
STATUS为日志文件组的状态,当其值为CURRENT时,表示该组为系统正在使用的日志文件组
使用以下语句查询日志文件信息:
sql>select * from v$log
相关字段说明如下:
GROUP#:日志文件组号
THREAD#:日志文件线程号,一般为1,双机容时为2
SEQUENCE#:日志序列号
BYTES:日志文件大小
MEMBERS:该组的日志成员个数
ARC:该组日志信息是否已经完成归档
STATUS:该组状态(CURRENT:表示当前正在使用的组; NACTIVE:表示非活动组;ACTIVE:表示归档未完成)
FIRST_CHANGE#:系统改变号SCN,也叫检查点号
FIRST_TIME:系统改变时间
-----------------------------------------------------------
Oracle默认为每个日志文件组包含一个日志成员,也就是说,没有为日志文件进行镜像。
-----------------------------------------------------------
数据库管理员也可以使用ALTER SYSTEM命令进行强制的日志切换。
使用ALTER SYSTEM命令进行日志切换的形式如下:
ALTER SYSTEM SWITCH LOGFILE;
------------------------------------------------------------
在Oracle数据库中,数据库的运行模式有两种,
一种是归档模式(ARCHIVELOG),
另一种是非归档模式(NOARCHIVELOG)
数据库运行在非归档模式时,如果发生日志切换,则日志信息直接被覆盖。
而当数据库以归档模式运行时,如果发生日志切换,且需要覆盖已经存的日志信息,
则系统将启用ARCH进程将被要覆盖的日志信息保存到磁盘或磁带上形成归档日志。
因此,在非归档模式下运行的数据库,只包含历史日志,而没有归档日志。
要确认数据库的归档方式,可以查询数据字典v$database:
sql>select log_mode from v$database
要了解归档日志的信息,可以查询数据字典v$archived_log
sql>select log_mode from v$archived_log
要将数据库改为归档模式:
1..alter database archivelog
2.设置初始化参数LOG_ARCHIVE_START=TRUE
3.设置归档文件目标存储路径 LOG_ARCHIVE_DEST=C:\ORA\ARCHIVE
4.设置归档文件命名格式参数 LOG_ARCHIVE_FORMAT="ORCK%T%S.ARC"。
这个格式中的
%S表示日志序列号,自动左边补零;
%s表示日志序列号,自动左边不补零;
%T表示日志线程号,左边补零;
%t表示日志线程号不补零。
5..重新启动数据库
-------------------------------------------------------------
4.参数文件
-------------------------------------------------------------
两个重要的参数文件pfile,spfile
Pfile是在 oracle base\oracle_home\admin\<sid>\pfile目录下的init.ora文件,
是一个可编辑的参数文件,实际的参数文件会在init.ora文件的后面添加数字作为时间戳。
Pfile参数文件的具体内容包括: 数据库作业队列的最大数, 实例标识, 安全与审计, 数据库标识, 数据块大小, 数据文件最大数, 控制文件路径, 内存结构。
Spfile参数文件是用于服务器端且在数据库启动时默认使用的二进制参数文件,是不可编辑的
Spfile在oracle base\oracle_home\dbs目录下,文件名为spfile<sid>.ora
Pfile和spfile之间的关系 都是数据库启动必不可少的参数
开始创建数据库时,不论是手工创建还是使用向导创建,都必须使用pfile参数。一旦数据库创建完成后,必须通过pfile来创建spfile