如何通过系统表或视图获取一个表是一般表还是复制表

【 使用环境 】 测试环境
【 OB or 其他组件 】OB
【 使用版本 】
【问题描述】MySQL模式和Oracle模式下,如何通过系统表或视图获取一个表是一般表还是复制表

MySQL 模式下,应该可以通过 oceanbase.__all_table 系统表里的 duplicate_scope 来区分。

obclient> CREATE TABLE dup(c1 int) DUPLICATE_SCOPE='cluster';

obclient> select duplicate_scope from oceanbase.__all_table where table_name = 'dup'\G
*************************** 1. row ***************************
duplicate_scope: 1
1 row in set (0.01 sec)

obclient> select duplicate_scope from oceanbase.__all_table where table_name = 't1'\G
*************************** 1. row ***************************
duplicate_scope: 0
1 row in set (0.00 sec)

还可以通过 oceanbase.DBA_OB_TABLE_LOCATIONS 字典视图里的 duplicate_scope 来区分

obclient> select DUPLICATE_SCOPE from oceanbase.DBA_OB_TABLE_LOCATIONS where table_name = 'dup';
+-----------------+
| DUPLICATE_SCOPE |
+-----------------+
| CLUSTER         |
+-----------------+
1 row in set (0.45 sec)
1 个赞

oracle 模式也是类似,系统表靠 SYS.ALL_VIRTUAL_TABLE_REAL_AGENT。

obclient> CREATE TABLE dup(c1 int) DUPLICATE_SCOPE='cluster';
Query OK, 0 rows affected (8.57 sec)

obclient> select DUPLICATE_SCOPE from SYS.ALL_VIRTUAL_TABLE_REAL_AGENT where table_name = 'DUP';
+-----------------+
| DUPLICATE_SCOPE |
+-----------------+
|               1 |
+-----------------+
1 row in set (0.02 sec)

字典视图靠 sys.DBA_OB_TABLE_LOCATIONS。

obclient> select DUPLICATE_SCOPE, SVR_IP, ROLE from sys.DBA_OB_TABLE_LOCATIONS where table_name = 'DUP';
+-----------------+---------------+----------+
| DUPLICATE_SCOPE | SVR_IP        | ROLE     |
+-----------------+---------------+----------+
| CLUSTER         | 10.102.44.123 | LEADER   |
| CLUSTER         | 10.102.49.45  | FOLLOWER |
+-----------------+---------------+----------+
2 rows in set (0.06 sec)
1 个赞

欢迎加入 OceanBase 社区论坛,也谢谢你的五十积分~

楼上的回答 已经解决了你的问题 麻烦点一下采纳