Liangda-w commented on a change in pull request #10214:
URL: https://github.com/apache/shardingsphere/pull/10214#discussion_r623066097



##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
##########
@@ -526,3 +526,51 @@ hashSubpartitionQuantity
 odciParameters
     : identifier
     ;
+
+databaseName
+    : identifier
+    ;
+
+locationName
+    : STRING_
+    ;
+
+fileName
+    : STRING_
+    ;
+
+asmFileName
+    : identifier
+    ;

Review comment:
       I think `asmFileName` is not the same as `identifier`, please see 
[doc](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/file_specification.html#GUID-580FA726-F712-4410-90CF-783A2DA89688)

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)

Review comment:
       here `SQ_` not needed?

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;
+
+stopStandbyClause
+    : (STOP | ABORT) LOGICAL STANDBY APPLY
+    ;
+
+switchoverClause
+    : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+    ;
+
+convertDatabaseClause
+    : CONVERT TO LP_ (PHYSICAL | SNAPSHOT) RP_ STANDBY
+    ;
+
+failoverClause
+    : FAILOVER TO databaseName FORCE?
+    ;
+
+defaultSettingsClauses
+    : DEFAULT EDITION EQ_ editionName
+    | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE
+    | DEFAULT TABLESPACE tablespaceName
+    | DEFAULT LOCAL? TEMPORARY TABLESPACE (tablespaceName | 
tablespaceGroupName)
+    | ENABLE BLOCK CHANGE TRACKING (USING FILE fileName REUSE?)?
+    | DISABLE BLOCK CHANGE TRACKING
+    | NO? FORCE FULL DATABASE CACHING
+    | CONTAINERS DEFAULT TARGET EQ_ (LP_ containerName RP_ | NONE)
+    | flashbackModeClause
+    | undoModeClause
+    ;

Review comment:
       `RENAME GLOBAL_NAME TO database....` and `set_time_zone_clause` is 
missing

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;

Review comment:
       Maybe it's better to put `dateValue` in `BaseRule.g4`?
   
   Beside this, the definition is not precise as per 
[definition](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ALTER-DATABASE.html#GUID-8069872F-E680-4511-ADD8-A4E30AF67986):
   
   > date must be a character literal in the format 'YYYY-MM-DD:HH24:MI:SS'. It 
must represent a time that is immediately after the snapshot was completed. If 
you specify the UNTIL TIME clause, then SNAPSHOT TIME date must be earlier than 
UNTIL TIME date.

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDatabaseStatement.java
##########
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
+
+import lombok.ToString;
+import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
+
+/**
+ * Oracle alter database statement.
+ */
+@ToString
+public class OracleAlterDatabaseStatement extends AbstractSQLStatement 
implements DDLStatement, OracleStatement {

Review comment:
       Since alter database is a common sql, also exists in MySQL, 
PostgreSQL... would it be better to create an abstract `AlterDatabaseStatement` 
class in `org/apache/shardingsphere/sql/parser/sql/common/statement/ddl`?

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;
+
+stopStandbyClause
+    : (STOP | ABORT) LOGICAL STANDBY APPLY
+    ;
+
+switchoverClause
+    : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+    ;
+
+convertDatabaseClause
+    : CONVERT TO LP_ (PHYSICAL | SNAPSHOT) RP_ STANDBY
+    ;
+
+failoverClause
+    : FAILOVER TO databaseName FORCE?
+    ;
+
+defaultSettingsClauses
+    : DEFAULT EDITION EQ_ editionName
+    | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE
+    | DEFAULT TABLESPACE tablespaceName
+    | DEFAULT LOCAL? TEMPORARY TABLESPACE (tablespaceName | 
tablespaceGroupName)
+    | ENABLE BLOCK CHANGE TRACKING (USING FILE fileName REUSE?)?
+    | DISABLE BLOCK CHANGE TRACKING
+    | NO? FORCE FULL DATABASE CACHING
+    | CONTAINERS DEFAULT TARGET EQ_ (LP_ containerName RP_ | NONE)
+    | flashbackModeClause
+    | undoModeClause
+    ;
+
+flashbackModeClause
+    : FLASHBACK (ON | OFF)
+    ;
+
+undoModeClause
+    : LOCAL UNDO (ON | OFF)
+    ;
+
+moveDatafileClause
+    : MOVE DATAFILE LP_ (fileName | asmFileName | fileNumber) RP_
+    (TO LP_ (fileName | asmFileName) RP_ )? REUSE? KEEP?
+    ;

Review comment:
       why `LP_` and `RP_`? Should be `SQ_`?

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*

Review comment:
       `TEMPFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*`

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;
+
+stopStandbyClause
+    : (STOP | ABORT) LOGICAL STANDBY APPLY
+    ;
+
+switchoverClause
+    : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+    ;
+
+convertDatabaseClause
+    : CONVERT TO LP_ (PHYSICAL | SNAPSHOT) RP_ STANDBY

Review comment:
       why `LP_` and `RP_`?

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;

Review comment:
       I think the brackets should be like the following, as `parallel_clause` 
is optional for all the clauses before
   
   ```
   standbyDatabaseClauses
       : ((activateStandbyDbClause
       | maximizeStandbyDbClause
       | registerLogfileClause
       | commitSwitchoverClause
       | startStandbyClause
       | stopStandbyClause
       | convertDatabaseClause) parallelClause?)
       | (switchoverClause | failoverClause)
       ;
   ```

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;

Review comment:
       `INITIAL scn_value` is missing

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;
+
+stopStandbyClause
+    : (STOP | ABORT) LOGICAL STANDBY APPLY
+    ;
+
+switchoverClause
+    : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+    ;
+
+convertDatabaseClause
+    : CONVERT TO LP_ (PHYSICAL | SNAPSHOT) RP_ STANDBY
+    ;
+
+failoverClause
+    : FAILOVER TO databaseName FORCE?
+    ;
+
+defaultSettingsClauses
+    : DEFAULT EDITION EQ_ editionName
+    | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE
+    | DEFAULT TABLESPACE tablespaceName
+    | DEFAULT LOCAL? TEMPORARY TABLESPACE (tablespaceName | 
tablespaceGroupName)
+    | ENABLE BLOCK CHANGE TRACKING (USING FILE fileName REUSE?)?
+    | DISABLE BLOCK CHANGE TRACKING
+    | NO? FORCE FULL DATABASE CACHING
+    | CONTAINERS DEFAULT TARGET EQ_ (LP_ containerName RP_ | NONE)
+    | flashbackModeClause
+    | undoModeClause
+    ;

Review comment:
       `RENAME GLOBAL_NAME TO database....` and `set_time_zone_clause` is 
missing

##########
File path: 
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
##########
@@ -1132,3 +1132,278 @@ rowArchivalVisibilityClause
 defaultCollationClause
     : DEFAULT_COLLATION EQ_ (collationName | NONE)
     ;
+
+alterDatabase
+    : ALTER DATABASE databaseName?
+    ( startupClauses
+    | recoveryClauses
+    | databaseFileClauses
+    | logfileClauses
+    | controlfileClauses
+    | standbyDatabaseClauses
+    | defaultSettingsClauses
+    | instanceClauses
+    | securityClause
+    | prepareClause
+    | dropMirrorCopy
+    | lostWriteProtection
+    | cdbFleetClauses
+    | propertyClause )
+    ;
+
+startupClauses
+    : MOUNT ((STANDBY | CLONE) DATABASE)?
+    | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | 
READ ONLY)
+    ;
+
+recoveryClauses
+    : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+    ;
+
+generalRecovery
+    : RECOVER (AUTOMATIC)? (FROM locationName)? (
+      (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+      ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+    | CONTINUE DEFAULT?
+    | CANCEL
+    )
+    ;
+
+fullDatabaseRecovery
+    : STANDBY? DATABASE
+    ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+    | USING BACKUP CONTROLFILE
+    | SNAPSHOT TIME dateValue
+    )+)?
+    ;
+
+dateValue
+    : dateTimeLiterals | stringLiterals | numberLiterals | expr
+    ;
+
+partialDatabaseRecovery
+    : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+    | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ;
+
+managedStandbyRecovery
+    : RECOVER (MANAGED STANDBY DATABASE
+    ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+    | NODELAY
+    | UNTIL CHANGE NUMBER_
+    | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+    | FINISH | CANCEL)?
+    | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+    ;
+
+databaseFileClauses
+    : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | createDatafileClause
+    | alterDatafileClause
+    | alterTempfileClause
+    | moveDatafileClause
+    ;
+
+createDatafileClause
+    : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+    ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+    ;
+
+fileSpecification
+    : datafileTempfileSpec | redoLogFileSpec
+    ;
+
+datafileTempfileSpec
+    : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+    ;
+
+autoextendClause
+    : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+    ;
+
+redoLogFileSpec
+    : ((fileName | asmFileName)
+    | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+    (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+    ;
+
+alterDatafileClause
+    : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+    (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END 
BACKUP | ENCRYPT | DECRYPT)
+    ;
+
+alterTempfileClause
+    : TEMPFILE fileName (COMMA_ fileName )*
+    (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | 
ONLINE | OFFLINE)
+    ;
+
+logfileClauses
+    : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+    | NO? FORCE LOGGING
+    | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+    | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+    | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* 
(UNRECOVERABLE DATAFILE)?
+    | addLogfileClauses
+    | dropLogfileClauses
+    | switchLogfileClause
+    | supplementalDbLogging)
+    ;
+
+logfileDescriptor
+    : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+    ;
+
+addLogfileClauses
+    : ADD STANDBY? LOGFILE
+    (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+    (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+    | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor 
(COMMA_ logfileDescriptor)*)
+    ;
+
+controlfileClauses
+    : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE 
AS fileName REUSE?
+    | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+    ;
+
+traceFileClause
+    : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+    ;
+
+dropLogfileClauses
+    : DROP STANDBY? LOGFILE
+    (logfileDescriptor (COMMA_ logfileDescriptor)*
+    | MEMBER fileName (COMMA_ fileName)*)
+    ;
+
+switchLogfileClause
+    : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+    ;
+
+supplementalDbLogging
+    : (ADD | DROP) SUPPLEMENTAL LOG
+    ( DATA
+    | supplementalIdKeyClause
+    | supplementalPlsqlClause
+    | supplementalSubsetReplicationClause)
+    ;
+
+supplementalPlsqlClause
+    : DATA FOR PROCEDURAL REPLICATION
+    ;
+
+supplementalSubsetReplicationClause
+    : DATA SUBSET DATABASE REPLICATION
+    ;
+
+standbyDatabaseClauses
+    : ((activateStandbyDbClause
+    | maximizeStandbyDbClause
+    | registerLogfileClause
+    | commitSwitchoverClause
+    | startStandbyClause
+    | stopStandbyClause
+    | convertDatabaseClause parallelClause?)
+    | (switchoverClause | failoverClause))
+    ;
+
+activateStandbyDbClause
+    : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+    ;
+
+maximizeStandbyDbClause
+    : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | 
PERFORMANCE)
+    ;
+
+registerLogfileClause
+    : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification 
(COMMA_ fileSpecification)* (FOR logminerSessionName)?
+    ;
+
+commitSwitchoverClause
+    : (PREPARE | COMMIT) TO SWITCHOVER
+    ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | 
WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+    | LOGICAL STANDBY)
+    | CANCEL
+    )?
+    ;
+
+startStandbyClause
+    : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | 
(SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+    ;
+
+stopStandbyClause
+    : (STOP | ABORT) LOGICAL STANDBY APPLY
+    ;
+
+switchoverClause
+    : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+    ;
+
+convertDatabaseClause
+    : CONVERT TO LP_ (PHYSICAL | SNAPSHOT) RP_ STANDBY
+    ;
+
+failoverClause
+    : FAILOVER TO databaseName FORCE?
+    ;
+
+defaultSettingsClauses
+    : DEFAULT EDITION EQ_ editionName
+    | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE
+    | DEFAULT TABLESPACE tablespaceName
+    | DEFAULT LOCAL? TEMPORARY TABLESPACE (tablespaceName | 
tablespaceGroupName)
+    | ENABLE BLOCK CHANGE TRACKING (USING FILE fileName REUSE?)?
+    | DISABLE BLOCK CHANGE TRACKING
+    | NO? FORCE FULL DATABASE CACHING
+    | CONTAINERS DEFAULT TARGET EQ_ (LP_ containerName RP_ | NONE)
+    | flashbackModeClause
+    | undoModeClause
+    ;
+
+flashbackModeClause
+    : FLASHBACK (ON | OFF)
+    ;
+
+undoModeClause
+    : LOCAL UNDO (ON | OFF)
+    ;
+
+moveDatafileClause
+    : MOVE DATAFILE LP_ (fileName | asmFileName | fileNumber) RP_
+    (TO LP_ (fileName | asmFileName) RP_ )? REUSE? KEEP?
+    ;
+
+instanceClauses
+    : (ENABLE | DISABLE) INSTANCE instanceName
+    ;
+
+securityClause
+    : GUARD (ALL | STANDBY | NONE)
+    ;
+
+prepareClause
+    : PREPARE MIRROR COPY copyName WITH (UNPROTECTED | MIRROR | HIGH) 
REDUNDANCY
+    ;

Review comment:
       `PREPARE MIRROR COPY copyName (WITH (UNPROTECTED | MIRROR | HIGH) 
REDUNDANCY)?`




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to