第5章 存储管理(4)

2019-08-03 14:56

SQL>CREATE TEMPORARY TABLESPACE \

TEMPFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST_TEMP01A.DBF' SIZE 20M REUSE

AUTOEXTEND ON NEXT 10M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL

TABLESPACE GROUP TEMP_GROUP1;

SQL> CREATE TEMPORARY TABLESPACE \

TEMPFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST_TEMP01B.DBF' SIZE 20M REUSE

AUTOEXTEND ON NEXT 10M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL

TABLESPACE GROUP TEMP_GROUP1;

SQL>CREATE TEMPORARY TABLESPACE \

TEMPFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST_TEMP02A.DBF' SIZE 20M REUSE

AUTOEXTEND ON NEXT 10M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL

TABLESPACE GROUP TEMP_GROUP2;

SQL> CREATE TEMPORARY TABLESPACE \

TEMPFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST_TEMP02B.DBF' SIZE 20M REUSE

AUTOEXTEND ON NEXT 10M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL

TABLESPACE GROUP TEMP_GROUP2;

下面通过查看DBA_TABLESPACE_GROUPS数据字典确定当前数据库系统存在的临时表空间组和所包含的临时表空间。

SQL> DESC DBA_TABLESPACE_GROUPS; 名称 是否为空? 类型

-------------------- -------- ------------ GROUP_NAME NOT NULL VARCHAR2(30) TABLESPACE_NAME NOT NULL VARCHAR2(30)

SQL> SELECT * FROM DBA_TABLESPACE_GROUPS; GROUP_NAME TABLESPACE_NAME

-------------- ------------------ TEMP_GROUP1 TEMP02 TEMP_GROUP1 TEMP03 TEMP_GROUP2 TEMP04 TEMP_GROUP2 TEMP05

在OEM中,也可以查看到上面创建的两个临时表空间组。如图5-13所示。

图5-13 临时表空间组

5.3.3 管理临时表空间组

管理临时表空间组的成员时,可以往组里添加新的表空间,或将一个表空间从一个组移动另一个组,或是从一个组中删除临时表空间。

下面的语句将一个表空间TEST_TEMP添加到临时表空间组TEMP_GROUP1中。

SQL> ALTER TABLESPACE TEST_TEMP TABLESPACE GROUP TEMP_GROUP1; 表空间已更改。

下面的语句将临时表空间组TEMP_GROUP1中的临时表空间TEST_TEMP移动到临时表空间组TEMP_GROUP2中。

SQL> ALTER TABLESPACE TEST_TEMP TABLESPACE GROUP TEMP_GROUP2; 表空间已更改。

下面的语句将临时表空间TEST_TEMP从临时表空间组TEMP_GROUP2中删除。

SQL> ALTER TABLESPACE TEST_TEMP TABLESPACE GROUP ''; 表空间已更改。

删除后的临时表空间TEST_TEMP仍然存在并可以供用户使用,只是不属于临时表空间组而已。

下面的语句修改数据库使用默认临时表空间组TEMP_GROUP1。

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_GROUP1; 数据库已更改。

5.4 日志文件

日志文件将数据库中所有数据库的变化都记录下来,日志文件的内容就是重做记录,又称重做项,每个重做项由一个系统修改号码(SCN)来标记。日志文件分为重做日志文件和归档日志文件。重做日志文件的主要目的就是为了进行恢复。

Oracle数据库创建后一般包含3组重做日志组,每个重做日志组包含两个以上的重做日志文件,每个日志文件称为成员。

重做日志组采取循环写入的方式。日志写入进程(LGWR)写入第1个重做日志组,当该重做日志组写满后,自动产生日志切换,LGWR会写入到第2个重做日志组,当第2个重做日志组也写满后,再自动产生日志切换, LGWR再写入第3个重做日志组,当第3个重做日志组也写满后,再写入到第1个重做日志组,依次循环写入。如图5-14所示。

group1group2group3membermembermembermembermembermember 图5-14 LGWR循环写入重做日志组

Oracle系统支持多路复用重做日志文件,即将重做日志文件的多个副本保存在不同的物理磁盘上或者同一个磁盘的不同位置上,LGWR将重做日志同步写入到多个副本的重做日志文件中,并自动维护这些副本,可以大大减少Oracle系统因磁盘I/O失败或文件丢失而出错的可能性。Oracle系统建议将重做日志组成员放置在不同的物理磁盘上,这样单一磁盘访问失败,那么只要有一个日志组成员能够正常被LGWR访问,Oracle系统仍然可以正常运行。

注意:如果Oracle系统运行在归档模式下,可以将重做日志文件和归档日志文件存放在不同的磁盘上,以避免LGWR和ARCn后台进程对重做日志文件的争用。另外,数据文件和重组日志文件也应该存放在不同的磁盘,以减少数据块和重做日志之间的I/O冲突。

5.4.1 创建重做日志组及成员

Oracle要求至少包含两个重做日志组。有时需要增加重做日志组。如果重做日志组内只有一个成员,则需要增加成员,以便多个成员形成一个镜像关系。

增加日志组的语句用到ALTER DATABASE的ADD LOGFILE子句,下面的语句增加了一个日志组GROUP4,该组有两个成员。

SQL> ALTER DATABASE

ADD LOGFILE GROUP 4(

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo4a.log', 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo4b.log') SIZE 51200K; 数据库已更改。

下面的语句为当前数据库系统的每组重做日志组添加一个日志成员。

SQL>ALTER DATABASE

ADD LOGFILE Member

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo1b.log' to group 1, 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo2b.log' to group 2, 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo3b.log' to group 3, 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\redo4c.log' to group 4; 数据库已更改。

注意:添加联机重做日志文件不用指定大小,因为每个重做日志组中的文件都是相互冗余,因此文件大小必须一致。实际上每一个重做日志组都可以拥有不同于其他重做日志组的大小,不过Oracle建议数据库中每组重做日志文件都拥有相同的大小。

5.4.2 移动重做日志文件

如果希望将重做日志文件从一个磁盘移动到另一个磁盘以减少磁盘访问冲突,可以使用操作系统命令移动重做日志文件,然后使用带有RENAME FILE子句的ALTER DATABSE语句重定位日志文件的路径。

移动重做日志文件的主要步骤如下。 (1)关闭数据库,完整备份数据库。

(2)复制要移动的重做日志文件到新的位置。 (3)启动并装载数据库,但不打开数据库。

(4)使用带有RENAME FILE子句的ALTER DATABASE语句重定位重做日志文件的路径。

(5)打开数据库,备份控制文件。

下面的语句将当前数据库系统中存在的3个重做日志组的其中各1个日志成员移动到其他位置。

SQL> SHUTDOWN IMMEDIATE 数据库已经关闭。 已经卸载数据库。

ORACLE 例程已经关闭。

SQL> HOST COPY D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO1B.LOG D:\\ORADATA\\REDO1B.LOG

SQL> HOST COPY D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO2B.LOG D:\\ORADATA\\REDO2B.LOG

SQL> HOST COPY D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO3B.LOG D:\\ORADATA\\REDO3B.LOG

SQL> STARTUP MOUNT ORACLE 例程已经启动。

Total System Global Area 778387456 bytes Fixed Size 1374808 bytes Variable Size 486540712 bytes Database Buffers 285212672 bytes Redo Buffers 5259264 bytes 数据库装载完毕。

SQL> ALTER DATABASE RENAME FILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO1B.LOG', 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO2B.LOG', 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO3B.LOG' TO

'D:\\ORADATA\\REDO1B.LOG', 'D:\\ORADATA\\REDO2B.LOG', 'D:\\ORADATA\\REDO3B.LOG'; 数据库已更改。

SQL> ALTER DATABASE OPEN; 数据库已更改。

SQL>SELECT GROUP#,TYPE ,MEMBER FROM V$LOGFILE; GROUP# TYPE MEMBER

------------ --------- ------------------------------------

3 ONLINE D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO03.LOG 2 ONLINE D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO02.LOG 1 ONLINE D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO01.LOG 1 ONLINE D:\\ORADATA\\REDO1B.LOG 2 ONLINE D:\\ORADATA\\REDO2B.LOG 3 ONLINE D:\\ORADATA\\REDO3B.LOG

在OEM中查看重做日志文件信息,发现日志文件的存放位置的确已发生改变。

5.4.3 删除重做日志组及成员

使用ALTER DATABASE DROP LOGFILE命令删除重做日志组时,不能删除当前系统正在使用(Current)或活动(Active)状态的重做日志组。删除重做日志组必须具有ALTER DATABASE的系统权限。

如删除日志组GROUP 4,可以使用下面的语句。

SQL>ALTER DATABASE DROP LOGFILE GROUP 4; 数据库已更改。

值得注意的是在Oracle系统没有使用Oracle管理文件(OMF)功能时,ALTER DATABASE DROP LOGFILE命令只删除该重做日志组在数据字典中的定义,不会删除操作系统中对应的物理文件,如果需要删除对应的物理文件,DBA必须手动通过操作系统命令进行删除。如果Oracle系统使用OMF功能,则Oracle将自动完成对物理文件的清理工作。

Oracle系统还支持删除重做日志成员,使用ALTER DATABASE DROP LOGFILE MEMBER语句。但要确保删除后该重做日志组中至少还拥有一个组员,不然系统会提示删除错误,系统提示 “ORA-00361: 无法删除最后一个日志成员”。

下面的语句删除了日志组GROUP 4中的一个日志成员。

SQL>ALTER DATABASE DROP LOGFILE MEMBER

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\REDO4C.LOG'; 数据库已更改。

如果要删除一个当前活动的日志成员,首先必须进行日志切换。

5.4.4 日志切换

在默认情况下,当重做日志文件写满后Oracle系统会自动发生日志切换。此时,Oracle系统将向下一个要写入的重做日志产生一个新的SCN号,执行一个检查点。

Oracle允许用户强制执行日志切换,使当前活动组变成非活动组,以便DBA能够执行某项管理和维护的工作,如删除一个当前活动的日志成员,首先必须进行日志切换。

强制日志切换的语句是ALTER SYSTEM SWITCH LOGFILE,执行此项操作必须具有ALTER SYSTEM系统权限。

下面的语句为删除当前重做日志组GROUP 3的日志成员,系统提示当前正在使用,此时进行强制日志切换,再删除就可以了。

SQL> SELECT GROUP#,MEMBERS,STATUS FROM V$LOG; GROUP# MEMBERS STATUS

---------- ---------- ---------------- 1 2 INACTIVE 2 2 INACTIVE 3 2 CURRENT

SQL>ALTER DATABASE DROP LOGFILE MEMBER 'D:\\ORADATA\\REDO3B.LOG'; ALTER DATABASE DROP LOGFILE MEMBER 'D:\\ORADATA\\REDO3B.LOG' *


第5章 存储管理(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:心理健康与安全教育考试答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: