规划数据库的重做日志,并在数据库创建期间创建所有必需的组和重做日志文件的成员。但是,您可能希望创建其他组或成员。例如,将组添加到重做日志可以纠正重做日志组可用性问题。
要创建新的重做日志组和成员,您必须具有ALTER DATABASE系统特权。数据库最多可包含MAXLOGFILES组。
有关ALTER DATABASE语句的完整说明,请参见Oracle数据库SQL语言参考
创建重做日志组
要创建一组新的重做日志文件,请使用带有ADD LOGFILE子句的SQL语句ALTER DATABASE。
以下语句将一组新的重做日志添加到数据库:
ALTER DATABASE ADD LOGFILE ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 100M;
提供新日志成员的完整路径名以指定其位置。否则,将在数据库服务器的缺省目录或当前目录中创建文件,具体取决于您的操作系统。
您还可以使用GROUP子句指定标识组的编号:
ALTER DATABASE ADD LOGFILE GROUP 10 ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 100M BLOCKSIZE 512;
使用组号可以更轻松地管理重做日志组。但是,组编号必须介于1和MAXLOGFILES之间。不要跳过重做日志文件组编号(即,不要对组10,20,30等编号),否则将占用数据库控制文件中不必要的空间。
在前面的语句中,BLOCKSIZE子句是可选的。有关详细信息,请参阅“规划重做日志文件的块大小”。
创建重做日志成员
在某些情况下,可能没有必要创建一组完整的重做日志文件。组可能已存在,但由于组中的一个或多个成员被删除(例如,由于磁盘故障),因此不完整。在这种情况下,您可以将新成员添加到现有组。
要为现有组创建新的重做日志成员,请使用带有ADD LOGFILE MEMBER子句的SQL语句ALTER DATABASE。以下语句将新的重做日志成员添加到重做日志组编号2:
ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2b.rdo' TO GROUP 2;
请注意,必须指定文件名,但不能指定大小。新成员的大小由该组现有成员的大小确定。
使用ALTER DATABASE语句时,您也可以通过在TO子句中指定组的所有其他成员来标识目标组,如以下示例所示:
ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2c.rdo' TO ('/oracle/dbs/log2a.rdo', '/oracle/dbs/log2b.rdo');
完全指定新日志成员的文件名,以指示应在何处创建操作系统文件。否则,将在数据库服务器的默认目录或当前目录中创建文件,具体取决于您的操作系统。您还可能注意到新日志成员的状态显示为INVALID。这是正常现象,在首次使用时会变为活动状态(空白)。
参考资料
https://docs.oracle.com/cd/E11882_01/server.112/e25494/onlineredo.htm#ADMIN11319