dictionary.py 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. # dialects/oracle/dictionary.py
  2. # Copyright (C) 2005-2025 the SQLAlchemy authors and contributors
  3. # <see AUTHORS file>
  4. #
  5. # This module is part of SQLAlchemy and is released under
  6. # the MIT License: https://www.opensource.org/licenses/mit-license.php
  7. # mypy: ignore-errors
  8. from .types import DATE
  9. from .types import LONG
  10. from .types import NUMBER
  11. from .types import RAW
  12. from .types import VARCHAR2
  13. from ... import Column
  14. from ... import MetaData
  15. from ... import Table
  16. from ... import table
  17. from ...sql.sqltypes import CHAR
  18. # constants
  19. DB_LINK_PLACEHOLDER = "__$sa_dblink$__"
  20. # tables
  21. dual = table("dual")
  22. dictionary_meta = MetaData()
  23. # NOTE: all the dictionary_meta are aliases because oracle does not like
  24. # using the full table@dblink for every column in query, and complains with
  25. # ORA-00960: ambiguous column naming in select list
  26. all_tables = Table(
  27. "all_tables" + DB_LINK_PLACEHOLDER,
  28. dictionary_meta,
  29. Column("owner", VARCHAR2(128), nullable=False),
  30. Column("table_name", VARCHAR2(128), nullable=False),
  31. Column("tablespace_name", VARCHAR2(30)),
  32. Column("cluster_name", VARCHAR2(128)),
  33. Column("iot_name", VARCHAR2(128)),
  34. Column("status", VARCHAR2(8)),
  35. Column("pct_free", NUMBER),
  36. Column("pct_used", NUMBER),
  37. Column("ini_trans", NUMBER),
  38. Column("max_trans", NUMBER),
  39. Column("initial_extent", NUMBER),
  40. Column("next_extent", NUMBER),
  41. Column("min_extents", NUMBER),
  42. Column("max_extents", NUMBER),
  43. Column("pct_increase", NUMBER),
  44. Column("freelists", NUMBER),
  45. Column("freelist_groups", NUMBER),
  46. Column("logging", VARCHAR2(3)),
  47. Column("backed_up", VARCHAR2(1)),
  48. Column("num_rows", NUMBER),
  49. Column("blocks", NUMBER),
  50. Column("empty_blocks", NUMBER),
  51. Column("avg_space", NUMBER),
  52. Column("chain_cnt", NUMBER),
  53. Column("avg_row_len", NUMBER),
  54. Column("avg_space_freelist_blocks", NUMBER),
  55. Column("num_freelist_blocks", NUMBER),
  56. Column("degree", VARCHAR2(10)),
  57. Column("instances", VARCHAR2(10)),
  58. Column("cache", VARCHAR2(5)),
  59. Column("table_lock", VARCHAR2(8)),
  60. Column("sample_size", NUMBER),
  61. Column("last_analyzed", DATE),
  62. Column("partitioned", VARCHAR2(3)),
  63. Column("iot_type", VARCHAR2(12)),
  64. Column("temporary", VARCHAR2(1)),
  65. Column("secondary", VARCHAR2(1)),
  66. Column("nested", VARCHAR2(3)),
  67. Column("buffer_pool", VARCHAR2(7)),
  68. Column("flash_cache", VARCHAR2(7)),
  69. Column("cell_flash_cache", VARCHAR2(7)),
  70. Column("row_movement", VARCHAR2(8)),
  71. Column("global_stats", VARCHAR2(3)),
  72. Column("user_stats", VARCHAR2(3)),
  73. Column("duration", VARCHAR2(15)),
  74. Column("skip_corrupt", VARCHAR2(8)),
  75. Column("monitoring", VARCHAR2(3)),
  76. Column("cluster_owner", VARCHAR2(128)),
  77. Column("dependencies", VARCHAR2(8)),
  78. Column("compression", VARCHAR2(8)),
  79. Column("compress_for", VARCHAR2(30)),
  80. Column("dropped", VARCHAR2(3)),
  81. Column("read_only", VARCHAR2(3)),
  82. Column("segment_created", VARCHAR2(3)),
  83. Column("result_cache", VARCHAR2(7)),
  84. Column("clustering", VARCHAR2(3)),
  85. Column("activity_tracking", VARCHAR2(23)),
  86. Column("dml_timestamp", VARCHAR2(25)),
  87. Column("has_identity", VARCHAR2(3)),
  88. Column("container_data", VARCHAR2(3)),
  89. Column("inmemory", VARCHAR2(8)),
  90. Column("inmemory_priority", VARCHAR2(8)),
  91. Column("inmemory_distribute", VARCHAR2(15)),
  92. Column("inmemory_compression", VARCHAR2(17)),
  93. Column("inmemory_duplicate", VARCHAR2(13)),
  94. Column("default_collation", VARCHAR2(100)),
  95. Column("duplicated", VARCHAR2(1)),
  96. Column("sharded", VARCHAR2(1)),
  97. Column("externally_sharded", VARCHAR2(1)),
  98. Column("externally_duplicated", VARCHAR2(1)),
  99. Column("external", VARCHAR2(3)),
  100. Column("hybrid", VARCHAR2(3)),
  101. Column("cellmemory", VARCHAR2(24)),
  102. Column("containers_default", VARCHAR2(3)),
  103. Column("container_map", VARCHAR2(3)),
  104. Column("extended_data_link", VARCHAR2(3)),
  105. Column("extended_data_link_map", VARCHAR2(3)),
  106. Column("inmemory_service", VARCHAR2(12)),
  107. Column("inmemory_service_name", VARCHAR2(1000)),
  108. Column("container_map_object", VARCHAR2(3)),
  109. Column("memoptimize_read", VARCHAR2(8)),
  110. Column("memoptimize_write", VARCHAR2(8)),
  111. Column("has_sensitive_column", VARCHAR2(3)),
  112. Column("admit_null", VARCHAR2(3)),
  113. Column("data_link_dml_enabled", VARCHAR2(3)),
  114. Column("logical_replication", VARCHAR2(8)),
  115. ).alias("a_tables")
  116. all_views = Table(
  117. "all_views" + DB_LINK_PLACEHOLDER,
  118. dictionary_meta,
  119. Column("owner", VARCHAR2(128), nullable=False),
  120. Column("view_name", VARCHAR2(128), nullable=False),
  121. Column("text_length", NUMBER),
  122. Column("text", LONG),
  123. Column("text_vc", VARCHAR2(4000)),
  124. Column("type_text_length", NUMBER),
  125. Column("type_text", VARCHAR2(4000)),
  126. Column("oid_text_length", NUMBER),
  127. Column("oid_text", VARCHAR2(4000)),
  128. Column("view_type_owner", VARCHAR2(128)),
  129. Column("view_type", VARCHAR2(128)),
  130. Column("superview_name", VARCHAR2(128)),
  131. Column("editioning_view", VARCHAR2(1)),
  132. Column("read_only", VARCHAR2(1)),
  133. Column("container_data", VARCHAR2(1)),
  134. Column("bequeath", VARCHAR2(12)),
  135. Column("origin_con_id", VARCHAR2(256)),
  136. Column("default_collation", VARCHAR2(100)),
  137. Column("containers_default", VARCHAR2(3)),
  138. Column("container_map", VARCHAR2(3)),
  139. Column("extended_data_link", VARCHAR2(3)),
  140. Column("extended_data_link_map", VARCHAR2(3)),
  141. Column("has_sensitive_column", VARCHAR2(3)),
  142. Column("admit_null", VARCHAR2(3)),
  143. Column("pdb_local_only", VARCHAR2(3)),
  144. ).alias("a_views")
  145. all_sequences = Table(
  146. "all_sequences" + DB_LINK_PLACEHOLDER,
  147. dictionary_meta,
  148. Column("sequence_owner", VARCHAR2(128), nullable=False),
  149. Column("sequence_name", VARCHAR2(128), nullable=False),
  150. Column("min_value", NUMBER),
  151. Column("max_value", NUMBER),
  152. Column("increment_by", NUMBER, nullable=False),
  153. Column("cycle_flag", VARCHAR2(1)),
  154. Column("order_flag", VARCHAR2(1)),
  155. Column("cache_size", NUMBER, nullable=False),
  156. Column("last_number", NUMBER, nullable=False),
  157. Column("scale_flag", VARCHAR2(1)),
  158. Column("extend_flag", VARCHAR2(1)),
  159. Column("sharded_flag", VARCHAR2(1)),
  160. Column("session_flag", VARCHAR2(1)),
  161. Column("keep_value", VARCHAR2(1)),
  162. ).alias("a_sequences")
  163. all_users = Table(
  164. "all_users" + DB_LINK_PLACEHOLDER,
  165. dictionary_meta,
  166. Column("username", VARCHAR2(128), nullable=False),
  167. Column("user_id", NUMBER, nullable=False),
  168. Column("created", DATE, nullable=False),
  169. Column("common", VARCHAR2(3)),
  170. Column("oracle_maintained", VARCHAR2(1)),
  171. Column("inherited", VARCHAR2(3)),
  172. Column("default_collation", VARCHAR2(100)),
  173. Column("implicit", VARCHAR2(3)),
  174. Column("all_shard", VARCHAR2(3)),
  175. Column("external_shard", VARCHAR2(3)),
  176. ).alias("a_users")
  177. all_mviews = Table(
  178. "all_mviews" + DB_LINK_PLACEHOLDER,
  179. dictionary_meta,
  180. Column("owner", VARCHAR2(128), nullable=False),
  181. Column("mview_name", VARCHAR2(128), nullable=False),
  182. Column("container_name", VARCHAR2(128), nullable=False),
  183. Column("query", LONG),
  184. Column("query_len", NUMBER(38)),
  185. Column("updatable", VARCHAR2(1)),
  186. Column("update_log", VARCHAR2(128)),
  187. Column("master_rollback_seg", VARCHAR2(128)),
  188. Column("master_link", VARCHAR2(128)),
  189. Column("rewrite_enabled", VARCHAR2(1)),
  190. Column("rewrite_capability", VARCHAR2(9)),
  191. Column("refresh_mode", VARCHAR2(6)),
  192. Column("refresh_method", VARCHAR2(8)),
  193. Column("build_mode", VARCHAR2(9)),
  194. Column("fast_refreshable", VARCHAR2(18)),
  195. Column("last_refresh_type", VARCHAR2(8)),
  196. Column("last_refresh_date", DATE),
  197. Column("last_refresh_end_time", DATE),
  198. Column("staleness", VARCHAR2(19)),
  199. Column("after_fast_refresh", VARCHAR2(19)),
  200. Column("unknown_prebuilt", VARCHAR2(1)),
  201. Column("unknown_plsql_func", VARCHAR2(1)),
  202. Column("unknown_external_table", VARCHAR2(1)),
  203. Column("unknown_consider_fresh", VARCHAR2(1)),
  204. Column("unknown_import", VARCHAR2(1)),
  205. Column("unknown_trusted_fd", VARCHAR2(1)),
  206. Column("compile_state", VARCHAR2(19)),
  207. Column("use_no_index", VARCHAR2(1)),
  208. Column("stale_since", DATE),
  209. Column("num_pct_tables", NUMBER),
  210. Column("num_fresh_pct_regions", NUMBER),
  211. Column("num_stale_pct_regions", NUMBER),
  212. Column("segment_created", VARCHAR2(3)),
  213. Column("evaluation_edition", VARCHAR2(128)),
  214. Column("unusable_before", VARCHAR2(128)),
  215. Column("unusable_beginning", VARCHAR2(128)),
  216. Column("default_collation", VARCHAR2(100)),
  217. Column("on_query_computation", VARCHAR2(1)),
  218. Column("auto", VARCHAR2(3)),
  219. ).alias("a_mviews")
  220. all_tab_identity_cols = Table(
  221. "all_tab_identity_cols" + DB_LINK_PLACEHOLDER,
  222. dictionary_meta,
  223. Column("owner", VARCHAR2(128), nullable=False),
  224. Column("table_name", VARCHAR2(128), nullable=False),
  225. Column("column_name", VARCHAR2(128), nullable=False),
  226. Column("generation_type", VARCHAR2(10)),
  227. Column("sequence_name", VARCHAR2(128), nullable=False),
  228. Column("identity_options", VARCHAR2(298)),
  229. ).alias("a_tab_identity_cols")
  230. all_tab_cols = Table(
  231. "all_tab_cols" + DB_LINK_PLACEHOLDER,
  232. dictionary_meta,
  233. Column("owner", VARCHAR2(128), nullable=False),
  234. Column("table_name", VARCHAR2(128), nullable=False),
  235. Column("column_name", VARCHAR2(128), nullable=False),
  236. Column("data_type", VARCHAR2(128)),
  237. Column("data_type_mod", VARCHAR2(3)),
  238. Column("data_type_owner", VARCHAR2(128)),
  239. Column("data_length", NUMBER, nullable=False),
  240. Column("data_precision", NUMBER),
  241. Column("data_scale", NUMBER),
  242. Column("nullable", VARCHAR2(1)),
  243. Column("column_id", NUMBER),
  244. Column("default_length", NUMBER),
  245. Column("data_default", LONG),
  246. Column("num_distinct", NUMBER),
  247. Column("low_value", RAW(1000)),
  248. Column("high_value", RAW(1000)),
  249. Column("density", NUMBER),
  250. Column("num_nulls", NUMBER),
  251. Column("num_buckets", NUMBER),
  252. Column("last_analyzed", DATE),
  253. Column("sample_size", NUMBER),
  254. Column("character_set_name", VARCHAR2(44)),
  255. Column("char_col_decl_length", NUMBER),
  256. Column("global_stats", VARCHAR2(3)),
  257. Column("user_stats", VARCHAR2(3)),
  258. Column("avg_col_len", NUMBER),
  259. Column("char_length", NUMBER),
  260. Column("char_used", VARCHAR2(1)),
  261. Column("v80_fmt_image", VARCHAR2(3)),
  262. Column("data_upgraded", VARCHAR2(3)),
  263. Column("hidden_column", VARCHAR2(3)),
  264. Column("virtual_column", VARCHAR2(3)),
  265. Column("segment_column_id", NUMBER),
  266. Column("internal_column_id", NUMBER, nullable=False),
  267. Column("histogram", VARCHAR2(15)),
  268. Column("qualified_col_name", VARCHAR2(4000)),
  269. Column("user_generated", VARCHAR2(3)),
  270. Column("default_on_null", VARCHAR2(3)),
  271. Column("identity_column", VARCHAR2(3)),
  272. Column("evaluation_edition", VARCHAR2(128)),
  273. Column("unusable_before", VARCHAR2(128)),
  274. Column("unusable_beginning", VARCHAR2(128)),
  275. Column("collation", VARCHAR2(100)),
  276. Column("collated_column_id", NUMBER),
  277. ).alias("a_tab_cols")
  278. all_tab_comments = Table(
  279. "all_tab_comments" + DB_LINK_PLACEHOLDER,
  280. dictionary_meta,
  281. Column("owner", VARCHAR2(128), nullable=False),
  282. Column("table_name", VARCHAR2(128), nullable=False),
  283. Column("table_type", VARCHAR2(11)),
  284. Column("comments", VARCHAR2(4000)),
  285. Column("origin_con_id", NUMBER),
  286. ).alias("a_tab_comments")
  287. all_col_comments = Table(
  288. "all_col_comments" + DB_LINK_PLACEHOLDER,
  289. dictionary_meta,
  290. Column("owner", VARCHAR2(128), nullable=False),
  291. Column("table_name", VARCHAR2(128), nullable=False),
  292. Column("column_name", VARCHAR2(128), nullable=False),
  293. Column("comments", VARCHAR2(4000)),
  294. Column("origin_con_id", NUMBER),
  295. ).alias("a_col_comments")
  296. all_mview_comments = Table(
  297. "all_mview_comments" + DB_LINK_PLACEHOLDER,
  298. dictionary_meta,
  299. Column("owner", VARCHAR2(128), nullable=False),
  300. Column("mview_name", VARCHAR2(128), nullable=False),
  301. Column("comments", VARCHAR2(4000)),
  302. ).alias("a_mview_comments")
  303. all_ind_columns = Table(
  304. "all_ind_columns" + DB_LINK_PLACEHOLDER,
  305. dictionary_meta,
  306. Column("index_owner", VARCHAR2(128), nullable=False),
  307. Column("index_name", VARCHAR2(128), nullable=False),
  308. Column("table_owner", VARCHAR2(128), nullable=False),
  309. Column("table_name", VARCHAR2(128), nullable=False),
  310. Column("column_name", VARCHAR2(4000)),
  311. Column("column_position", NUMBER, nullable=False),
  312. Column("column_length", NUMBER, nullable=False),
  313. Column("char_length", NUMBER),
  314. Column("descend", VARCHAR2(4)),
  315. Column("collated_column_id", NUMBER),
  316. ).alias("a_ind_columns")
  317. all_indexes = Table(
  318. "all_indexes" + DB_LINK_PLACEHOLDER,
  319. dictionary_meta,
  320. Column("owner", VARCHAR2(128), nullable=False),
  321. Column("index_name", VARCHAR2(128), nullable=False),
  322. Column("index_type", VARCHAR2(27)),
  323. Column("table_owner", VARCHAR2(128), nullable=False),
  324. Column("table_name", VARCHAR2(128), nullable=False),
  325. Column("table_type", CHAR(11)),
  326. Column("uniqueness", VARCHAR2(9)),
  327. Column("compression", VARCHAR2(13)),
  328. Column("prefix_length", NUMBER),
  329. Column("tablespace_name", VARCHAR2(30)),
  330. Column("ini_trans", NUMBER),
  331. Column("max_trans", NUMBER),
  332. Column("initial_extent", NUMBER),
  333. Column("next_extent", NUMBER),
  334. Column("min_extents", NUMBER),
  335. Column("max_extents", NUMBER),
  336. Column("pct_increase", NUMBER),
  337. Column("pct_threshold", NUMBER),
  338. Column("include_column", NUMBER),
  339. Column("freelists", NUMBER),
  340. Column("freelist_groups", NUMBER),
  341. Column("pct_free", NUMBER),
  342. Column("logging", VARCHAR2(3)),
  343. Column("blevel", NUMBER),
  344. Column("leaf_blocks", NUMBER),
  345. Column("distinct_keys", NUMBER),
  346. Column("avg_leaf_blocks_per_key", NUMBER),
  347. Column("avg_data_blocks_per_key", NUMBER),
  348. Column("clustering_factor", NUMBER),
  349. Column("status", VARCHAR2(8)),
  350. Column("num_rows", NUMBER),
  351. Column("sample_size", NUMBER),
  352. Column("last_analyzed", DATE),
  353. Column("degree", VARCHAR2(40)),
  354. Column("instances", VARCHAR2(40)),
  355. Column("partitioned", VARCHAR2(3)),
  356. Column("temporary", VARCHAR2(1)),
  357. Column("generated", VARCHAR2(1)),
  358. Column("secondary", VARCHAR2(1)),
  359. Column("buffer_pool", VARCHAR2(7)),
  360. Column("flash_cache", VARCHAR2(7)),
  361. Column("cell_flash_cache", VARCHAR2(7)),
  362. Column("user_stats", VARCHAR2(3)),
  363. Column("duration", VARCHAR2(15)),
  364. Column("pct_direct_access", NUMBER),
  365. Column("ityp_owner", VARCHAR2(128)),
  366. Column("ityp_name", VARCHAR2(128)),
  367. Column("parameters", VARCHAR2(1000)),
  368. Column("global_stats", VARCHAR2(3)),
  369. Column("domidx_status", VARCHAR2(12)),
  370. Column("domidx_opstatus", VARCHAR2(6)),
  371. Column("funcidx_status", VARCHAR2(8)),
  372. Column("join_index", VARCHAR2(3)),
  373. Column("iot_redundant_pkey_elim", VARCHAR2(3)),
  374. Column("dropped", VARCHAR2(3)),
  375. Column("visibility", VARCHAR2(9)),
  376. Column("domidx_management", VARCHAR2(14)),
  377. Column("segment_created", VARCHAR2(3)),
  378. Column("orphaned_entries", VARCHAR2(3)),
  379. Column("indexing", VARCHAR2(7)),
  380. Column("auto", VARCHAR2(3)),
  381. ).alias("a_indexes")
  382. all_ind_expressions = Table(
  383. "all_ind_expressions" + DB_LINK_PLACEHOLDER,
  384. dictionary_meta,
  385. Column("index_owner", VARCHAR2(128), nullable=False),
  386. Column("index_name", VARCHAR2(128), nullable=False),
  387. Column("table_owner", VARCHAR2(128), nullable=False),
  388. Column("table_name", VARCHAR2(128), nullable=False),
  389. Column("column_expression", LONG),
  390. Column("column_position", NUMBER, nullable=False),
  391. ).alias("a_ind_expressions")
  392. all_constraints = Table(
  393. "all_constraints" + DB_LINK_PLACEHOLDER,
  394. dictionary_meta,
  395. Column("owner", VARCHAR2(128)),
  396. Column("constraint_name", VARCHAR2(128)),
  397. Column("constraint_type", VARCHAR2(1)),
  398. Column("table_name", VARCHAR2(128)),
  399. Column("search_condition", LONG),
  400. Column("search_condition_vc", VARCHAR2(4000)),
  401. Column("r_owner", VARCHAR2(128)),
  402. Column("r_constraint_name", VARCHAR2(128)),
  403. Column("delete_rule", VARCHAR2(9)),
  404. Column("status", VARCHAR2(8)),
  405. Column("deferrable", VARCHAR2(14)),
  406. Column("deferred", VARCHAR2(9)),
  407. Column("validated", VARCHAR2(13)),
  408. Column("generated", VARCHAR2(14)),
  409. Column("bad", VARCHAR2(3)),
  410. Column("rely", VARCHAR2(4)),
  411. Column("last_change", DATE),
  412. Column("index_owner", VARCHAR2(128)),
  413. Column("index_name", VARCHAR2(128)),
  414. Column("invalid", VARCHAR2(7)),
  415. Column("view_related", VARCHAR2(14)),
  416. Column("origin_con_id", VARCHAR2(256)),
  417. ).alias("a_constraints")
  418. all_cons_columns = Table(
  419. "all_cons_columns" + DB_LINK_PLACEHOLDER,
  420. dictionary_meta,
  421. Column("owner", VARCHAR2(128), nullable=False),
  422. Column("constraint_name", VARCHAR2(128), nullable=False),
  423. Column("table_name", VARCHAR2(128), nullable=False),
  424. Column("column_name", VARCHAR2(4000)),
  425. Column("position", NUMBER),
  426. ).alias("a_cons_columns")
  427. # TODO figure out if it's still relevant, since there is no mention from here
  428. # https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/ALL_DB_LINKS.html
  429. # original note:
  430. # using user_db_links here since all_db_links appears
  431. # to have more restricted permissions.
  432. # https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_admin005.htm
  433. # will need to hear from more users if we are doing
  434. # the right thing here. See [ticket:2619]
  435. all_db_links = Table(
  436. "all_db_links" + DB_LINK_PLACEHOLDER,
  437. dictionary_meta,
  438. Column("owner", VARCHAR2(128), nullable=False),
  439. Column("db_link", VARCHAR2(128), nullable=False),
  440. Column("username", VARCHAR2(128)),
  441. Column("host", VARCHAR2(2000)),
  442. Column("created", DATE, nullable=False),
  443. Column("hidden", VARCHAR2(3)),
  444. Column("shard_internal", VARCHAR2(3)),
  445. Column("valid", VARCHAR2(3)),
  446. Column("intra_cdb", VARCHAR2(3)),
  447. ).alias("a_db_links")
  448. all_synonyms = Table(
  449. "all_synonyms" + DB_LINK_PLACEHOLDER,
  450. dictionary_meta,
  451. Column("owner", VARCHAR2(128)),
  452. Column("synonym_name", VARCHAR2(128)),
  453. Column("table_owner", VARCHAR2(128)),
  454. Column("table_name", VARCHAR2(128)),
  455. Column("db_link", VARCHAR2(128)),
  456. Column("origin_con_id", VARCHAR2(256)),
  457. ).alias("a_synonyms")
  458. all_objects = Table(
  459. "all_objects" + DB_LINK_PLACEHOLDER,
  460. dictionary_meta,
  461. Column("owner", VARCHAR2(128), nullable=False),
  462. Column("object_name", VARCHAR2(128), nullable=False),
  463. Column("subobject_name", VARCHAR2(128)),
  464. Column("object_id", NUMBER, nullable=False),
  465. Column("data_object_id", NUMBER),
  466. Column("object_type", VARCHAR2(23)),
  467. Column("created", DATE, nullable=False),
  468. Column("last_ddl_time", DATE, nullable=False),
  469. Column("timestamp", VARCHAR2(19)),
  470. Column("status", VARCHAR2(7)),
  471. Column("temporary", VARCHAR2(1)),
  472. Column("generated", VARCHAR2(1)),
  473. Column("secondary", VARCHAR2(1)),
  474. Column("namespace", NUMBER, nullable=False),
  475. Column("edition_name", VARCHAR2(128)),
  476. Column("sharing", VARCHAR2(13)),
  477. Column("editionable", VARCHAR2(1)),
  478. Column("oracle_maintained", VARCHAR2(1)),
  479. Column("application", VARCHAR2(1)),
  480. Column("default_collation", VARCHAR2(100)),
  481. Column("duplicated", VARCHAR2(1)),
  482. Column("sharded", VARCHAR2(1)),
  483. Column("created_appid", NUMBER),
  484. Column("created_vsnid", NUMBER),
  485. Column("modified_appid", NUMBER),
  486. Column("modified_vsnid", NUMBER),
  487. ).alias("a_objects")