1.创建和管理数据库使用多路复用redo日志
在这个场景中,DBA创建一个数据文件和redo日志文件位于不同目录的数据库。Redo日志和控制文件是多路复用的。数据库使用一个undo表空间,有一个缺省的临时表空间。下面的任务涉及到创建和维护数据库。
1)设置初始化参数
在创建数据库之前,DBA包含三个通用的文件创建缺省值在初始化参数中。自动undo管理模式(缺省值)也被指定。
DB_CREATE_FILE_DEST = ‘/u01/oradata’
DB_CREATE_ONLINE_LOG_DEST_1 = ‘/u02/oradata’
DB_CREATE_ONLINE_LOG_DEST_2 = ‘/u03/oradata’
UNDO_MANAGEMENT = AUTO
参数DB_CREATE_FILE_DEST为创建数据文件和临时文件设置的缺省的文件系统目录。
参数DB_CREATE_ONLINE_LOG_DEST_1和DB_CREATE_ONLINE_LOG_DEST_2参数设置创建redo日志文件和控制文件的缺省的文件系统目录。每个redo日志文件和控制文件是跨两个目录的多路复用。
2)创建数据库
当设置好初始化参数之后,使用语句创建数据库:
SQL> CREATE DATABASE sample
2> DEFAULT TEMPORARY TABLESPACE dflttmp;
因为没有指定DATAFILE子语句和设置了DB_CREATE_FILE_DEST初始化参数,SYSTEM表空间数据文件创建在缺省的文件系统目录/u01/oradata。文件名称由数据库唯一生成。文件初始大小是100MB,可以自动扩展到无限最大大小。文件是OMF。类似的SYSAUX表空间的数据文件也被创建。
因为没有指定LOGFILE子语句,两个redo日志组被创建。每个日志组有两个成员,一个成员位于位置DB_CREATE_ONLINE_LOG_DEST_1,另外一个成员位于位置DB_CREATE_ONLINE_LOG_DEST_2。文件名称由数据库唯一生成。日志文件的大小是100MB。日志文件成员是OMF。
类似地,因为CONTROL_FILES初始化参数没有设置,两个初始化参数 DB_CREATE_ONLINE_LOG_DEST_n被指定,两个控制文件被创建。位于DB_CREATE_ONLINE_LOG_DEST_1的控制文件是主控制文件,位于DB_CREATE_ONLINE_LOG_DEST_2的控制文件是多路复用拷贝。文件名称由数据库唯一生成。文件是OMF。假设存在服务器初始化文件,一个CONTROL_FILES初始化参数被生成。
自动undo管理模式被指定,但因为没有指定undo表空间,初始化参数DB_CREATE_FILE_DEST已设置,一个缺省的名称为UNDOTBS的undo表空间被创建在DB_CREATE_FILE_DEST指定的目录。数据文件是一个20MB,可以自动扩展的OMF。
最后,名称为dflttmp的缺省的临时表空间被指定。因为初始化参数DB_CREATE_FILE_DEST包含在初始化参数文件中,dflttmp的临时文件被创建在参数指定的目录中。临时文件是100M,可以自动扩展到无限最大大小的OMF。
最终结果的文件和产生的文件名,如下:
/u01
/oradata
/SAMPLE
/datafile
/o1_mf_system_cmr7t30p_.dbf
/o1_mf_sysaux_cmr7t88p_.dbf
/o1_mf_sys_undo_2ixfh90q_.dbf
/o1_mf_dflttmp_157se6ff_.tmp
/u02
/oradata
/SAMPLE
/onlinelog
/o1_mf_1_0orrm31z_.log
/o1_mf_2_2xyz16am_.log
/controlfile
/o1_mf_cmr7t30p_.ctl
/u03
/oradata
/SAMPLE
/onlinelog
/o1_mf_1_ixfvm8w9_.log
/o1_mf_2_q89tmp28_.log
/controlfile
/o1_mf_x1sr8t36_.ctl
当从常用的视图中查询时,内部生成的文件名称可以看到。例如:
SQL> SELECT NAME FROM V$DATAFILE;
NAME
----------------------------------------------------
/u01/oradata/SAMPLE/datafile/o1_mf_system_cmr7t30p_.dbf
/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_cmr7t88p_.dbf
/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_2ixfh90q_.dbf
3)管理控制文件
当数据库创建时创建控制文件,初始化参数CONTROL_FILES会增加到参数文件。如果需要,DBA可以使用CREATE CONTROLFILE语句重建控制文件或为数据库新建一个新的控制文件。
正确的OMF文件名称必须使用在DATAFILE和LOGFILE子语句中。语句ALTER DATABASE BACKUP CONTROLFILE TO TRACE产生一个包含正确文件名称的脚本。或者,从视图V$DATAFILE,V$TEMPFILE和V$LOGFILE中查询出文件名称。下面的示例重建数据库的控制文件:
CREATE CONTROLFILE REUSE
DATABASE sample
LOGFILE
GROUP 1('/u02/oradata/SAMPLE/onlinelog/o1_mf_1_0orrm31z_.log',
'/u03/oradata/SAMPLE/onlinelog/o1_mf_1_ixfvm8w9_.log'),
GROUP 2('/u02/oradata/SAMPLE/onlinelog/o1_mf_2_2xyz16am_.log',
'/u03/oradata/SAMPLE/onlinelog/o1_mf_2_q89tmp28_.log')
NORESETLOGS
DATAFILE '/u01/oradata/SAMPLE/datafile/o1_mf_system_cmr7t30p_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_cmr7t88p_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_2ixfh90q_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_dflttmp_157se6ff_.tmp'
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG;
语句创建的控制文件位于数据库创建时生成的初始化参数CONTROL_FILES指定的位置。REUSE子语句会覆盖任何存在的文件。
4)管理redo日志
DBA可以使用ALTER DATABASE ADD LOGFILE语句来创建一个新redo日志文件组。下面的语句增加一个日志文件,其中一个成员位于位置DB_CREATE_ONLINE_LOG_DEST_1,一个成员位于位置DB_CREATE_ONLINE_LOG_DEST_2。这些文件都是OMF。
SQL> ALTER DATABASE ADD LOGFILE;
日志文件成员通过指定完整的文件名称继续被增加或删除。
GROUP子语句可以用来删除一个日志组。在下面的示例中,与每个Oracle管理的日志文件成员关联的操作系统文件自动被删除。
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
5)管理表空间
在数据库sample中,将来创建表空间的所有数据文件的缺省存储位置是初始化参数DB_CREATE_FILE_DEST指定的位置(在这个场景中是/u01/oradata)。任何没有指定文件名称的数据文件,都会创建在DB_CREATE_FILE_DEST指定的文件系统中。
例如,下面的语句创建一个表空间存储在/u01/oradata,它的数据文件初始大小是100M,可以自动扩展到无限最大大小。数据文件是OMF。
SQL> CREATE TABLESPACE tbs_1;
当删除表空间时,表空间的OMF会自动被移除。下面的示例删除了表空间和所有用来存储这个表空间的OMF:
SQL> DROP TABLESPACE tbs_1;
一旦第一个数据文件满了,数据库不会自动创建新的数据文件。可以通过增加另外一个Oracle管理的数据文件到表空间来增加空间。下面的语句增加另外一个数据文件到DB_CREATE_FILE_DEST指定的位置:
SQL> ALTER TABLESPACE tbs_1 ADD DATAFILE;
缺省的文件系统可以通过更改初始化参数来更改。这不会改变任何已经存在的数据文件。它只影响将来的创建。可以使用以下语句来动态完成:
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST=‘/u04/oradata’;
6)归档日志信息
OMF的redo日志文件的归档跟不是Oracle管理的文件的没有什么不同。归档redo日志文件的文件系统位置可以使用LOG_ARCHIVE_DEST_n初始化参数指定。文件名称基于LOG_ARCHIVE_FORMAT参数或缺省值形成。归档日志不是OMF(没有定义FRA)。
7)备份,还原和恢复
由于OMF与标准操作系统文件兼容,可以使用操作系统工具备份或还原OMF。备份,还原和恢复数据库的所有存在的方法也适用于OMF。
2.创建和管理数据库使用快速恢复区域
在这个场景中,DBA创建一个控制文件和redo日志文件是多路复用的数据库。归档日志和RMAN备份创建在快速恢复区域(FRA)。下面的任何涉及创建和维护数据库。
DBA包含三个通用的文件创建缺省值在初始化参数中。
DB_CREATE_FILE_DEST = ‘/u01/oradata’
DB_RECOVERY_FILE_DEST_SIZE = 10G
DB_RECOVERY_FILE_DEST = ‘/u02/oradata’
LOG_ARCHIVE_DEST_1 = ‘LOCATION = USE_DB_RECOVERY_FILE_DEST’
参数DB_CREATE_FILE_DEST为数据文件,临时文件,控制文件和redo日志创建设置缺省的文件系统目录。
参数DB_RECOVERY_FILE_DEST为控制文件,redo日志和RMAN备份设置缺省的文件系统目录。
参数LOG_ARCHIVE_DEST_1配置’LOCATION=USE_DB_RECOVERY_FILE_DEST’重定向归档日志到DB_RECOVERY_FILE_DEST位置。
参数DB_CREATE_FILE_DEST和DB_RECOVERY_FILE_DEST设置redo日志文件和控制文件创建的缺省的目录。每个redo日志和控制文件跨两个目录多路复用。
归档日志创建在DB_RECOVERY_FILE_DEST中,它们是OMF。
当不指定FORMAT选项时,RMAN的所有磁盘备份创建在DB_RECOVERY_FILE_DEST位置。备份是OMF。
3.增加OMF到现有的数据库
在这个示例中假设现有的数据库不含有任何OMF,但DBA想使用OMF创建新的表空间,存放它们在目录/u03/oradata。
1) 设置初始化参数
为了允许自动创建数据文件,设置DB_CREATE_FILE_DEST初始化参数到创建数据文件的文件系统目录。如下进行动态设置:
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/u03/oradata’;
2) 创建表空间
一旦设置了DB_CREATE_FILE_DEST,DATAFILE子语句可以从CREATE TABLESPACE语句中省略。数据文件缺省创建在DB_CRETAE_FILE_DEST指定的位置。例如:
SQL> CREATE TABLESPACE tbs_2;
当删除表空间tbs_2后,它的数据文件也自动被删除。
来源:《Oracle Database Database Administrator’s Guide, 19c》