在数据库使用期间,可以按照以下步骤使用OMF为表空间创建数据文件,为临时表空间创建临时文件,创建控制文件,创建redo日志文件和归档日志。
1.使用OMF为表空间创建数据文件
当某些条件满足时,下面的SQL语句可以使用OMF为表空间创建数据文件:CREATE TABLESPACE,CREATE UNDO TABLESPACE和ALTER TABLESPACE … ADD DATAFILE。
当创建永久表空间或undo表空间时,DATAFILE子语句是可选的。当包含DATAFILE子语句,文件名称是可选的。如果DATAFILE子语句或没有提供文件名称,那么应用下面的规则: 1)如果指定了DB_CREATE_FILE_DEST初始化参数,那么Oracle管理的数据文件将创建在参数指定的位置中。 2)如果没有指定DB_CREATE_FILE_DEST初始化参数,那么创建数据文件的语句会失败。
当使用ALTER TABLESPACE … ADD DATAFILE增加数据文件到表空间时,文件名称是可选的。如果没有指定文件名称,那么应用上面讨论的相同的规则。
缺省情况下,永久表空间的OMF是100M,是可以自动扩展到无限最大大小。然而,如果在DATAFILE子语句中通过SIZE值(同时不使用AUTOEXTEND子语句)覆写这些缺省值,那么数据文件是不自动扩展的。
1.1.使用OMF创建表空间示例
以下示例阐述了使用OMF创建表空间。
示例1: 示例设置数据文件创建的缺省位置到/u01/oradata,然后使用在那个位置中的一个数据文件创建一个名称为tbs_1的表空间。数据文件是100M,可以自动扩展到无限最大大小。 SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/u01/oradata’; SQL> CREATE TABLESPACE tbs_1;
示例2: 示例创建一个名称为tbs_2的表空间,它使用的数据文件位于/u01/oradata。数据文件的初始大小是400MB,因为指定了SIZE子语句,数据文件是不可自动扩展的。
以下的参数设置包含在初始化参数文件中: DB_CREATE_FILE_DEST = ‘/u01/oradata’
在SQL提示符中执行以下语句: SQL> CREATE TABLESPACE tbs_2 DATAFILE SIZE 400M;
示例3: 示例创建一个名称为tbs_3的表空间,它使用的可自动扩展的数据文件位于/u01/oradata。数据文件的初始大小是100MB,最大大小是800MB。
以下的参数设置包含在初始化参数文件中: DB_CREATE_FILE_DEST = ‘/u01/oradata’
在SQL提示符中执行以下语句: SQL> CREATE TABLESPACE tbs_3 DATAFILE AUTOEXTEND ON MAXSIZE 800M;
示例4: 示例设置数据文件创建的缺省位置到/u01/oradata,然后使用在那个目录下的两个数据文件创建一个名称为tbs_4的表空间。两个数据文件的初始大小是200M,因为指定了SIZE子语句,数据文件是不可自动扩展的。
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/u01/oradata’; SQL> CREATE TABLESPACE tbs_4 DATAFILE SIZE 200M, SIZE 200M;
1.2.使用OMF创建undo表空间示例
以下示例阐述了使用OMF创建undo表空间。
示例使用目录/u01/oradata中的一个数据文件创建一个名称为undotbs_1的表空间。Undo表空间的数据文件是100MB,可以自动扩展到无限最大大小。
以下的参数设置包含在初始化参数文件中: DB_CREATE_FILE_DEST = ‘/u01/oradata’
在SQL提示符中执行以下语句: SQL> CREATE UNDO TABLESPACE undotbs_1;
1.3.使用OMF更改表空间示例
以下示例阐述了增加Oracle管理的可自动扩展的数据文件到表空间。
示例增加Oracle管理的可扩展数据文件到tbs_1表空间。数据文件初始大小是100MB,最大大小是800MB。
以下的参数设置包含在初始化参数文件中: DB_CREATE_FILE_DEST = ‘/u01/oradata’
在SQL提示符中执行以下语句: SQL> ALTER TABLESPACE tbs_1 ADD DATAFILE AUTOEXTEND ON MAXSIZE 800M;
2.使用OMF为临时表空间创建临时文件
当某些条件满足时,下面的SQL语句可以使用OMF为表空间创建临时文件:CREATE TEMPORARY TABLESPACE和ALTER TABLESPACE … ADD TEMPFILE。
当创建临时表空间时,TEMPFILE子语句是可选的。如果包含TEMPFILE子语句,那么文件名称是可选的。如果TEMPFILE子语句或没有提供文件名称,那么应用下面的规则: 1)如果指定了DB_CREATE_FILE_DEST初始化参数,那么Oracle管理的临时文件将创建在参数指定的位置中。 2)如果没有指定DB_CREATE_FILE_DEST初始化参数,那么创建临时文件的语句会失败。
当使用ALTER TABLESPACE … ADD TEMPFILE增加临时文件到表空间时,文件名称是可选的。如果没有指定文件名称,那么应用上面讨论的相同的规则。
当覆写OMF的缺省属性时,如果指定了SIZE值但不指定AUTOEXTEND子语句,那么数据文件是不会自动扩展的。
创建临时表空间示例: 示例设置数据文件创建的缺省位置到/u01/oradata,然后使用在那个目录下的一个临时文件创建一个名称为temptbs_1的表空间。临时文件的初始大小是100M,可自动扩展到无限最大大小。 SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/u01/oradata’; SQL> CREATE TEMPORARY TABLESPACE temptbs_1;
更改临时表空间示例: 示例设置数据文件创建的缺省位置到/u03/oradata,然后增加一个在缺省位置下的临时文件到名称为temptbs_1的表空间。临时文件的初始大小是100M,可自动扩展到无限最大大小。 SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/u03/oradata’; SQL> ALTER TABLESPACE TBS_1 ADD TEMPFILE;
3.使用OMF创建控制文件
当某些条件满足时, SQL语句CREATE CONTROLFILE可以使用OMF创建控制文件。
当执行CREATE CONTROLFILE语句时,控制文件被创建(或再使用,如果指定了REUSE)在初始化参数CONTROL_FILES指定的文件中。如果CONTROL_FILES参数没有指定,那么控制文件创建在缺省的控制文件目的地。
如果Oracle数据库创建了一个Oracle管理的控制文件和存在一个服务器参数文件,那么数据库在服务器参数文件中创建一个CONTROL_FILES初始化参数条目。如果不存在服务器参数文件,那么必须手动包含一个CONTROL_FILES初始化参数条目在文本初始化参数文件中。
创建控制文件时,如果数据库中的数据文件是OMF,那么数据库为文件生成的文件名称必须提供在语句的DATAFILE子语句中。
创建控制文件时,如果redo日志文件是OMF,那么NORESETLOGS或RESETLOGS关键字决定了可以在LOGFILE子语句中提供什么信息: 1)如果使用了NORESETLOGS,那么数据库为Oracle管理的redo日志文件生成的文件名称必须提供在LOGFILE子语句中。 2)如果使用了RESETLOGS,那么redo日志文件的名称可以像CREATE DATABASE语句一样提供。请参考“在数据库创建时指定控制文件”章节。
3.1.使用NORESETLOGS关键字创建控制文件示例:
以下CREATE CONTROLFILE语句通过在使用Oracle管理的数据文件和redo日志文件的数据库上执行ALTER DATABASE BACKUP CONTROLFILE TO TRACE语句生成。
CREATE CONTROLFILE
DATABASE sample
LOGFILE
GROUP 1 ('/u01/oradata/SAMPLE/onlinelog/o1_mf_1_o220rtt9_.log',
'/u02/oradata/SAMPLE/onlinelog/o1_mf_1_v2o0b2i3_.log')
SIZE 100M,
GROUP 2 ('/u01/oradata/SAMPLE/onlinelog/o1_mf_2_p22056iw_.log',
'/u02/oradata/SAMPLE/onlinelog/o1_mf_2_p02rcyg3_.log')
SIZE 100M
NORESETLOGS
DATAFILE '/u01/oradata/SAMPLE/datafile/o1_mf_system_xu34ybm2_.dbf'
SIZE 100M,
'/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_aawbmz51_.dbf'
SIZE 100M,
'/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_apqbmz51_.dbf'
SIZE 100M
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG;
3.2.使用RESETLOGS关键字创建控制文件示例:
以下示例的CREATE CONTROLFILE语句使用RESETLOGS选项。DB_CREATE_FILE_DEST, DB_RECOVERY_FILE_DEST,DB_CREATE_ONLINE_LOG_DEST_n中的某些组合必须设置。
CREATE CONTROLFILE
DATABASE sample
RESETLOGS
DATAFILE '/u01/oradata/SAMPLE/datafile/o1_mf_system_aawbmz51_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_axybmz51_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_azzbmz51_.dbf'
SIZE 100M
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG;
随后,必须执行ALTER DATABASE OPEN RESETLOGS语句来重建redo日志文件。如果之前的日志文件是OMF,那么它们不会被删除。
4.使用OMF创建redo日志文件
Redo日志文件在数据库创建时创建。它们也可以在执行ALTER DATABASE ADD LOGFILE 和ALTER DATABASE OPEN RESETLOGS时创建。
4.1.使用ALTER DATABASE ADD LOGFILE语句
使用语句ALTER DATABASE ADD LOGFILE可以在后来增加新组到当前的redo日志中。
如果使用OMF,ADD LOGFILE子语句中的文件名是可选的。如果没有提供文件名称,redo日志文件创建在缺省的日志文件目的地。
如果没有提供文件名称,同时也没有提供一个创建OMF需要的初始化参数,那么语句返回一个错误。
缺省的Oracle管理的日志文件是100MB。
可以通过指定完整的文件名称继续增加和删除redo日志文件成员。
增加新redo日志文件示例: 示例增加一个日志组,其中一个成员位于/u01/oradata,另外一个位于/u02/oradata。每个日志文件的大小是100MB。
以下的参数设置会包含在初始化文件中: DB_CREATE_ONLINE_LOG_DEST_1 = ‘/u01/oradata’ DB_CREATE_ONLINE_LOG_DEST_2 = ‘/u02/oradata’
在SQL提示符中执行以下语句: SQL> ALTER DATABASE ADD LOGFILE;
4.2.使用ALTER DATABASE OPEN RESETLOGS语句
如果之前创建控制文件时指定RESETLOGS和没有指定文件名称或指定不存在的文件名称,那么当执行ALTER DATABASE OPEN RESETLOGS语句时数据库创建redo日志文件。
当没有在控制文件中指定时,决定存储redo日志文件的目录的规则和前面“在数据库创建时指定redo日志文件”章节讨论的相同。
5.使用OMF创建归档日志
归档日志通过后台进程或SQL语句创建。
当符合以下条件时,归档日志创建在DB_RECOVERY_FILE_DEST位置: 1) ARC或LGWR后台进程归档在线redo日志 2) ALTER SYSTEM ARCHIVE LOG CURRENT语句执行时
例如,假设下面的参数设置包含在初始化参数文件中: DB_RECOVERY_FILE_DEST_SIZE = 20G DB_RECOVERY_FILE_DEST = ‘/u01/oradata’ LOG_ARCHIVE_DEST_1 = ‘LOCATION=USE_DB_RECOVERY_FILE_DEST’
来源:《Oracle Database Database Administrator’s Guide, 19c》
|