我的oracle笔记第一部分
笔记(一)
物理备份和逻辑备份是DBA通常使用的两种备份类型。物理备份包括将物理数据库文件拷贝到备份目的地,而逻辑备份使用oracle的实用工具Export,利用SQL语句读出数据库数据,并在操
作系统级将数据和定义存入二进制文件。
*******************
物理备份有2种选择
1、在使用shutdown normal命令完全关闭数据库之后备份数据库文件,这称为脱机备份或者冷备份
2、在数据库打开并操作时,进行数据库的物理备份。称为联机备份和热备份
***************
脱机(冷)备份
备份过程
1\准备备份
1)在操作系统级创建一个文本文件,标志备份开始
2) 禁止登陆到应用程序
3)提供数据库不能使用的警告信息
4)使用shutdown normal 或shutdown immediate关闭数据库
2、进行备份
1)从前一天的磁盘区域中删除前一天的归档重做日志文件
2)把当天的归档日志移至前一天
3)数据文件、控制文件和联机日志文件映像拷贝,把它们拷贝到备份磁盘处
3、结束过程
1)启动数据库
2)允许对应用程序登陆
3)将数据库映像(数据文件、控制文件、联机日志文件和归档日志文件)拷贝到磁带上
4)通过删除指示备份开始的文件来结束备份。
联机备份:
联机备份和脱机备份不同,脱机备份备份的是整个数据库,联机备份备份的是表空间
联机备份比脱机备份增加了2个步骤
1)alter tablespace users begin backup
2)alter tablespace users end backup
*************************************
2005-06-04 11:29
脱机备份:数据库置于offline状态,需要备份下列文件:
所有数据文件
所有控制文件
所有联机重做日志文件
init.ora文件和spfile.ora文件(可选)
进行脱机备份数据库一定要正常完全关闭
***************************************
2005-06-04 11:32
联机备份:需要备份如下文件
所有数据文件
所有归档的重做日志文件
一个控制文件,通过alter database命令进行
*****************************************
2005-06-04 11:34
导出:
分为四种功能级别:FULL,TABLESPACE,USER和table模式
****************************************
2005-06-04 11:37
脱机备份:是数据库文件的物理备份 ,通常在数据库通过一个shutdown normal或shutdown immediate命令正常关闭后进行.当数据库关闭时,其使用的各个文件都可以进行备份.这些文件构成
一个数据库关闭时的一个完整影像.
要备份如下文件:
所有数据文件
所有控制文件
所有联机重做日志
可以选择地备份数据库初始化参数文件,特别是将备份文件用作灾难恢复过程的基础时.
****************************************
2005-06-04 12:48
在9i中服务器默认的是非归档模式,要更改为归档模式
sql>conn / as sysdba
sql>startup mount
sql>alter database archivelog
sql>alter database open
sql>archive log start
如果归档重做日志文件的目标目录超出其空间,则arch会停止处理联机重做日志数据,数据库也会停止自己,这种情况下需要增加空间或者备份这些归档的重做日志文件并从目录中清除这些文件
.****************************************
2005-06-04 13:01
在数据库运行时可以通过v$parameter动态性能视图查询参数设置.
SQL> select name ,value from v$parameter where name like 'log_archive%';
NAME VALUE
---------------------------------------------------------------- -----------------------------------
log_archive_start FALSE
log_archive_dest
log_archive_duplex_dest
log_archive_dest_1
log_archive_dest_2
log_archive_dest_3
log_archive_dest_4
log_archive_dest_5
log_archive_dest_6
log_archive_dest_7
log_archive_dest_8
NAME VALUE
---------------------------------------------------------------- -----------------------------------
log_archive_dest_9
log_archive_dest_10
log_archive_dest_state_1 enable
log_archive_dest_state_2 enable
log_archive_dest_state_3 enable
log_archive_dest_state_4 enable
log_archive_dest_state_5 enable
log_archive_dest_state_6 enable
log_archive_dest_state_7 enable
log_archive_dest_state_8 enable
log_archive_dest_state_9 enable
NAME VALUE
---------------------------------------------------------------- -----------------------------------
log_archive_dest_state_10 enable
log_archive_max_processes 2
log_archive_min_succeed_dest 1
log_archive_trace 0
log_archive_format ARC%S.%T
已选择27行。
.****************************************
2005-06-04 13:09
热备份在工作期间也可以进行,但应该安排在用户活动最少的时间里进行为好.原因是:
1、热备份要使用操作系统命令来备份物理文件,而这些命令要使用系统中大多数I/O操作
2、当表空间备份时,事务写入归档的重做日志文件的模式会改变,当将表空间置为“hot backup”模式时,DBWR进程将缓冲区高速缓存中所有属于该表空间的文件的所有数据库写回到磁盘
中。当将块读回到内存并进行改变时,在进行第一次改变时,他们会被拷贝到日志缓冲区中。只要它们让停留在缓冲区高速缓存中,它们就不会被重新拷贝到联机重做日志文件中。这通常
要使用归档重做日至文件目标目录中的大量空间。
****************************************
2005-06-04 13:17
热备份的命令文件包括三个部分:
1、逐个表空间地备份数据文件,包括:
1)设置表空间为备份状态
2)备份表空间的数据文件
3)将表空间恢复到正常状态
2、备份归档重做日志文件,包括:
1)记录归档重做日志目标目录中的文件
2)备份归档重做日志文件,然后(有选择地)删除或压缩它们。
****************************************
2005-06-07 13:51
当创建一个数据库时,把数据库分成叫作表空间的多个逻辑区段,system表空间是创建的第一个表空间。
创建一个表空间时,会相应地创建数据文件以存储数据。
一个数据库可以用多个用户,其中每个用户都有一个SCHEMA。每个用户模式是表和索引等数据库逻辑对象的集合。
当创建一个数据库对象时,可以通过用户默认值或特殊指令将其赋予一个表空间,这样就会在该表空间中创建一个一个段已存储与该对象相关的数据。分配给这个段的空间会一直保留着,
直到该段被删除、人工收缩或截断。
一个段有一些称作(区间,一组连续的oracle块)的区段组成。一旦现有的区间不能再存储新数据,这个段就要获取另一个区间,以支持将附加的数据插入到对象中。
经常使用的段类型如下:
table
index
rollback
temporary
partition
cluster
****************************************
2005-06-07 14:16
PCTINCREASE 从第三个区间开始呈几何式增长
****************************************
2005-06-07 15:21
从非归档模式更改为归档模式(9i在windows平台下):
1、查看数据库的模式
SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 7 15:19:17 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn as sysdba
已连接。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 f:\oracle\ora92\RDBMS
最早的概要日志序列 1
当前日志序列 2
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORA9I NOARCHIVELOG
从上可以看到数据库为非归档模式
2、更改参数文件
SQL> alter system set log_archive_start=true scope=spfile;
系统已更改。
3、关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4、装载数据库
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
5、修改模式
SQL> alter database archivelog;
数据库已更改。
6、打开数据库
SQL> alter database open;
数据库已更改。
7、查看模式:
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 f:\oracle\ora92\RDBMS
最早的概要日志序列 1
下一个存档日志序列 2
当前日志序列 2
已经改为归档模式了。
****************************************
2005-06-07 16:43
局部管理表空间:
创建表空间
SQL> create tablespace codes_tables
2 datafile 'F:\oracle\oradata\ora9i\codes_tables.dbf' size 10m
3 extent management local uniform size 256k
4 /
表空间已创建。
在创建表空间命令中如果指定了LOCAL子句,就不能指定default storage子句、minextents或temporary。如果使用create temporary tablespace命令创建表空间,可以指定extent
management local。
***************************************
2005-06-07 16:55
表空间管理分local和数据字典两种方式。
***************************************
2005-06-07 17:25
表段,通常称为数据段,存储着与表或簇有关的行数据。每个数据段还有一个头部,用作段的空间目录。
可以使用alter table命令改变现有表的的大多数存储参数。可以使用alter table 命令的move选项改变表所在的标空间
***************************************
2005-06-07 17:28
临时段用于在进行排旬操作期间存储数据,每一个用户都有一个临时表空间,该表空间在创建用户是由create user指定,或在改变帐户时用alter user指定。
当创建一个数据库时,可以为所有的用户指定一个默认临时表空间,对一个现有的数据库,可以通过alter database命令改变默认表空间,如
alter database default temporary tablespace temp;
指定一个表空间用于临时表空间
alter tablespace temp tempprorary;
使temp表空间成为永久:
alter tablespace temp permanent;
***************************************
2005-06-07 17:28
空闲区间是表空间中相邻的自由块的集合.当一个段被删除时,它的区间被释放,并标记为"空闲".这些表空间并不是总能与相邻的空闲区间合并,它们之间的界线会一直存在着,假设表空间的
pctincrease值为非零,smon后台进程将会周期性地合并相邻的空闲区间
.
***************************************
2005-06-07 17:47
使用alter tablespace tablename coalesce ;来强制表空间合并成更高大的空闲空间.
.
***************************************
2005-06-07 19:30
确定数据文件的大小
可以通过alter database 或alter tablespace来重新确定数据文件的大小。
SQL> alter database
2 datafile 'f:\oracle\oradata\ora9i\codes_tables.dbf' resize 120m;
数据库已更改。
***************************************
2005-06-07 19:37
数据文件自动扩展
创建数据文件时,可指定允许oracle自动扩展的参数,可以指定三个参数:
1、autoextend:该标志具有ON、OFF两种状态表明是否允许文件自动扩展,如果设置为OFF,其他指定大小的参数将被设置为零。
2、next size:当需要更多空间时,分配给数据文件的磁盘空间区域。可以分别以KB或MB指定空间大小值。
3、maxsize size:允许数据文件可扩展到的最大尺寸。
如果指定为maxsize unlimited,则数据文件的最大扩展尺寸以文件所在的磁盘的可用空间为限。
SQL> create tablespace data
2 datafile 'f:\oracle\oradata\ora9i\data01.dbf' size 100m
3 autoextend on
4 next 10m
5 maxsize 250m;
可以通过alter tablespace命令来添加一个新的数据文件,从而使表空间具有自动扩展能力。
SQL> alter tablespace data
2 add datafile 'f:\oracle\oradata\ora9i\data02.dbf'
3 size 50m
4 autoextend on
5 maxsize 100m;
***************************************
2005-06-07 20:15
移动数据文件的方法有2种,通过alter database命令或alter tablespace命令。alter tablespace方法仅用于其表空间不包括system。alter database方法可用于所有数据文件。
***************************************
2005-06-07 20:25
alter database方法,数据文件在实例关闭后移动,步骤如下:
1、关闭实例
2、使用操作系统命令移动数据文件
3、安装数据库并使用alter database命令改变数据库中的文件名
4、启动实例
5、在验证改变后,执行数据库的文件系统备份
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
拷贝数据文件到另一个位置。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database rename file
2 'f:\oracle\oradata\ora9i\data02.dbf' to
3 'f:\oracle\oradata\data02.dbf';
数据库已更改。
SQL> alter database open;
数据库已更改。
*数据库启动正常,在拷贝的过程中可以用拷贝的方法,在验证正常后可以将原文件删除。
***************************************
2005-06-07 20:46
alter tablespace方法移动数据文件时,数据文件可以在实例运行期间移动.步骤如下:
1、设置表空间为脱机状态
SQL> alter tablespace data offline ;
表空间已更改。
2、使用操作系统命令移动文件
SQL> host copy f:\oracle\oradata\ora9i\data02.dbf f:\oracle\oradata\data02.dbf;
3、使用alter tablespace命令在数据库中更改文件名
SQL> alter tablespace data rename datafile
2 'f:\oracle\oradata\ora9i\data02.dbf' to
3 'f:\oracle\oradata\data02.dbf';
4、重新设置表空间为联机状态
SQL> alter tablespace data online;
***************************************
2005-06-07 21:07
移动联机重做日志文件,可以在数据库关闭时进行移动,并且可以通过alter database命令在数据库中重新命名。
1、关闭数据库,移动联机重做日志文件,然后安装数据库,使用alter database 命令来通知数据库联机重做日志文件的新位置,然后就可以用新位置上的日志文件打开实例。
SQL> shutdown immediate
拷贝文件到新的位置
装载数据库:SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database rename file
2 'F:\ORACLE\ORADATA\ORA9I\REDO01.LOG' to
3 'F:\ORACLE\ORADATA\REDO01.LOG';
数据库已更改。
SQL> alter database open;
***************************************
2005-06-07 21:58
移动控制文件,控制文件的位置在初始化参数文件中指定,若要移动控制文件,必须关闭实例,移动控制文件,编辑初始化文件,然后再重新启动实例。
***************************************
2005-06-07 22:05
重建索引,使用alter index intex_name rebulid 来重建索引。
***************************************
2005-06-07 23:01
oracele instance是指数据库的内存和相关的后台进程,相当于数据库的心脏,也可以说是数据库的超级引擎,也就是数据库大大小小的事情都与它有关系。
有2部分组成:SGA和后台进程
***************************************
2005-06-07 23:05
SGA,当激活数据库时,系统会在内存中先规划一块固定区域,用来存放每位使用者需要的资料和oracle9i运行时所必备的系统信息,称为系统全局区。
在oracle 9i中可以动态配置内存的大小,称为 dynamic SGA。
***************************************
2005-06-07 23:09
SGA大小由初始化参数中的SGA_MAX_SIZE大小来设定。
SGA_MAX_SIZE,设置SGA总大小
DB_CACHE_SIZE,设定由标准区块组成的database buffer cache 大小
LOG_BUFFER,设定LOG BUFFER大小
SHARED_POOL_SIZE,设定shared pool 大小
LARGE_POOL_SIZE,设定large pool 大小,默认是0
***************************************
2005-06-08 8:37
LRU (least recently used):基本概念是当内存剩余可用空间不足时,缓冲区尽可能保留经常使用的资料,也就是说优先清除掉不长使用的资料,并释放其空间。
***************************************
2005-06-08 9:08
在oracle8i中数据缓存区有2个参数
DB_BLOCK_SIZE,数据库单位大小
DB_BLOCK_BUFFERS,缓冲区数目
在9i中
DB_BLOCK_SIZE
DB_CACHE_SIZE
***************************************
2005-06-08 9:21
重做日志缓冲区 :由LOG_BUFFER参数设置此缓冲区容量大小
***************************************
2005-06-08 9:23
共享区由library cache 和dictionary cache组成
library cache存放最近使用过的sql语句
dictionary存放与系统有关的信息,最近使用过的数据字典。
由参数shared_pool_size参数来决定,在32位操作系统中设为8M,在64位操作系统中为64M
***************************************
2005-06-08 9:31
LOG SWITCH:当当前的联机日志文件被填满时,会切换到下一个联机日志文件,这个日志文件的切换动作称为 LOG SWITCH.
***************************************
2005-06-08 9:33
oracle9i的数据库结构
逻辑上分为:tablespaceS、SEGMENTS、EXTENTS、BLOCKS
物理上:data files ,control files ,redo log files ,pasword files,初始化参数文件等等
***************************************
2005-06-08 9:44
区段:依据不同的数据处理性质,可以在表空间中划分不同的区域,以存放不同的资料,我们将这些区域成为区段(segment)
***************************************
2005-06-08 9:49
控制文件:在9i中每个数据都有一个控制文件,用来记录和描述数据库的实体结构.
包含以下信息:
oracle9i数据库名称和建立时间
数据文件和联机重做日志文件的名称和所在的位置
交易记录序列码( log sequence number)
***************************************
2005-06-08 9:53
激活oracle9i数据库,nomount,mount和open
***************************************
2005-06-08 11:17
SGA最大容量大小由SGA_MAX_SIZE决定
process设定最大进程数
***************************************
2005-06-08 11:20
oracle如何维护控制文件?
1. 开启oracle 数据库时,只会读取第一个控制文件,顺序以control_files的设定值为准.
2.如果需要将特定信息写入控制文件,则oracle 会同时写入control_files中
3、当某个控制文件发生问题时,oracle instance将停摆。
***************************************
2005-06-08 11:32
如何决定控制文档大小?
oracle控制文档大小由create database 命令的参数决定,分别是maxdatafiles、maxlogfiles、maxlogmembers、maxloghistory、maxinstances
***************************************
2005-06-08 11:34
建立额为的控制文档
1、关闭数据库
2、在操作系统下将现有的控制文档复制一份到新的位置
3、修改初始化参数文档
4、启动数据库
***************************************
2005-06-08 11:36
建立新的控制文件
1、整理一份数据库清单,其中包含所有的数据文件与重做日志文件的名称与路径,通过v$logfile,v$datafile;
SQL> select * from v$LOGFILE;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
----------------------------------------------
3 ONLINE
F:\ORACLE\ORADATA\ORA9I\REDO03.LOG
2 ONLINE
F:\ORACLE\ORADATA\ORA9I\REDO02.LOG
1 ONLINE
F:\ORACLE\ORADATA\REDO01.LOG
SQL> SELECT NAME FROM V$DATAFILE;
NAME
------------------------------------------------
F:\ORACLE\ORADATA\ORA9I\SYSTEM01.DBF
F:\ORACLE\ORADATA\ORA9I\UNDOTBS01.DBF
F:\ORACLE\ORADATA\ORA9I\CWMLITE01.DBF
F:\ORACLE\ORADATA\ORA9I\DRSYS01.DBF
F:\ORACLE\ORADATA\ORA9I\EXAMPLE01.DBF
F:\ORACLE\ORADATA\ORA9I\INDX01.DBF
F:\ORACLE\ORADATA\ORA9I\ODM01.DBF
F:\ORACLE\ORADATA\ORA9I\TOOLS01.DBF
F:\ORACLE\ORADATA\ORA9I\USERS01.DBF
F:\ORACLE\ORADATA\ORA9I\XDB01.DBF
F:\ORACLE\ORADATA\ORA9I\CODES_TABLES.DBF
NAME
------------------------------------------------
F:\ORACLE\ORADATA\ORA9I\DATA01.DBF
F:\ORACLE\ORADATA\ORA9I\DATA02.DBF
2 关闭数据库,通过normal方式,必要时用immediate或abort
3.重新激活oracle instance ,startup nomount
4.通过create control 命令建立新的控制文件
5.修改初始化参数文件
6.将数据打开在open状态
***************************************
2005-06-08 11:46
备份控制文件.
1、将控制文档备份成某个二进制文件
SQL> alter database backup controlfile to 'f:\oracle\oradata\control.bkp';
数据库已更改。
2、制作能够重建控制文档的sql语句。
SQL> alter database backup controlfile to trace;
***************************************
2005-06-08 11:54
查询控制文件相关信息
1、show parameter control_files;
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string f:\oracle\oradata\ora9i\CONTRO
L01.CTL, f:\oracle\oradata\ora
9i\CONTROL02.CTL, f:\oracle\or
adata\ora9i\CONTROL03.CTL
2、v$controlfile
SQL> select name from v$controlfile;
NAME
----------------------------------------
F:\ORACLE\ORADATA\ORA9I\CONTROL01.CTL
F:\ORACLE\ORADATA\ORA9I\CONTROL02.CTL
F:\ORACLE\ORADATA\ORA9I\CONTROL03.CTL
3、查询v$parameter 视图表
SQL> select name,value from v$parameter where name like 'control_file%';
NAME VALUE
---------------------------------------------------------------- -----------------------------------
control_files f:\oracle\oradata\ora9i\CONTROL01.CTL, f:\oracle\oradata\ora
control_file_record_keep_time 7
***************************************
2005-06-08 13:11
需要写回硬盘的叫dirty buffer
***************************************
2005-06-08 13:45
参数文件定义SGA例程的特性
口令文件:用来认证那些口令有权限启用和关闭instance
***************************************
2005-06-08 13:48
oracle instance 是访问数据库的一种方法,总是打开一个且只能打开一个数据库
由SGA+后台进程组成
***************************************
2005-06-08 13:50
SGA用于存储数据库信息的内存区,该信息为数据库进程所共享。
共享池=library cache+dictionary cache
library cache存放最近使用的sql语句
dictionary cache 存放最近使用的数据字典信息
data buffer cache ,高速缓存,存放最近使用的数据,从数据文件读取或者写入数据文件
redo log buffer cache,用于跟踪服务器或者后台进程对数据所作的更改。
java 池:用于存放java 代码
大型共享池:用于存储并不与sql语句处理相关的内存结构,用于大对象。
***************************************
2005-06-08 13:58
dbwn,负责从高速缓存区中将更改的数据写入数据文件
LGWR,将redo log buffer cache中注册的更改写入redo log file
smon,检查数据的一致性,如有必要在数据库打开时,启动数据库的修复
pmon,用于一个oracle进程失败时,用于资源清理
ckpt,每当从高速缓存中注册的更改数据写入数据文件时,更改控制文件和数据库文件的数据库状态信息.
***************************************
2005-06-08 14:04
PGA:是只被一个进程使用的区域,在创建进程时分配,在终止进程时回收.
***************************************
2005-06-08 14:08
回滚段:进行更改之前,服务器进程将旧的数据值保存到回滚段中,
***************************************
2005-06-08 14:11
LGWR 在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入
? 当提交事务处理时
? 当重做日志缓冲区的三分之一已满时
? 当重做日志缓冲区中记录了超过 1 MB 的更改时
? 在 DBW0 将数据库缓冲区高速缓存中修改的块写入数据文件以前
因为恢复操作需要重做所以 LGWR 只在重做写入磁盘后确认 COMMIT 命令
***************************************
2005-06-08 14:12
NOARCHIVELOG 模式在 NOARCHIVELOG 模式中每发生一次日志切换
都会覆盖联机重做日志文件LGWR 直到重做日志组的检查点完成才覆盖该
组这确保当发生例程崩溃时提交的数据能够得以恢复在例程崩溃过程中
只丢失 SGA 磁盘没有任何丢失只有内存会丢失例如操作系统的崩溃引
起例程崩溃
ARCHIVELOG 模式如果配置数据库使它以 ARCHIVELOG 模式运行那么
已满的联机重做日志文件的非活动组必须归档之后才能够再次使用因为对数
据库所做的更改记录在联机重做日志文件中所以 DBA 能够使用数据文件的
物理备份和归档的联机重做日志文件来恢复数据库而不会由于任何单个出错
点包括磁盘的丢失而丢失任何已提交数据通常将生产数据库配置为以
ARCHIVELOG 模式运行
***************************************
2005-06-08 14:15
采用口令文件验证。
1、orapwd file=fname password=password entries=entries
其中
fname 是口令文件的名称
password 是 SYS 和 INTERNAL 的口令
entries 是不同的数据库管理员的最大数量
下列命令用口令 admin 为用户 SYS 和 INTERNAL 创建一个口令文件并接受多达
5 个具有不同口令的用户
2 、将 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE 或
SHARED
其中
EXCLUSIVE 表明只有一个例程可以使用口令文件
并且该口令文件包含除 SYS 和
INTERNAL 以外的名称
SHARED 表明可以有多个例程可以使用口令文
件口令文件可以识别的用户只有
SYS 和 INTERNAL
3、3 用如下命令连接到数据库
SQL> CONNECT internal/oracle
口令文件我的目录下是F:\oracle\ora92\database\pwdora9i.ora
***************************************
2005-06-08 14:26
维护口令文件,删除原来的口令文件,并用orapwd命令创建新的口令。
***************************************
2005-06-08 14:40
初始化参数,oracle事例启动时,oracle服务必须读初始化参数。
***************************************
2005-06-08 15:06
参数文件:
静态参数文件pfile,参考initsid.ora
永久参数文件:spfilesid.ora
参数内容:
1、一系列instance参数
2、instancename
3、sga
4、redo log files
5、the name and location of control file
6、undo segments information
pfile是一个文本文件,可以用os的编辑器进行修改,修改后下次启动才能起作用。
在unix中缺省地是initsid.ora文件
spfile文件:
二进制文件,改变通过shutdown and startup有效
维护by oracle server
参数值改变通过alte system命令
可以指定参数改变是永久的还是临时的
参数值可以重设或删除
alter system set
alter system命令用于更改instance值,用scope=
memory:当oracle instance运行时,改变参数值
spfile:改变参数值在spfile 文件中
both:同时更改内存和spfile。
***************************************
2005-06-08 15:43
create spfile from pfile
也可以
create pfile from spfile
***************************************
2005-06-08 16:00
启动数据库:
可以选择几种不同的状态
1、startup nomount
启动包括下列任务
1)读初始化参数文件,从下列顺序
spfilesid.ora,如果不存在
spfile.ora
initsid.ora
2)分配SGA
3)启动后台进程
4)打开警告日志文件和跟踪文件
2、装载数据库,启动例程并装载数据库,但不打开数据库
1)使数据库与以前的启动例程相关联
2)定位并打开指定的控制文件
3)读取控制文件并获取数据文件和redo log 文件的名称和状态(但是不进行数据文件和联机重做日志文件是否存在的检查)
3、打开数据库
打开联机数据文件
打开联机重做日志文件
在此阶段,oracle 数据库验证数据文件和联机重做日志文件是否可以打开,并检查一致性,如果需要,smon将进行恢复。
***************************************
2005-06-08 16:32
启动命令:startup
open:使得用户可以访问数据库
mount:为某些DBA活动装载数据库,但不允许用户访问数据库
nomount:创建SGA,并启动后台进程,但不允许用户访问数据库。
pfile=parfile:允许使用非缺省参数文件配置启动例程
force:在执行正常启动之前终止运行的例程。
restrict:只允许具有restrict session权限的用户访问数据库
recover:在启动数据库时进行介质恢复。
***************************************
2005-06-08 16:38
更改数据库的状态
alter database databasename 状态
alter database ora9i open read only;使ora9i以只读方式打开。防止生成重做日志信息
alter database ora9i open read write;允许读写,允许生成重做日志信息。
***************************************
2005-06-08 16:42
关闭数据库 shutdown normal ,immediate,abort,transactional
normal方式:正常关闭
正常是关闭的缺省方式正常的数据库关闭在下列情况下进行
? 不允许新的连接
? Oracle 服务器等待所有用户断开后才完成关闭
? Oracle 在关闭例程前将关闭并卸装数据库
? 下一次启动时将不要求例程恢复
事务处理关闭
事务处理关闭防止客户丢失工作事务处理数据库关闭在下列情况下进行
? 没有客户可以在此特定例程上启动新事务
? 当客户结束正在进行的事务时断开客户
? 当所有事务都已完成时会立即关闭
? 下一次启动将不要求例程恢复
立即关闭
立即关闭数据库在下列情况下进行
? 由 Oracle 处理的当前 SQL 语句未完成
? Oracle 服务器不等待当前连接数据库的用户断开
? Oracle 回退活动的事务并断开所有连接的用户
? Oracle 在关闭例程前将关闭并卸装数据库
? 下一次启动将不要求例程恢复
关闭中止
如果正常和立即关闭选项不起作用可以中止当前数据库例程中止
例程可以在下列情况下进行
? Oracle 服务器所处理的当前 SQL 语句被立即终止
? Oracle 不等待当前连接数据库的用户断开
? 未提交的事务不回退
? 在不关闭文件的情况下例程被终止
? 下一次启动将要求例程恢复
***************************************
2005-06-08 16:45
诊断文件:
警告日志文件
后台跟踪文件
用户跟踪文件。
***************************************
2005-06-08 16:49
警告日志文件应该每天都看,缺省位置由background_dump_dest确定,文件名为alter_sid.log
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
background_dump_dest string f:\oracle\admin\ora9i\bdump
包含如下内容:
数据库启动关闭时间
非缺省初始化参数列表
后台进程启动
在线的instance
LGWR写的日志序列号
log swich 信息
增加表空间和回滚段
alter 语句
错误日志和extents错误
***************************************
2005-06-08 16:59
后台跟踪文件:
位置在background_dump_dest,名字为sid_processname_pid.trc
***************************************
2005-06-08 17:03
用户跟踪文件:
记录用户错误信息和sql语句
位置由user_dump_dest参数决定
大小由MAX_DUMP_FILE_SIZE决定,缺省是10M
SQL> SHOW PARAMETER MAX_DUMP_FILE_SIZE;
NAME TYPE VALUE
------------------------------------ ----------- ---------------
max_dump_file_size string UNLIMITED
SQL> SHOW PARAMETER USER_DUMP_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ----------------------------
user_dump_dest string f:\oracle\admin\ora9i\udump
***************************************
2005-06-08 17:06
启用或者关闭用户跟踪:
用户跟踪可以启用或关闭在session或instance两个level
session level:
SQL> alter session set sql_trace=true;
会话已更改。
SQL> select name from v$datafile
2 union select name from v$CONTROLFILE
3 UNION select member from v$logfile;
NAME
--------------------------------------------------------------------------------
F:\ORACLE\ORADATA\ORA9I\CODES_TABLES.DBF
F:\ORACLE\ORADATA\ORA9I\CONTROL01.CTL
F:\ORACLE\ORADATA\ORA9I\CONTROL02.CTL
F:\ORACLE\ORADATA\ORA9I\CONTROL03.CTL
F:\ORACLE\ORADATA\ORA9I\CWMLITE01.DBF
F:\ORACLE\ORADATA\ORA9I\DATA01.DBF
F:\ORACLE\ORADATA\ORA9I\DATA02.DBF
F:\ORACLE\ORADATA\ORA9I\DRSYS01.DBF
F:\ORACLE\ORADATA\ORA9I\EXAMPLE01.DBF
F:\ORACLE\ORADATA\ORA9I\INDX01.DBF
F:\ORACLE\ORADATA\ORA9I\ODM01.DBF
NAME
--------------------------------------------------------------------------------
F:\ORACLE\ORADATA\ORA9I\REDO02.LOG
F:\ORACLE\ORADATA\ORA9I\REDO03.LOG
F:\ORACLE\ORADATA\ORA9I\SYSTEM01.DBF
F:\ORACLE\ORADATA\ORA9I\TOOLS01.DBF
F:\ORACLE\ORADATA\ORA9I\UNDOTBS01.DBF
F:\ORACLE\ORADATA\ORA9I\USERS01.DBF
F:\ORACLE\ORADATA\ORA9I\XDB01.DBF
F:\ORACLE\ORADATA\REDO01.LOG
***************************************
2005-06-08 21:30
数据字典包括2部分数据字典表和动态性能表
数据字典是一些只读表和视图,记录、验证、提供有关联的数据库的信息。
描叙数据库和它的对象
包括2种类型的,基表和数据字典视图
基表存储着关于数据的信息,当创建数据时,创建的第一个对象。
数据字典视图,是基表信息的汇总,提供比基表更有用的信息。
***************************************
2005-06-08 22:09
数据字典包括内容:
物理和逻辑的数据库结构
对象的定义和空间分配
完整性约束
用户
权限
角色
审计
***************************************
2005-06-08 22:28
数据字典包括三个主要静态试图:
dba
user
all
***************************************
2005-06-08 22:32
查询数据字典
? General Overview
– DICTIONARY, DICT_COLUMNS
? Schema objects
– DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS,
DBA_CONSTRAINTS
? Space allocation
– DBA_SEGMENTS, DBA_EXTENTS
? Database structure
– DBA_TABLESPACES, DBA_DATA_FILES
dba_free_space,察看数据库剩余空间.
dba_users
***************************************
2005-06-08 22:54
控制文件:包含2种类型reusable和not reusable
***************************************
2005-06-08 23:16
用spfile来多路复用控制文件
SQL> show parameter control_
NAME TYPE VALUE
------------------------------------ ----------- ----------------------------
control_file_record_keep_time integer 7
control_files string f:\oracle\oradata\ora9i\CONT
L01.CTL, f:\oracle\oradata\o
9i\CONTROL02.CTL, f:\oracle\
adata\ora9i\CONTROL03.CTL
control_file_record_keep_time:对备份信息保留的天数
步骤:
1、更改参数文件alter system 命令
SQL> alter system SET control_files='F:\ORACLE\ORADATA\ORA9I\CONTROL01.CTL',
2 'F:\ORACLE\ORADATA\ORA9I\CONTROL02.CTL',
3 'F:\ORACLE\ORADATA\CONTROL03.CTL' SCOPE=SPFILE;
将第三个控制文件改为上一级目录中
2、关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
3、拷贝文件到新的路径下
4、打开数据库
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
5、删除旧的控制文件。
在8i中迁移控制文件:
1、更改参数文件
2、关闭数据库
3、复制文件
4、打开数据库
5、删除原来的文件
***************************************
2005-06-09 9:35
数据库的物理结构改变后,应该立刻备份控制文件 ,因为控制文件记录了数据库的物理结构信息
有2种方法备份
1、备份控制文件到一个文件中
alter database backup controlfile to ‘filename’
2、备份控制文件到跟踪文件中去
alter database backup controlfile to trace
***************************************
2005-06-09 9:50
1、SQL> select name from v$CONTROLFILE;
NAME
-----------------------------------------
F:\ORACLE\ORADATA\ORA9I\CONTROL01.CTL
F:\ORACLE\ORADATA\ORA9I\CONTROL02.CTL
F:\ORACLE\ORADATA\CONTROL03.CTL
2、SQL> select name,value from v$parameter where name='control_files';
NAME
----------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
control_files
F:\ORACLE\ORADATA\ORA9I\CONTROL01.CTL, F:\ORACLE\ORADATA\ORA9I\CONTROL02.CTL, F:
\ORACLE\ORADATA\CONTROL03.CTL
3、v$controlfile_record_section,关于控制文件记录信息
4\SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string F:\ORACLE\ORADATA\ORA9I\CONTRO
L01.CTL, F:\ORACLE\ORADATA\ORA
9I\CONTROL02.CTL, F:\ORACLE\OR
ADATA\CONTROL03.CTL
***************************************
2005-06-09 9:55
redo log files
redo log files 记录了数据的改变,用来进行system和介质恢复
redo log files 组成redo log group
至少需要2个redo log group
在redo log group中的redo log file 称为redo log member
redo log file 只用于恢复
***************************************
2005-06-09 10:10
每个日志组中的member有同样的序列号和大小,当前的日志序列号存储在控制文件和数据文件的头部.
***************************************
2005-06-09 10:14
MAXLOGFILES参数:在创建数据库时指定了最大的日志组数
maxlogmeibers参数:制定了每个组成员的最大数目.
以上两个参数缺省地最大数目依靠你的操作系统.
***************************************
2005-06-09 10:16
redo log file 采用循环机制
当一个redo log file 满时,LGWR将move to next log group
这称为log switch
检查点操作将发生
信息被写进了控制文件.
***************************************
2005-06-09 10:21
LGWR发生在如下情况:
1、当一个事物提交时
2、当redo log buffer 1/3满时
3、当在redo log buffer中的更改记录满1M时
4、DBWn将数据缓冲区的高速缓存内的修改块写入数据文件之前。
***************************************
2005-06-09 10:47
alter system switch logfile
alter system checkpoint
***************************************
2005-06-09 10:49
增加日志文件组:
SQL> alter database add logfile group 4
2 ('f:\oracle\oradata\ora9i\redo004.rdo',
3 'f:\oracle\oradata\ora9i\redo005.rdo') size 10m;
数据库已更改。
***************************************
2005-06-09 10:49
增加在线日志文件组成员:
SQL> alter database add logfile member
2 'f:\oracle\oradata\ora9i\redo006.rdo' to group 4;
如果文件已经存在,你必须使用同样的大小,并且要使用REUSE选项.
***************************************
2005-06-09 11:03
删除online redo logfile group
alter database drop logfile group 4
限制:
活动的或者正在使用的不能删除
一个instance 至少需要两个online redo logfile group
当drop后,需要手工删除os 文件.
1、删除前:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 12 104857600 1 YES ACTIVE 455306 09-6月 -05
2 1 13 104857600 1 NO CURRENT 455490 09-6月 -05
3 1 10 104857600 1 YES INACTIVE 431806 09-6月 -05
4 1 11 10485760 3 YES INACTIVE 455223 09-6月 -05
2、删除group 4:
SQL> alter database drop logfile group 4;
数据库已更改。
3、删除处于活动状态的group 1,无法删除
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志1
ORA-00312: 联机日志 1 线程 1: 'F:\ORACLE\ORADATA\REDO01.LOG'
4、删除正在使用的group2 ,无法删除
SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR 位于第 1 行:
ORA-01623: 日志2是线程1的当前日志 - 无法删除
ORA-00312: 联机日志 2 线程 1: 'F:\ORACLE\ORADATA\ORA9I\REDO02.LOG'
5、删除group4 后:
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -------------------------------------------------------------------------
3 ONLINE F:\ORACLE\ORADATA\ORA9I\REDO03.LOG
2 ONLINE F:\ORACLE\ORADATA\ORA9I\REDO02.LOG
1 ONLINE F:\ORACLE\ORADATA\REDO01.LOG
SQL> select * from v$LOG;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 12 104857600 1 YES ACTIVE 455306 09-6月 -05
2 1 13 104857600 1 NO CURRENT 455490 09-6月 -05
3 1 10 104857600 1 YES INACTIVE 431806 09-6月 -05
***************************************
2005-06-09 11:17
drop 在线日志组成员:
alter database drop logfile member
'f:\oracle\oradata\ora9i\redo001.log';
限制:
1、如果是组中最后有效的成员,不能删除
2、如果组是当前的,你必须log switch ,才能删除
3、如果数据库是archive模式,组还没有归档,成员不能删除
4、当成员删掉了,但是os 文件需要手工删除。
***************************************
2005-06-09 11:23
clear redo logfile,初始化在线日志文件
SQL> alter database clear logfile
2 'F:\ORACLE\ORADATA\ORA9I\REDO03.LOG';
数据库已更改。
你可以clear online redo log file ,不管它是否已归档,如果没有归档,你必须用unarchived参数。
alter database clear unarchived logfile group 3;
***************************************
2005-06-09 11:41
迁移日志文件
1、确认当前日志文件组和日志成员的状态(当前的不能迁移)
2、关闭数据库,shutdown immediate
3、启动数据库 ,startup mount
4、复制非当前日志文件
5、更新控制文件
alter database rename file ‘原来的路径\文件名‘ to ’新的路径\文件名‘
SQL> ALTER DATABASE RENAME FILE
2 'F:\ORACLE\ORADATA\REDO01.LOG' TO
3 'F:\ORACLE\ORADATA\ORA9I\REDO01.LOG';
6、打开数据库,alter database open;
7、删除原来的日志文件。
注意:数据库需要在mount状态。
***************************************
2005-06-09 11:58
select * from v$LOGFLE;
invalid状态:表示文件不可访问
stale状态:表示文件内容是不完整的
deleted状态:表示文件不可用
blank表示文件可用
***************************************
2005-06-09 13:09
archived redo log file:
2个优点:
1、recovery
2、backup
缺省地数据库是noarchived模式
***************************************
2005-06-09 13:13
有2种方式,在线日志文件归档
1、手工
2、自动,oracle建议
***************************************
2005-06-09 13:24
初始化参数:
log_archive_start=true/false
当设置为true是自动归档
当设置为false时手动归档,false是缺省地
***************************************
2005-06-09 13:30
获取归档信息
1、SQL> select archiver from v$instance;
ARCHIVE
-------
STARTED
2、SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 f:\oracle\ora92\RDBMS
最早的概要日志序列 12
下一个存档日志序列 13
当前日志序列 13
3、SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORA9I ARCHIVELOG
***************************************
2005-06-09 13:36
获取日志组信息,当前日志组序号、当前组
SQL> SELECT GROUPS,CURRENT_GROUP#,SEQUENCE# from v$thread;
GROUPS CURRENT_GROUP# SEQUENCE#
---------- -------------- ----------
3 2 13
***************************************
2005-06-09 13:45
FAST_START_IO_TARGET 参数 FAST_START_IO_TARGET 改善了崩溃和
例程恢复的性能该参数值越小由于需要恢复的块就越少因而恢复性能就
越好该参数设置后DBWn 更积极地将灰缓冲区写出.
***************************************
2005-06-09 13:48
增加表空间:
CREATE TABLESPACE app_data
DATAFILE '/DISK4/app_data_01.dbf'
SIZE 100M,
'/DISK5/app data_ 02.dbf'
SIZE 100M
MINIMUM EXTENT 500K
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MAXEXTENTS 500
PCTINCREASE 0 );
***************************************
2005-06-09 14:00
表空间管理分为数据字典管理和本地管理2种
本地管理:
1、记录在位图中的空闲区
2、每位对应一个块或块组
3、位值表明空闲或使用
数据字典管理:
1、缺省使用
2、记录在数据字典表中的空闲区
建议使用本地管理,好处:
1、减少对数据字典的访问
2、减少数据文件中的碎片
本地管理表空间的创建:
SQL> create tablespace userdata
2 datafile 'f:\oracle\oradata\ora9i\userdata01.dbf' size 50m
3 extent management local uniform size 256k;
表空间已创建。
extent_management_clause :==
[ EXTENT MANAGEMENT
{ DICTIONARY | LOCAL
{ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] } } ]
DICTIONARY:指定使用数据字典来管理
LOCAL:通过位图来本地管理表空间
autoallocate:指定表空间由系统管理,用户无法指定大小
uniform:指定通过大小为size的统一区来管理本地表空间,如果指定了local,则无法使用default storage。minmum extent或者temporary。