在LightDB数据库中,可以指定lightdb_syntax_compatible_type去切换到不同数据库引擎,比如Oracle、MySQL,这有点类似于MySQL中存储引擎的概念,LightDB支持不同数据库引擎,我们分别可以在cluster、数据库、用户、sql级别去指定
1、cluster级别(整个实例级别)
如下配置文件中添加lightdb_syntax_compatible_type=oracle
[lightdb@101-35-191-172 defaultCluster]$ tail -f postgresql.conf parallel_setup_cost=10000 shared_preload_libraries='canopy,pg_stat_statements,lt_stat_activity,pg_prewarm,pg_cron,pgaudit,pg_hint_plan,pg_show_plans,lt_standby_forward,pg_pathman' track_io_timing=on log_min_messages=info temp_buffers=64MB commit_siblings=10 canopy.shard_count=4 min_parallel_table_scan_size=2GB lock_timeout=1900000 lightdb_syntax_compatible_type=oracle #然后执行 lt_ctl reload lightdb@postgres=# show lightdb_syntax_compatible_type ; lightdb_syntax_compatible_type -------------------------------- Oracle (1 row)
2、用户级别
ALTER ROLE lightdb@postgres=# \c fund60 oracle_test; oracle_test@fund60=# select * from user_ind_columns where rownum < 2; column_name | index_name | table_name -------------+---------------------+--------------- CUST_ID | i_account_custid_po | account (1 row)
3、数据库级别
设置database级别,database下所有对象支持oracle语法兼容
oracle_test@fund60=# alter database fund60 set lightdb_syntax_compatible_type to oracle; ALTER DATABASE
4、session级别
lightdb@postgres=# show lightdb_syntax_compatible_type ; lightdb_syntax_compatible_type -------------------------------- off (1 row) lightdb@postgres=# create table testoracle ( id number, name varchar2(100)); CREATE TABLE lightdb@postgres=# show search_path ; search_path ------------------------- "$user", public, oracle (1 row) lightdb@postgres=# select * from testoracle where rownum < 2; ERROR: lightdb rownum not enable, syntax compatible type is not oracle. lightdb@postgres=# set lightdb_syntax_compatible_type = oracle; SET lightdb@postgres=# select * from testoracle where rownum < 2; id | name ----+------ (0 rows)
1、lightdb_syntax_compatible_type 和 search_path 包含不同的内容,比如varchar2数据类型是Oracle特有的数据类型,其兼容特性是由 search_path 控制,而 rownum等相关特性是由 lightdb_syntax_compatible_type控制
2、推荐使用数据库级别设置lightdb_syntax_compatible_type,这样更符合业务需求,一般业务都是跟着数据库级别走的。