小伙伴们有没有发现,Oracle各个版本的系统默认的视图,功能强大数量之多,是不是冒出新的,而解决了一直很难定位的性能问题,提供系统性、体系化、多视角看数据库元数据。
Oracle系统视图绝非简单的“元数据查询工具”,其实是数据库运维的中不可或缺的工具视角。到了23ai之后,有了ai模型、向量加持后,这些窥探数据库元数据之眼有了什么样的变化和演进。
版本 |
代表视图 |
核心能力 |
创新点 |
11g |
V$SQL |
SQL执行统计(逻辑读/CPU消耗) |
基础性能监控 |
19c |
V$SQL_MONITOR |
实时SQL执行追踪 |
自动化诊断优化 |
23ai |
VECSYS.VECTOR$INDEX |
向量索引元数据管理 |
AI原生支持(语义搜索) |
|
DBA_JSON_DUALITY_VIEWS |
JSON-关系双向映射 |
多模数据统一访问 |
-- 获取视图定义SQL
SELECT view_name, text FROM USER_VIEWS;
--
^^^
7,939 rows selected.
SYS@CDB$ROOT>
SELECT NAME, OBJECT_ID,TYPE,TABLE_NUM,CON_ID FROM V$FIXED_TABLE WHERE name LIKE 'GV$%';
--
…………
GV$CONNECTION_STORM 4294956815 VIEW 65537 0
GV$JSON_STATS 4294956999 VIEW 65537 0
860 rows selected.
SELECT DBMS_XMLGEN.GETXML('SELECT * FROM ' ||
(CASE WHEN version LIKE '11%' THEN 'dba_directories' ELSE 'cdb_directories' END)
) FROM v$instance;
--19c
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SELECT DBMS_XMLGEN.GETXML('SELECT * FROM ' ||
(CASE WHEN version LIKE '11%' THEN 'dba_directories' ELSE 'cdb_directories' END)
3 ) FROM v$instance;
DBMS_XMLGEN.GETXML('SELECT*FROM'||(CASEWHENVERSIONLIKE'11%'THEN'DBA_DIRECTORIES'
--------------------------------------------------------------------------------
SYS
DMP
--23ai
SYS@CDB$ROOT> SELECT DBMS_XMLGEN.GETXML('SELECT * FROM ' ||
2 (CASE WHEN version LIKE '11%' THEN 'dba_directories' ELSE 'cdb_directories' END)
3* ) FROM v$instance;
DBMS_XMLGEN.GETXML('SELECT*FROM'||(CASEWHENVERSIONLIKE'11%'THEN'DBA_DIRECTORIES'ELSE'CDB_DIRECTORIES'END))
_____________________________________________________________________________________________________________
SYS
SDO
SELECT owner, object_name, object_type FROM DBA_OBJECTS
WHERE owner='HR';
-- 快速定位HR模式下的所有对象
--
SYS@CDB$ROOT> SELECT owner, object_name, object_type FROM DBA_OBJECTS WHERE owner='HR';
OWNER OBJECT_NAME OBJECT_TYPE
________ __________________________ ______________
HR REG_ID_PK INDEX
HR REGIONS TABLE
HR COUNTRIES TABLE
HR COUNTRY_C_ID_PK INDEX
HR LOCATIONS TABLE
HR LOC_ID_PK INDEX
…………
HR UPDATE_JOB_HISTORY TRIGGER
34 rows selected.
SELECT * FROM ALL_DEPENDENCIES WHERE referenced_name='EMPLOYEES';
-- 检查EMPLOYEES表被哪些对象依赖
SYS@CDB$ROOT> SELECT * FROM ALL_DEPENDENCIES WHERE referenced_name='EMPLOYEES';
OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE REFERENCED_LINK_NAME DEPENDENCY_TYPE
________ _____________________ __________ ___________________ __________________ __________________ _______________________ __________________
HR SECURE_EMPLOYEES TRIGGER HR EMPLOYEES TABLE HARD
HR EMP_DETAILS_VIEW VIEW HR EMPLOYEES TABLE HARD
HR UPDATE_JOB_HISTORY TRIGGER HR EMPLOYEES TABLE HARD
-- 监控表空间剩余
SELECT tablespace_name, SUM(bytes)/1024/1024 AS free_mb
FROM DBA_FREE_SPACE GROUP BY tablespace_name;
--
TABLESPACE_NAME FREE_MB
__________________ __________
SYSTEM 633.375
SYSAUX 39.8125
UNDOTBS1 315.875
USERS 0.8125
HR_DATA 92.375
OE_DATA 93.9375
SH_DATA 92.375
CO_DATA 88.3125
SHRINK_TS 43.9375
SECURE_LOB_TS 92.375
ASSM_TS 90.8125
11 rows selected.
-- 识别阻塞会话,
SELECT sid, sql_id, event, wait_time FROM V$SESSION
WHERE status='ACTIVE' AND wait_class!='Idle';
--
SID SQL_ID EVENT WAIT_TIME
________ ________________ _______________________________ ____________
4674 61th6m59341s7 library cache pin 0
7574 g0sp2zz0h9rv3 resmgr:internal state change 10
13207 7ccbd37f8xxf3 SQL*Net message to client -1
15139 gc5rjdrwfurbm resmgr:internal state change 10
17229 g0vy27tkcx9f2 SQL*Net message from dblink 0
-- 监控I/O压力
SELECT * FROM V$SYSSTAT
WHERE name IN ('physical reads', 'logical reads');
--19c RAC
STATISTIC# NAME CLASS VALUE STAT_ID CON_ID
_____________ _________________ ________ ___________ _____________ _________
172 physical reads 8 90181620 2263124246 0
-- 检查主备库状态
SELECT database_role, open_mode FROM V$DATABASE;
--RAC+ADG
DATABASE_ROLE OPEN_MODE
________________ _____________
PRIMARY READ WRITE
SYS@CDB$ROOT> SELECT GRANTEE,TABLE_NAME,PRIVILEGE,HIERARCHY FROM DBA_TAB_PRIVS;
--^^^^
CTXSYS XDB INHERIT PRIVILEGES NO
PUBLIC HR INHERIT PRIVILEGES NO
PUBLIC CO INHERIT PRIVILEGES NO
PUBLIC SH INHERIT PRIVILEGES NO
PUBLIC OE INHERIT PRIVILEGES NO
PUBLIC SHRINK_USER INHERIT PRIVILEGES NO
PUBLIC APP_USER INHERIT PRIVILEGES NO
PUBLIC XS$NULL INHERIT PRIVILEGES NO
47,657 rows selected.
SYS@CDB$ROOT> SELECT * FROM ROLE_TAB_PRIVS;
---
DATAPUMP_IMP_FULL_DATABASE SYS SDO_RDF_EXP_IMP EXECUTE NO YES YES
EXECUTE_CATALOG_ROLE SYS SDO_RDF_EXP_IMP EXECUTE NO YES YES
DATAPUMP_CLOUD_IMP SYS SDO_RDF_EXP_IMP EXECUTE NO YES YES
EXECUTE_CATALOG_ROLE LBACSYS OLS$LAB_SEQUENCE ALTER NO YES YES
SELECT_CATALOG_ROLE LBACSYS CDB_SA_TABLE_POLICIES SELECT NO YES YES
SELECT_CATALOG_ROLE LBACSYS DBA_SA_USER_LEVELS SELECT NO YES YES
SELECT_CATALOG_ROLE LBACSYS CDB_SA_USER_LEVELS SELECT NO YES YES
SELECT_CATALOG_ROLE LBACSYS DBA_SA_USERS SELECT NO YES YES
8,210 rows selected.
SYS@CDB$ROOT>
-- 审计HR表权限分配
SELECT grantee, owner, table_name, privilege
FROM DBA_TAB_PRIVS WHERE owner='HR';
-- 监控向量索引参数
SELECT IDX_name,IDX_OWNER#,IDX_BASE_TABLE_OWNER# FROM VECSYS.VECTOR$INDEX;
SYS@CDB$ROOT> desc DBA_JSON_DUALITY_VIEWS;
Name Null? Type
______________________ ___________ ________________
VIEW_OWNER NOT NULL VARCHAR2(128)
VIEW_NAME NOT NULL VARCHAR2(128)
JSON_COLUMN_NAME CHAR(4)
ROOT_TABLE_NAME VARCHAR2(128)
ROOT_TABLE_OWNER VARCHAR2(128)
ALLOW_INSERT BOOLEAN
ALLOW_UPDATE BOOLEAN
ALLOW_DELETE BOOLEAN
READ_ONLY BOOLEAN
JSON_SCHEMA JSON
STATUS VARCHAR2(7)
LOGICAL_REPLICATION VARCHAR2(8)
--
SELECT VIEW_OWNER,VIEW_NAME,JSON_COLUMN_NAME,STATUS,LOGICAL_REPLICATION FROM DBA_JSON_DUALITY_VIEWS;
SYS@CDB$ROOT> SELECT * FROM V$VECTOR_MEMORY_POOL;
no rows selected
SYS@CDB$ROOT> desc V$VECTOR_MEMORY_POOL;
Name Null? Type
__________________ ________ _______________
POOL VARCHAR2(26)
ALLOC_BYTES NUMBER
USED_BYTES NUMBER
POPULATE_STATUS VARCHAR2(26)
CON_ID NUMBER
SYS@CDB$ROOT>