Oracle 9i RAC数据库日常操作及维护手册 内部公开
3.2.1 建立undotablespace
建立undotablespace的语法如下: create undotablespace tablespace_name datafile 'fullpath+datafilename' size XXM [autoextend on|off next XX maxsize XX]; 其中方括号内为可选项。
9i的undotablespace必须是本地管理的,不能使用创建字典管理表空间的方法创建undotablespace,否则会报错。同时,建立undotablespace时不能指定uniform size关键字,undotablespace的extent大小必须由oracle自动分配,不能手工指定。
一个数据库可以建立多个undotablespace,但每个instance同时只能使用一个undotablespace。可以用alter system命令来修改数据库当前的undotablespace。
如当前的undotablespace是undotbs1,现在新建一个undotbs2,然后将系统当前的undotablespace改为undotbs2的步骤为:
SQL>create undo tablespace undotbs2 datafile '/dev/rlv_undotbs2' size 100M; Tablespace created.
SQL〉alter system set undo_tablespace='undotbs2' scope=both; System altered.
3.2.2 影响undotablespace的关键初始化参数
有几个初始化参数对9i中的undotablespace有决定性影响,这几个参数分别是undo_management、undo_tablespace、undo_retention和undo_suppress_errors
undo_management
Undo_management参数决定是使用undo tablespace还是使用手工建立的回滚段。如果该参数为auto,则表示使用undo tablespace。为manual,表示使用手工管理回滚段,这时同 8i
2004-05-17
华为机密,未经许可不得扩散
第13页, 共47页
Oracle 9i RAC数据库日常操作及维护手册 内部公开
一样,也需要建立回滚表空间,且要建立回滚段。在9i R2中,该参数缺省值为auto。建议继续使用该缺省值,即使用undo tablespace,不用手工建立回滚段。
undo_tablespace
该参数必须被设置为一个有效的undotablespace名称。当undo_management设为auto时,数据库将使用undo_tablespace指定的undotablespace。
undo_retention
该参数的单位为秒,当undo_management参数为auto时,undo_retention表示在
undo_tablespace中保留多长时间的回滚(undo)信息,9i的flash_back功能同该值有关。该值设为多大同undo_tablespace 的大小有关,在9i R2中缺省值为10800,一般情况下已经够了,不建议修改该参数。
3.3 临时表空间管理
从oracle 9i开始,oracle建立临时表空间的语法有了一定的改变。
oracle临时表空间的作用是当oracle要进行排序操作时(在复杂操作时如 joins, group by, order by, 建立索引及任何需要排序的操作),如果内存排序区的空间不够用,oracle将排序过程中产生的结果集保存在磁盘上的临时表空间中,然后将结果集返回给用户。
在oracle 9i R2以后,使用下列方法建立临时表空间: 输入下面的命令:
oracle% sqlplus \
SQL> CREATE TEMPORARY TABLESPACE temp TEMPFILE '/dev/rlv_temp ' SIZE 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
9i的临时表空间有如下特点:
? Tempfile 始终设为NOLOGGING 模式 ? 无法使Tempfile 只读 ? 无法重命名Tempfile
2004-05-17
华为机密,未经许可不得扩散
第14页, 共47页
Oracle 9i RAC数据库日常操作及维护手册 内部公开
? 无法通过ALTER DATABASE 命令创建Tempfile ? 介质恢复不恢复Tempfile
? BACKUP CONTROLFILE 不生成任何Tempfile 信息 ? CREATE CONTROLFILE 不能指定任何关于Tempfile 的信息
3.4 如何维护redo logfile
3.4.1 如何增加联机日志文件的大小
数据库运行时,可以通过alert.log来观察log switch的切换时间。ORACLE推荐联机日志最好是业务非高峰期每小时切换一次,业务高峰期20分钟左右切换一次, 所以redo logfile的大小由数据库DML操作数据的频度决定其最佳大小。
我们经常会发现当前数据库日志文件里log switch的时间偏大或者偏小,因此可能需要调整redo logfile的大小。ORACLE提供了在数据库联机状态来改变redo logfile大小的方法。
在增加归档日志大小前,必须创建新的归档日志的逻辑卷,这个步骤在双机环境下较为复杂。具体方法请参考如何在RAC环境下增加新的数据或者日志文件,此处不赘述。
Example:
数据库原来有三个大小为20M的redo log file, 现在需要增加日志文件的大小为100M。假设新的归档日志的逻辑卷已经建好。
1. 往数据库添加三组新的redo logfile
SQL>ALTER DATABASE ADD LOGFILE GROUP 4
('/dev/rlv_redo41',
'/dev/rlv_/redo42') size 100M reuse;
SQL>ALTER DATABASE ADD LOGFILE GROUP 5
('/dev/rlv_redo51',
'/dev/rlv_redo52') size 100M reuse;
SQL>ALTER DATABASE ADD LOGFILE GROUP 6
('/dev/rlv_redo61',
华为机密,未经许可不得扩散
第15页, 共47页
2004-05-17
Oracle 9i RAC数据库日常操作及维护手册 内部公开
'/dev/rlv_redo62') size 100M reuse;
2. 手工做log switch, 使新建的redo logfile起作用. SQL>alter system switch logfile;
此操作可以执行一到几次, 使旧的redo logfile成inactive状态.
3. 检查旧的redo logfile成inactive状态时,就可以删除原来旧的redo logfile. SQL>alter database drop logfile group 1; SQL>alter database drop logfile group 2; SQL>alter database drop logfile group 3;
3.4.2 如何增加联机日志文件组的成员
Oracle强烈建议每个数据库有多组日志,每组日志至少有2个成员。但有时在建立数据库时每个日志组仅建了一个成员,对生产系统来讲,这是很危险的。因为一旦因为某种原因使某个日志文件损坏,oracle数据库会down机,且必然会发生数据丢失。为避免这种情况的发生,需要给日志组添加日志成员。
可以用如下语法在线给日志组1、2、3各增加一个成员: ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_redo13' TO GROUP 1, '/dev/rlv_redo23' TO GROUP 2, '/dev/rlv_redo33' TO GROUP 3;
注意:给日志组增加成员时不需要指定rodo logfile的大小,oracle会自动将新成员的大小建成同原成员一样大。
还可以用如下语法删除某个日志组的成员:(各个日志组成员的数量可以不相同) alter database drop logfile member '/dev/rlv_redo13' ; 注意,
2004-05-17
华为机密,未经许可不得扩散
第16页, 共47页
相关推荐: