【 使用环境 】 测试环境
【 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 社区论坛,也谢谢你的五十积分~
楼上的回答 已经解决了你的问题 麻烦点一下采纳