基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 数据库预留关键字相关问题总结
更新时间:2026-05-18 09:11
本文以 OceanBase 数据库 V4.3.5 版本 为例,介绍 OceanBase 数据库预留关键字相关问题总结。
OceanBase 数据库 MySQL 模式兼容原生 MySQL 语法,预留关键字语法规则亦然。
OceanBase 数据库 Oracle 模式兼容原生 Oracle 语法,预留关键字语法规则亦然。
无论在原生 MySQL,原生 Oracle,还是 OceanBase 数据库,所有 SQL (DDL、DML 等)和所有对象名(表名、列名、参数名等)建议按如下规则使用:
建议一:尽量避免使用预留关键字。
避免使用当前数据库预留关键字,甚至避免使用主流数据库(Oracle、MySQL、PostgreSQL 等)所有的预留关键字,以避免开发过程中或异构数据库迁移过程中不必要的问题。
OceanBase 数据库用预留关键字详见:预留关键字(MySQL 模式)、预留关键字(Oracle 模式)。
建议二:如使用预留关键字,建议按相应数据库最佳实践使用。
在原生 MySQL 或 OceanBase 数据库 MySQL 模式下:
1.1 所有 SQL 中预留关键字使用反引号(back quotes)括起来。
1.2 预留关键字全部小写。
推荐用法示例如下。
CREATE TABLE test_quote (`key` VARCHAR(20));
SELECT `key` FROM test_quote;
在原生 Oracle 或 OceanBase 数据库 Oracle 模式下:
2.1 所有 SQL 中预留关键字使用双引号 (double quotes) 括起来
2.2 预留关键字全部大写
推荐用法示例如下。
CREATE TABLE test_comment ("COMMENT" VARCHAR2(20));
SELECT "COMMENT" FROM test_comment;
详细说明
在如下场景中,我们有时会遇到预留关键字相关的问题。
问题一:预留关键字与函数名重名
在原生 Oracle 或 OceanBase 数据库 Oracle 模式中,USER 既是预留关键字,也是内置函数,使用时需要特别注意,因为无论加不加双引号,它都不会报错,但可能得不到你期望的结果。
未使用双引号时,它是内置函数,用于返回当前数据库会话的用户名(即登录数据库的用户)。
SQL> SELECT user FROM test_quote;
USER
--------------------------------------------------------------------------------
ALVIN
使用双引号时,它是列名 (预留关键字需要使用双引号括起来)。
SQL> SELECT "USER" FROM test_quote;
USER
------------------------------------------------------------
TOM
测试用例如下。
CREATE TABLE test_quote (user VARCHAR2(20));
CREATE TABLE test_quote ("USER" VARCHAR2(20));
INSERT INTO test_quote ("USER") VALUES ('TOM');
COMMIT;
SELECT user FROM test_quote;
SELECT "USER" FROM test_quote;
在原生 Oracle 中测试结果如下。
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 30 17:56:40 2025
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> CREATE TABLE test_quote (user VARCHAR2(20));
CREATE TABLE test_quote (user VARCHAR2(20))
*
ERROR at line 1:
ORA-00904: : invalid identifier
SQL> CREATE TABLE test_quote ("USER" VARCHAR2(20));
Table created.
SQL> INSERT INTO test_quote ("USER") VALUES ('TOM');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT user FROM test_quote;
USER
--------------------------------------------------------------------------------
ALVIN
SQL> SELECT "USER" FROM test_quote;
USER
------------------------------------------------------------
TOM
故在 OceanBase 数据库 Oracle 模式下查询系统视 gv$ob_processlist 的 "USER" 列时需要注意加双引号,如下。
SELECT "USER" FROM gv$ob_processlist WHERE rownum<=1;
问题二:SQL 语法报错
在原生 MySQL 或 OceanBase 数据库 MySQL 模式下,如 SQL 中预留关键字未使用反引号 (back quotes) 括起来,则语法报错。
原生 MySQL 测试结果如下。
Server version: 8.0.41 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE test_quote (key VARCHAR(20));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(20))' at line 1
mysql> CREATE TABLE test_quote (`key` VARCHAR(20));
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO test_quote (`key`) VALUES ('MyKey');
Query OK, 1 row affected (0.01 sec)
mysql> SELECT key FROM test_quote;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key FROM test_quote' at line 1
mysql> SELECT `key` FROM test_quote;
+-------+
| key |
+-------+
| MyKey |
+-------+
1 row in set (0.00 sec)
在原生 Oracle 或 OceanBase 数据库 Oracle 模式下,如 SQL 中预留关键字未使用双引号 (double quotes) 括起来,则语法报错。
在原生 Oracle 中测试结果如下。
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> CREATE TABLE test_comment (comment VARCHAR2(20));
CREATE TABLE test_comment (comment VARCHAR2(20))
*
ERROR at line 1:
ORA-00904: : invalid identifier
SQL> CREATE TABLE test_comment ("COMMENT" VARCHAR2(20));
Table created.
SQL> INSERT INTO test_comment ("COMMENT") VALUES ('COMMENT');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT comment FROM test_comment;
SELECT comment FROM test_comment
*
ERROR at line 1:
ORA-00936: missing expression
SQL> SELECT "comment" FROM test_comment;
SELECT "comment" FROM test_comment
*
ERROR at line 1:
ORA-00904: "comment": invalid identifier
SQL> SELECT "COMMENT" FROM test_comment;
COMMENT
------------------------------------------------------------
COMMENT
问题三:预留关键字列名大小写查询问题
在原生 Oracle 或 OceanBase 数据库 Oracle 模式下,列名使用双引号 (double quotes) 括起来后是区分大小写的。
测试用例如下。
CREATE TABLE test_case ("COMMENT" VARCHAR2(20));
SELECT "comment" FROM test_case;
SELECT "COMMENT" FROM test_case;
在原生 Oracle 中测试结果如下。
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> CREATE TABLE test_case ("COMMENT" VARCHAR2(20));
Table created.
SQL> SELECT "comment" FROM test_case;
SELECT "comment" FROM test_case
*
ERROR at line 1:
ORA-00904: "comment": invalid identifier
SQL> SELECT "COMMENT" FROM test_case;
no rows selected
在原生 MySQL 或 OceanBase 数据库 MySQL 模式下,列名使用反引号 (back quotes) 括起来后是不区分大小写的。
注:Linux 上表名在 lower_case_table_names 为 0 是区分大小写的,但所有情况下列名是不区分大小写的。
测试用例如下。
CREATE TABLE test_case (`Key` VARCHAR(20));
SELECT `KEY` FROM test_case;
SELECT `key` FROM test_case;
原生 MySQL 测试结果如下,列名即使使用反引号(back quotes)括起来后,DDL/DML 是不区分大小写的。
Server version: 8.0.41 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE test_case (`Key` VARCHAR(20));
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT `KEY` FROM test_case;
Empty set (0.01 sec)
mysql> SELECT `key` FROM test_case;
Empty set (0.00 sec)
从如下结果中可以看出,元数据中列名(Key)是区分大小写,但查询 information_schema.columns 时列名不区分大小写。为避免其他不必要的问题,建议原生 MySQL 或 OceanBase 数据库 MySQL 模式下列名统一小写。
mysql> SHOW CREATE TABLE test_case;
+-----------+------------------------------------------------------+
| Table | Create Table |
+-----------+------------------------------------------------------+
| test_case | CREATE TABLE `test_case` (
`Key` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-----------+------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT table_schema,table_name,column_name,data_type FROM information_schema.columns WHERE table_name = 'test_case' AND column_name='key';
+--------------+------------+-------------+-----------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | DATA_TYPE |
+--------------+------------+-------------+-----------+
| test | test_case | Key | varchar |
+--------------+------------+-------------+-----------+
1 row in set (0.00 sec)
问题四:异构数据库迁移问题
当从原生 MySQL 迁移至 OceanBase 数据库 Oracle 模式或从 Oracle 迁移至 OceanBase 数据库 MySQL 模式时,需要注意异构数据库预留关键字的差异。
应用程序中的 SQL 有可能需要做相应修改,即 SQL 中预留关键字使用双引号(double quotes)或反引号(back quotes)括起来。
从原生 MySQL 迁移至 OceanBase 数据库 Oracle 模式时,在源库 MySQL 中排查预留关键字使用情况 SQL 如下。
SELECT table_schema,table_name,column_name FROM information_schema.columns WHERE column_name IN ('ACCESS','ADD','ALL','ALTER','AND','ANY','AS','ASC','AUDIT','BETWEEN','BY','CHAR','CHECK','CLUSTER','COLUMN','COMMENT','COMPRESS','CONNECT','CREATE','CURRENT','CASE','CONNECT_BY_ROOT','DATE','DECIMAL','DEFAULT','DELETE','DESC','DISTINCT','DROP','DUAL','ELSE','EXCLUSIVE','EXISTS','FILE','FLOAT','FOR','FROM','GRANT','GROUP','HAVING','IDENTIFIED','IMMEDIATE','IN','INCREMENT','INDEX','INITIAL','INSERT','INTEGER','INTERSECT','INTO','IS','LEVEL','LIKE','LOCK','LONG','MAXEXTENTS','MINUS','MODE','MODIFY','NOAUDIT','NOCOMPRESS','NOT','NOTFOUND','NOWAIT','NULL','NUMBER','OF','OFFLINE','ON','ONLINE','OPTION','OR','ORDER','PCTFREE','PRIOR','PRIVILEGES','PUBLIC','RAW','RENAME','RESOURCE','REVOKE','ROW','ROWID','ROWLABEL','ROWNUM','ROWS','START','SELECT','SESSION','SET','SHARE','SIZE','SMALLINT','SUCCESSFUL','SYNONYM','SYSDATE','SQL_CALC_FOUND_ROWS','TABLE','THEN','TO','TRIGGER','UID','UNION','UNIQUE','UPDATE','USER','VALIDATE','VALUES','VARCHAR','VARCHAR2','VIEW','WHENEVER','WHERE','WITH')
AND table_schema NOT IN ('performance_schema','mysql','sys','information_schema')
ORDER BY column_name,table_schema;
从 Oracle 迁移至 OceanBase 数据库 MySQL 模式时,在源库 Oracle 中排查预留关键字使用情况 SQL 如下。
SELECT owner,table_name,column_name FROM dba_tab_columns WHERE column_name IN (
'accessible','add','alter','analyze','as','asc','asensitive','before','between','bigint','binary','blob','call','cascade','case','change','char','character','check','collate','column','condition','constraint','continue','convert','create','cross','current_date','current_time','current_timestamp','current_user','cursor','database','databases','day_hour','day_microsecond','day_minute','day_second','declare','decimal','default','delayed','delete','desc','describe','deterministic','distinctrow','div','double','drop','dual','each','else','elseif','enclosed','escaped','exists','exit','explain','fetch','float','float4','float8','for','force','foreign','fulltext','generated','get','grant','group','having','high_priority','hour_microsecond','hour_minute','hour_second','if','ignore','in','index','infile','inner','inout','insensitive','insert','int','int1','int2','int3','int4','int8','integer','interval','into','io_after_gtids','io_before_gtids','is','iterate','join','key','keys','kill','leave','left','like','limit','linear','lines','load','localtime','localtimestamp','long','longblob','longtext','loop','low_priority','master_bind','master_ssl_verify_server_cert','match','maxvalue','mediumblob','mediumint','mediumtext','middleint','minute_microsecond','minute_second','mod','modifies','natural','not','no_write_to_binlog','numeric','on','optimize','option','optionally','or','order','out','outer','outfile','partition','precision','primary','procedure','purge','range','read','reads','read_write','real','references','regexp','release','rename','repeat','replace','require','resignal','restrict','return','revoke','right','rlike','schema','schemas','second_microsecond','sensitive','separator','set','show','signal','smallint','spatial','specific','sql','sqlexception','sqlstate','sqlwarning','sql_big_result','sql_small_result','ssl','skip','starting','stored','table','terminated','then','tinyblob','tinyint','tinytext','to','trigger','undo','union','unlock','unsigned','update','usage','use','using','utc_date','utc_time','utc_timestamp','values','varbinary','varchar','varcharacter','varying','virtual','where','while','with','write','xor','year_month','zerofill'
) ORDER BY owner,table_name,column_name;
问题五:OceanBase 数据字典中的预留关键字
由于 OceanBase 数据库 MySQL 模式中增加了 Oracle 兼容视图 (DBA_PART_TABLES.INTERVAL) 等原因,查询 OceanBase 数据库数据字典时,需要注意列名使用预留关键字的情况。
OceanBase 数据库 MySQL 模式数据字典中列名使用预留关键字统计如下。
OceanBase 数据库 MySQL 模式中查询 SQL。
SELECT table_schema,table_name,column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name IN ('accessible','add','alter','analyze','as','asc','asensitive','before','between','bigint','binary','blob','call','cascade','case','change','char','character','check','collate','column','condition','constraint','continue','convert','create','cross','current_date','current_time','current_timestamp','current_user','cursor','database','databases','day_hour','day_microsecond','day_minute','day_second','declare','decimal','default','delayed','delete','desc','describe','deterministic','distinctrow','div','double','drop','dual','each','else','elseif','enclosed','escaped','exists','exit','explain','fetch','float','float4','float8','for','force','foreign','fulltext','generated','get','grant','group','having','high_priority','hour_microsecond','hour_minute','hour_second','if','ignore','in','index','infile','inner','inout','insensitive','insert','int','int1','int2','int3','int4','int8','integer','interval','into','io_after_gtids','io_before_gtids','is','iterate','join','key','keys','kill','leave','left','like','limit','linear','lines','load','localtime','localtimestamp','long','longblob','longtext','loop','low_priority','master_bind','master_ssl_verify_server_cert','match','maxvalue','mediumblob','mediumint','mediumtext','middleint','minute_microsecond','minute_second','mod','modifies','natural','not','no_write_to_binlog','numeric','on','optimize','option','optionally','or','order','out','outer','outfile','partition','precision','primary','procedure','purge','range','read','reads','read_write','real','references','regexp','release','rename','repeat','replace','require','resignal','restrict','return','revoke','right','rlike','schema','schemas','second_microsecond','sensitive','separator','set','show','signal','smallint','spatial','specific','sql','sqlexception','sqlstate','sqlwarning','sql_big_result','sql_small_result','ssl','skip','starting','stored','table','terminated','then','tinyblob','tinyint','tinytext','to','trigger','undo','union','unlock','unsigned','update','usage','use','using','utc_date','utc_time','utc_timestamp','values','varbinary','varchar','varcharacter','varying','virtual','where','while','with','write','xor','year_month','zerofill')
ORDER BY column_name,table_schema;
OceanBase 数据库 MySQL 模式中查询结果。
+--------------+------------------------------------+-------------+
| table_schema | table_name | column_name |
+--------------+------------------------------------+-------------+
| oceanbase | __tenant_virtual_table_column | default |
| oceanbase | DBA_OBJECTS | GENERATED |
| oceanbase | __all_virtual_obrpc_stat | index |
| oceanbase | DBA_IND_PARTITIONS | INTERVAL |
| oceanbase | DBA_PART_INDEXES | INTERVAL |
| oceanbase | DBA_IND_SUBPARTITIONS | INTERVAL |
| oceanbase | DBA_TAB_SUBPARTITIONS | INTERVAL |
| oceanbase | DBA_PART_TABLES | INTERVAL |
| oceanbase | DBA_TAB_PARTITIONS | INTERVAL |
| oceanbase | V$SQL_PLAN_MONITOR | KEY |
| oceanbase | GV$SQL_PLAN_MONITOR | KEY |
| oceanbase | __all_dummy | key |
| oceanbase | __tenant_virtual_table_column | key |
| oceanbase | __all_virtual_tenant_memory_info | limit |
| oceanbase | __tenant_virtual_object_definition | schema |
| oceanbase | __tenant_virtual_table_index | table |
+--------------+------------------------------------+-------------+
16 rows in set (0.056 sec)
OceanBase 数据库 MySQL 模式中测试如下。
obclient [oceanbase]> SELECT key FROM oceanbase.v$sql_plan_monitor LIMIT 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'FROM oceanbase.v$sql_plan_monitor LIMIT 1' at line 1
obclient [oceanbase]> SELECT `key` FROM oceanbase.v$sql_plan_monitor LIMIT 1;
Empty set (0.050 sec)
obclient [oceanbase]> SELECT interval FROM oceanbase.dba_part_tables LIMIT 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'FROM oceanbase.dba_part_tables LIMIT 1' at line 1
obclient [oceanbase]> SELECT `interval` FROM oceanbase.dba_part_tables LIMIT 1;
+----------+
| interval |
+----------+
| NULL |
+----------+
1 row in set (0.087 sec)
OceanBase 数据库 Oracle 模式数据字典中列名使用预留关键字统计如下。
OceanBase 数据库 Oracle 模式中查询 SQL。
SELECT owner,table_name,column_name FROM dba_tab_columns WHERE column_name IN (
'ACCESS','ADD','ALL','ALTER','AND','ANY','AS','ASC','AUDIT','BETWEEN','BY','CHAR','CHECK','CLUSTER','COLUMN','COMMENT','COMPRESS','CONNECT','CREATE','CURRENT','CASE','CONNECT_BY_ROOT','DATE','DECIMAL','DEFAULT','DELETE','DESC','DISTINCT','DROP','DUAL','ELSE','EXCLUSIVE','EXISTS','FILE','FLOAT','FOR','FROM','GRANT','GROUP','HAVING','IDENTIFIED','IMMEDIATE','IN','INCREMENT','INDEX','INITIAL','INSERT','INTEGER','INTERSECT','INTO','IS','LEVEL','LIKE','LOCK','LONG','MAXEXTENTS','MINUS','MODE','MODIFY','NOAUDIT','NOCOMPRESS','NOT','NOTFOUND','NOWAIT','NULL','NUMBER','OF','OFFLINE','ON','ONLINE','OPTION','OR','ORDER','PCTFREE','PRIOR','PRIVILEGES','PUBLIC','RAW','RENAME','RESOURCE','REVOKE','ROW','ROWID','ROWLABEL','ROWNUM','ROWS','START','SELECT','SESSION','SET','SHARE','SIZE','SMALLINT','SUCCESSFUL','SYNONYM','SYSDATE','SQL_CALC_FOUND_ROWS','TABLE','THEN','TO','TRIGGER','UID','UNION','UNIQUE','UPDATE','USER','VALIDATE','VALUES','VARCHAR','VARCHAR2','VIEW','WHENEVER','WHERE','WITH'
) AND owner = 'SYS' ORDER BY owner,table_name,column_name;
OceanBase 数据库 Oracle 模式中查询结果。
+-------+----------------------------------------+-------------+
| OWNER | TABLE_NAME | COLUMN_NAME |
+-------+----------------------------------------+-------------+
| SYS | DBA_OB_ARCHIVELOG | COMMENT |
| SYS | DBA_OB_ARCHIVELOG_SUMMARY | COMMENT |
| SYS | DBA_OB_BACKUP_DELETE_JOBS | COMMENT |
| SYS | DBA_OB_BACKUP_DELETE_JOB_HISTORY | COMMENT |
| SYS | DBA_OB_BACKUP_DELETE_TASKS | COMMENT |
| SYS | DBA_OB_BACKUP_DELETE_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_BACKUP_JOBS | COMMENT |
| SYS | DBA_OB_BACKUP_JOB_HISTORY | COMMENT |
| SYS | DBA_OB_BACKUP_SET_FILES | COMMENT |
| SYS | DBA_OB_BACKUP_TASKS | COMMENT |
| SYS | DBA_OB_BACKUP_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_BALANCE_JOBS | COMMENT |
| SYS | DBA_OB_BALANCE_JOB_HISTORY | COMMENT |
| SYS | DBA_OB_BALANCE_TASKS | COMMENT |
| SYS | DBA_OB_BALANCE_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_DATABASES | COMMENT |
| SYS | DBA_OB_IMPORT_TABLE_JOBS | COMMENT |
| SYS | DBA_OB_IMPORT_TABLE_JOB_HISTORY | COMMENT |
| SYS | DBA_OB_IMPORT_TABLE_TASKS | COMMENT |
| SYS | DBA_OB_IMPORT_TABLE_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_LS_ARB_REPLICA_TASKS | COMMENT |
| SYS | DBA_OB_LS_ARB_REPLICA_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_LS_REPLICA_TASKS | COMMENT |
| SYS | DBA_OB_LS_REPLICA_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_RECOVER_TABLE_JOBS | COMMENT |
| SYS | DBA_OB_RECOVER_TABLE_JOB_HISTORY | COMMENT |
| SYS | DBA_OB_RESTORE_HISTORY | COMMENT |
| SYS | DBA_OB_TRANSFER_PARTITION_TASKS | COMMENT |
| SYS | DBA_OB_TRANSFER_PARTITION_TASK_HISTORY | COMMENT |
| SYS | DBA_OB_TRANSFER_TASKS | COMMENT |
| SYS | DBA_OB_TRANSFER_TASK_HISTORY | COMMENT |
| SYS | GV$OB_FLT_TRACE_CONFIG | LEVEL |
| SYS | GV$OB_FUNCTION_IO_STAT | MODE |
| SYS | GV$OB_FUNCTION_IO_STAT | SIZE |
| SYS | GV$OB_GROUP_IO_STAT | MODE |
| SYS | GV$OB_PLAN_CACHE_PLAN_EXPLAIN | ROWS |
| SYS | GV$OB_PROCESSLIST | LEVEL |
| SYS | GV$OB_PROCESSLIST | USER |
| SYS | GV$OB_SESSION | USER |
| SYS | GV$OB_SQL_AUDIT | LEVEL |
| SYS | GV$OB_SSTABLES | SIZE |
| SYS | V$OB_ARCHIVE_DEST_STATUS | COMMENT |
| SYS | V$OB_FUNCTION_IO_STAT | MODE |
| SYS | V$OB_FUNCTION_IO_STAT | SIZE |
| SYS | V$OB_GROUP_IO_STAT | MODE |
| SYS | V$OB_LS_LOG_RESTORE_STATUS | COMMENT |
| SYS | V$OB_LS_REPLICA_TASK_PLAN | COMMENT |
| SYS | V$OB_PLAN_CACHE_PLAN_EXPLAIN | ROWS |
| SYS | V$OB_PROCESSLIST | LEVEL |
| SYS | V$OB_PROCESSLIST | USER |
| SYS | V$OB_SESSION | USER |
| SYS | V$OB_SQL_AUDIT | LEVEL |
| SYS | V$OB_SSTABLES | SIZE |
+-------+----------------------------------------+-------------+
53 rows in set (0.158 sec)
OceanBase 数据库 Oracle 模式中测试如下。
obclient [ALVIN]> SELECT USER FROM gv$ob_processlist WHERE rownum<=1;
+------+
| USER |
+------+
| ALVIN |
+------+
1 row in set (1.218 sec)
obclient [ALVIN]> SELECT "USER" FROM gv$ob_processlist WHERE rownum<=1;
+------+
| USER |
+------+
| SYS |
+------+
1 row in set (0.408 sec)
obclient [ALVIN]> SELECT COMMENT FROM dba_ob_databases WHERE rownum<=1;
OBE-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'COMMENT FROM dba_ob_databases WHERE rownum<=1' at line 1
obclient [ALVIN]> SELECT "COMMENT" FROM dba_ob_databases WHERE rownum<=1;
+-----------------+
| COMMENT |
+-----------------+
| system database |
+-----------------+
1 row in set (0.008 sec)
附:
原生 Oracle 数据字典中列名使用预留关键字统计如下。
OWNER TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------ ------------------------------
SYS GV_$ARCHIVE CURRENT
SYS GV_$LATCH_MISSES WHERE
SYS GV_$RECOVER_FILE ONLINE
SYS GV_$SORT_USAGE USER
SYS V_$ARCHIVE CURRENT
SYS V_$DIAG_DDE_USR_ACT_PARAM_DEF DEFAULT
SYS V_$DIAG_DIR_EXT LEVEL
SYS V_$DIAG_HM_RUN MODE
SYS V_$DIAG_IPS_PACKAGE_HISTORY MODE
SYS V_$DIAG_IPS_PKG_UNPACK_HIST MODE
SYS V_$DIAG_VHM_RUN MODE
SYS V_$DIAG_VIPS_PACKAGE_HISTORY MODE
SYS V_$LATCH_MISSES WHERE
SYS V_$RECOVER_FILE ONLINE
SYS V_$SORT_USAGE USER
15 rows selected.
适用版本
OceanBase 数据库 V3.x、V4.x 版本。