首页 > 数据库 > Oracle > [20240820]查看超长视图的定义.txt
[20240820]查看超长视图的定义.txt
--//被问及的问题,实际上以前也解答过,查看gv$session的完整定义.通过GV$DATABSE例子说明:
1.环境:
SYS@book> @pr
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 21.0.0.0.0
BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
SYS@book> SELECT LENGTH (view_definition),view_name FROM v$fixed_view_definition WHERE LENGTH (view_definition) >= 4000;
LENGTH(VIEW_DEFINITION) VIEW_NAME
----------------------- ------------------------------
4000 GV$SESSION
4000 GV$DATABASE
4000 GV$SQL_SHARED_CURSOR
4000 GV$RSRCMGRMETRIC
4000 GV$RSRCMGRMETRIC_HISTORY
4000 GV$RSRCPDBMETRIC
4000 GV$RSRCPDBMETRIC_HISTORY
4000 GV$STREAMS_CAPTURE
4000 V$RECOVERY_AREA_USAGE
4000 GV$ACTIVE_SESSION_HISTORY
4000 GV$ALL_ACTIVE_SESSION_HISTORY
4000 V$RMAN_STATUS
4000 GV$WLM_PCMETRIC
4000 V$RMAN_BACKUP_SUBJOB_DETAILS
4000 V$BACKUP_DATAFILE_SUMMARY
4000 V$BACKUP_CONTROLFILE_SUMMARY
4000 GV$IOSTAT_FILE
4000 GV$SQL_MONITOR
4000 GV$SQL_PLAN_MONITOR
4000 GV$ALL_SQL_MONITOR
4000 GV$ALL_SQL_PLAN_MONITOR
4000 GV$FALSE_PING
4000 GV$XSTREAM_CAPTURE
4000 GV$GOLDENGATE_CAPTURE
24 rows selected.
SYS@book> column con_id noprint
SYS@book> column VIEW_DEFINITION format a200 wrap
SYS@book> select * from V$FIXED_VIEW_DEFINITION where view_name='GV$DATABASE';
VIEW_NAME VIEW_DEFINITION
------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GV$DATABASE select di.inst_id,di.didbi,di.didbn,to_date(di.dicts,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),to_number(di.dirls),to_date(di.dirlc,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),to_number(di.d
iprs),to_date(di.diprc,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(di.dimla,0,'NOARCHIVELOG',1,'ARCHIVELOG','MANUAL'),to_number(di.discn),to_number(di.difas),decode(bitand(di.diflg,256),256
,'CREATED',decode(bitand(di.diflg,1024),1024,'STANDBY',decode(bitand(di.difl3,8),8,'FARSYNC',decode(bitand(di.diflg,32768),32768,'CLONE',decode(bitand(di.diflg,4096),4096,'BACKUP','CURRENT'))))),to_da
te(di.dicct,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),di.dicsq,to_number(di.dickp_scn),to_date(di.dickp_tim,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(bitand(di.diflg,4),4,'REQUIRED'
,decode(di.diirs,0,'NOT ALLOWED','ALLOWED')),to_date(di.divts,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(di.didor,0,'MOUNTED',decode(di.didor,1,'READ WRITE',decode(di.didor,2,'READ ONLY',d
ecode(di.didor,3,'READ ONLY WITH APPLY','CLOSED BY SWITCHOVER')))),decode(bitand(di.diflg,65536),65536,'MAXIMUM PROTECTION',decode(bitand(di.diflg,128),128,'MAXIMUM AVAILABILITY',decode(bitand(di.difl
g,134217728),134217728,'RESYNCHRONIZATION',decode(bitand(di.diflg,8),8,'UNPROTECTED','MAXIMUM PERFORMANCE')))),decode(di.diprt,1,'MAXIMUM PROTECTION',2,'MAXIMUM AVAILABILITY',3,'RESYNCHRONIZATION',4,'
MAXIMUM PERFORMANCE',5,'UNPROTECTED', 'UNKNOWN'),decode(di.dirae,0,'DISABLED',1,'SEND',2,'RECEIVE',3,'ENABLED','UNKNOWN'),to_number(di.diacid),to_number(di.diacid),decode(bitand(di.difl2,32768),32768
,'SNAPSHOT STANDBY',decode(bitand(di.diflg,33554432),33554432,'LOGICAL STANDBY',decode(bitand(di.diflg,1024),1024,'PHYSICAL STANDBY',decode(bitand(di.difl3,8),8,'FAR SYNC', 'PRIMARY')))),to_number(di.
diars),decode(bitand(difl2,1),1,'ENABLED','DISABLED'),decode(di.disos,0,'IMPOSSIBLE',1,'NOT ALLOWED',2,'SWITCHOVER LATENT',3,'SWITCHOVER PENDING',4,'TO PRIMARY',5,'TO STANDBY',6,'RECOVERY NEEDED',7,'S
ESSIONS ACTIVE',8,'PREPARING SWITCHOVER',9,'PREPARING DICTIONARY',10,'TO LOGICAL STANDBY',11,'FAILED DESTINATION',12,'RESOLVABLE GAP',13,'LOG SWITCH GAP',14,'UNRESOLVABLE GAP',NULL),decode(di.didgd,0,
'DISABLED','ENABLED'),decode(bitand(di.diflg,1048576),1048576,'ALL',decode(bitand(di.diflg,2097152),2097152,'STANDBY','NONE')),decode(bitand(diflg,1073741824),1073741824, 'YES', decode(b
itand(diflg, 131072 + 262144 + 524288),0, decode(bitand(difl2,2 + 64), 0, decode(bitand(di.difl3, 512), 0, 'NO','IM
PLICIT'), 'IMPLICIT'), 'IMPLICIT')),decode(bitand(di.diflg,131072),131072,'YES','NO'),decode(bitand(di.diflg,262144),262144,'YES','NO'),decode(bitand
(di.diflg,268435456),268435456,'YES', decode(bitand(di2flag, 16384), 16384, 'STANDBY NOLOGGING FOR DATA AVAILABILITY', decode(bitand(di2flag, 32768), 32768,
'STANDBY NOLOGGING FOR LOAD PERFORMANCE','NO'))),di.diplid, di.dipln, di2.di2rdi, di2.di2inc,to_number(di.dicur_scn),decode(bitand(di2.di2flag,1),1,'YES', decode(di2.di2rsp_oldest,0,
'NO','RESTORE POINT ONLY')),decode(bitand(diflg,524288),524288,'YES','NO'),decode(bitand(difl2,2),2,'YES','NO'),di2.di2dbun, to_number(di2.di2actiscn), decode(di.difmod, 0, 'DISABLED',
1, 'ZERO DATA LOSS', 2, 'POTENTIAL DATA LOSS', 3, 'OBSERVE-ONLY', ''),decode(di.difsts,0,'DISABLED',1,'BYSTANDER',2,'SYNCHRONIZED',3,'UNSYNCHRONI
ZED',4,'SUSPENDED',5,'STALLED',6,'LOADING DICTIONARY',7,'PRIMARY UNOBSERVED',8,'REINSTATE REQUIRED',10,'REINSTATE FAILED',11,'TARGET OVER LAG LIMIT',12,'TARGET UNDER LAG LIMIT',''), di.diftgt, di.dift
hs,decode(di.difopr,1,'YES',2,'NO',3,'UNKNOWN',''), di.difobs, decode(bitand(difl2, 16384), 16384, 'YES', 'NO'), di2.di2pdbun, decode(bitand(di.difl2,64), 64, 'YES', 'NO'), decode(di2.di2min_req_captu
--//看不到完整的定义.
--//1.使用10046跟踪.
alter system flush shared_pool;
@ 10046on 12
select * from gv$database;
@ 10046off
--//查看跟踪文件可以获得完整的语句.
--//2.查询v$sqlarea视图,通过v$fixed_view_definition.VIEW_DEFINITION的关键字查询.
SYS@book> select * from gv$database;
SYS@book> column sql_fulltext format a200 wrap
SYS@book> select sql_id,sql_fulltext from v$sqlarea where sql_text like 'select di.inst_id,di.didbi,di.didbn,to_date%';
SQL_ID SQL_FULLTEXT
------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
at0ytbx91hbkx select di.inst_id,di.didbi,di.didbn,to_date(di.dicts,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),to_number(di.dirls),to_date(di.dirlc,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),to_number(di.d
iprs),to_date(di.diprc,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(di.dimla,0,'NOARCHIVELOG',1,'ARCHIVELOG','MANUAL'),to_number(di.discn),to_number(di.difas),decode(bitand(di.diflg,256),256
,'CREATED',decode(bitand(di.diflg,1024),1024,'STANDBY',decode(bitand(di.difl3,8),8,'FARSYNC',decode(bitand(di.diflg,32768),32768,'CLONE',decode(bitand(di.diflg,4096),4096,'BACKUP','CURRENT'))))),to_da
te(di.dicct,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),di.dicsq,to_number(di.dickp_scn),to_date(di.dickp_tim,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(bitand(di.diflg,4),4,'REQUIRED'
,decode(di.diirs,0,'NOT ALLOWED','ALLOWED')),to_date(di.divts,'MM/DD/RR HH24:MI:SS','NLS_CALENDAR=Gregorian'),decode(di.didor,0,'MOUNTED',decode(di.didor,1,'READ WRITE',decode(di.didor,2,'READ ONLY',d
ecode(di.didor,3,'READ ONLY WITH APPLY','CLOSED BY SWITCHOVER')))),decode(bitand(di.diflg,65536),65536,'MAXIMUM PROTECTION',decode(bitand(di.diflg,128),128,'MAXIMUM AVAILABILITY',decode(bitand(di.difl
g,134217728),134217728,'RESYNCHRONIZATION',decode(bitand(di.diflg,8),8,'UNPROTECTED','MAXIMUM PERFORMANCE')))),decode(di.diprt,1,'MAXIMUM PROTECTION',2,'MAXIMUM AVAILABILITY',3,'RESYNCHRONIZATION',4,'
MAXIMUM PERFORMANCE',5,'UNPROTECTED', 'UNKNOWN'),decode(di.dirae,0,'DISABLED',1,'SEND',2,'RECEIVE',3,'ENABLED','UNKNOWN'),to_number(di.diacid),to_number(di.diacid),decode(bitand(di.difl2,32768),32768
,'SNAPSHOT STANDBY',decode(bitand(di.diflg,33554432),33554432,'LOGICAL STANDBY',decode(bitand(di.diflg,1024),1024,'PHYSICAL STANDBY',decode(bitand(di.difl3,8),8,'FAR SYNC', 'PRIMARY')))),to_number(di.
diars),decode(bitand(difl2,1),1,'ENABLED','DISABLED'),decode(di.disos,0,'IMPOSSIBLE',1,'NOT ALLOWED',2,'SWITCHOVER LATENT',3,'SWITCHOVER PENDING',4,'TO PRIMARY',5,'TO STANDBY',6,'RECOVERY NEEDED',7,'S
ESSIONS ACTIVE',8,'PREPARING SWITCHOVER',9,'PREPARING DICTIONARY',10,'TO LOGICAL STANDBY',11,'FAILED DESTINATION',12,'RESOLVABLE GAP',13,'LOG SWITCH GAP',14,'UNRESOLVABLE GAP',NULL),decode(di.didgd,0,
'DISABLED','ENABLED'),decode(bitand(di.diflg,1048576),1048576,'ALL',decode(bitand(di.diflg,2097152),2097152,'STANDBY','NONE')),decode(bitand(diflg,1073741824),1073741824, 'YES', decode(b
itand(diflg, 131072 + 262144 + 524288),0, decode(bitand(difl2,2 + 64), 0, decode(bitand(di.difl3, 512), 0, 'NO','IM
PLICIT'), 'IMPLICIT'), 'IMPLICIT')),decode(bitand(di.diflg,131072),131072,'YES','NO'),decode(bitand(di.diflg,262144),262144,'YES','NO'),decode(bitand
(di.diflg,268435456),268435456,'YES', decode(bitand(di2flag, 16384), 16384, 'STANDBY NOLOGGING FOR DATA AVAILABILITY', decode(bitand(di2flag, 32768), 32768,
'STANDBY NOLOGGING FOR LOAD PERFORMANCE','NO'))),di.diplid, di.dipln, di2.di2rdi, di2.di2inc,to_number(di.dicur_scn),decode(bitand(di2.di2flag,1),1,'YES', decode(di2.di2rsp_oldest,0,
'NO','RESTORE POINT ONLY')),decode(bitand(diflg,524288),524288,'YES','NO'),decode(bitand(difl2,2),2,'YES','NO'),di2.di2dbun, to_number(di2.di2actiscn), decode(di.difmod, 0, 'DISABLED',
1, 'ZERO DATA LOSS', 2, 'POTENTIAL DATA LOSS', 3, 'OBSERVE-ONLY', ''),decode(di.difsts,0,'DISABLED',1,'BYSTANDER',2,'SYNCHRONIZED',3,'UNSYNCHRONI
ZED',4,'SUSPENDED',5,'STALLED',6,'LOADING DICTIONARY',7,'PRIMARY UNOBSERVED',8,'REINSTATE REQUIRED',10,'REINSTATE FAILED',11,'TARGET OVER LAG LIMIT',12,'TARGET UNDER LAG LIMIT',''), di.diftgt, di.dift
hs,decode(di.difopr,1,'YES',2,'NO',3,'UNKNOWN',''), di.difobs, decode(bitand(difl2, 16384), 16384, 'YES', 'NO'), di2.di2pdbun, decode(bitand(di.difl2,64), 64, 'YES', 'NO'), decode(di2.di2min_req_captu
re_scn, 0, to_number(null), di2.di2min_req_capture_scn), decode(bitand(di.difl3,2), 2, 'YES', 'NO'), di.con_id, di.diprct, to_number(sys_context('userenv','con_dbid')), decode(bitand(di2.di2fl
g, 32768), 32768, 'YES', 'NO'), decode(bitand(di.difl3, 512), 512, 'YES', 'NO'), decode(bitand(di.difl3,4096),4096,'ENABLED','DISABLED') from x$kccdi di, x$kccdi2 di2
--//如果运气好很快可以查询到完整定义.
--//不行alter system flush shared_pool;,再试,生产系统也许不建议这样操作,可以在测试环境或者dg上尝试.
3.还有1个方法扫描libserverNN.a文件.
--//NN对应版本号。注:21c没有后面的NN.
$ locate --regex "libserver*.a"
/u01/app/oracle/product/21.0.0/dbhome_1/lib/libserver.a
$ strings /u01/app/oracle/product/21.0.0/dbhome_1/lib/libserver.a | grep "select di.inst_id,di.didbi,di.didbn,to_date"
--//oracle 写在这个文件里面的代码就是完整的一行,太长了,我做了格式化处理.
SELECT di.inst_id
,di.didbi
,di.didbn
,TO_DATE (di.dicts, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian')
,TO_NUMBER (di.dirls)
,TO_DATE (di.dirlc, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian')
,TO_NUMBER (di.diprs)
,TO_DATE (di.diprc, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian')
,DECODE (di.dimla, 0, 'NOARCHIVELOG', 1, 'ARCHIVELOG', 'MANUAL')
,TO_NUMBER (di.discn)
,TO_NUMBER (di.difas)
,DECODE
(
BITAND (di.diflg, 256)
,256, 'CREATED'
,DECODE
(
BITAND (di.diflg, 1024)
,1024, 'STANDBY'
,DECODE
(
BITAND (di.difl3, 8)
,8, 'FARSYNC'
,DECODE
(
BITAND (di.diflg, 32768)
,32768, 'CLONE'
,DECODE
(
BITAND (di.diflg, 4096)
,4096, 'BACKUP'
,'CURRENT'
)
)
)
)
)
,TO_DATE (di.dicct, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian')
,di.dicsq
,TO_NUMBER (di.dickp_scn)
,TO_DATE
(
di.dickp_tim
,'MM/DD/RR HH24:MI:SS'
,'NLS_CALENDAR=Gregorian'
)
,DECODE
(
BITAND (di.diflg, 4)
,4, 'REQUIRED'
,DECODE (di.diirs, 0, 'NOT ALLOWED', 'ALLOWED')
)
,TO_DATE (di.divts, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian')
,DECODE
(
di.didor
,0, 'MOUNTED'
,DECODE
(
di.didor
,1, 'READ WRITE'
,DECODE
(
di.didor
,2, 'READ ONLY'
,DECODE
(
di.didor
,3, 'READ ONLY WITH APPLY'
,'CLOSED BY SWITCHOVER'
)
)
)
)
,DECODE
(
BITAND (di.diflg, 65536)
,65536, 'MAXIMUM PROTECTION'
,DECODE
(
BITAND (di.diflg, 128)
,128, 'MAXIMUM AVAILABILITY'
,DECODE
(
BITAND (di.diflg, 134217728)
,134217728, 'RESYNCHRONIZATION'
,DECODE
(
BITAND (di.diflg, 8)
,8, 'UNPROTECTED'
,'MAXIMUM PERFORMANCE'
)
)
)
)
,DECODE
(
di.diprt
,1, 'MAXIMUM PROTECTION'
,2, 'MAXIMUM AVAILABILITY'
,3, 'RESYNCHRONIZATION'
,4, 'MAXIMUM PERFORMANCE'
,5, 'UNPROTECTED'
,'UNKNOWN'
)
,DECODE
(
di.dirae
,0, 'DISABLED'
,1, 'SEND'
,2, 'RECEIVE'
,3, 'ENABLED'
,'UNKNOWN'
)
,TO_NUMBER (di.diacid)
,TO_NUMBER (di.diacid)
,DECODE
(
BITAND (di.difl2, 32768)
,32768, 'SNAPSHOT STANDBY'
,DECODE
(
BITAND (di.diflg, 33554432)
,33554432, 'LOGICAL STANDBY'
,DECODE
(
BITAND (di.diflg, 1024)
,1024, 'PHYSICAL STANDBY'
,DECODE (BITAND (di.difl3, 8), 8, 'FAR SYNC', 'PRIMARY')
)
)
)
,TO_NUMBER (di.diars)
,DECODE (BITAND (difl2, 1), 1, 'ENABLED', 'DISABLED')
,DECODE
(
di.disos
,0, 'IMPOSSIBLE'
,1, 'NOT ALLOWED'
,2, 'SWITCHOVER LATENT'
,3, 'SWITCHOVER PENDING'
,4, 'TO PRIMARY'
,5, 'TO STANDBY'
,6, 'RECOVERY NEEDED'
,7, 'SESSIONS ACTIVE'
,8, 'PREPARING SWITCHOVER'
,9, 'PREPARING DICTIONARY'
,10, 'TO LOGICAL STANDBY'
,11, 'FAILED DESTINATION'
,12, 'RESOLVABLE GAP'
,13, 'LOG SWITCH GAP'
,14, 'UNRESOLVABLE GAP'
,NULL
)
,DECODE (di.didgd, 0, 'DISABLED', 'ENABLED')
,DECODE
(
BITAND (di.diflg, 1048576)
,1048576, 'ALL'
,DECODE (BITAND (di.diflg, 2097152), 2097152, 'STANDBY', 'NONE')
)
,DECODE
(
BITAND (diflg, 1073741824)
,1073741824, 'YES'
,DECODE
(
BITAND (diflg, 131072 + 262144 + 524288)
,0, DECODE
(
BITAND (difl2, 2 + 64)
,0, DECODE (BITAND (di.difl3, 512), 0, 'NO', 'IMPLICIT')
,'IMPLICIT'
)
,'IMPLICIT'
)
)
,DECODE (BITAND (di.diflg, 131072), 131072, 'YES', 'NO')
,DECODE (BITAND (di.diflg, 262144), 262144, 'YES', 'NO')
,DECODE
(
BITAND (di.diflg, 268435456)
,268435456, 'YES'
,DECODE
(
BITAND (di2flag, 16384)
,16384, 'STANDBY NOLOGGING FOR DATA AVAILABILITY'
,DECODE
(
BITAND (di2flag, 32768)
,32768, 'STANDBY NOLOGGING FOR LOAD PERFORMANCE'
,'NO'
)
)
)
,di.diplid
,di.dipln
,di2.di2rdi
,di2.di2inc
,TO_NUMBER (di.dicur_scn)
,DECODE
(
BITAND (di2.di2flag, 1)
,1, 'YES'
,DECODE (di2.di2rsp_oldest, 0, 'NO', 'RESTORE POINT ONLY')
)
,DECODE (BITAND (diflg, 524288), 524288, 'YES', 'NO')
,DECODE (BITAND (difl2, 2), 2, 'YES', 'NO')
,di2.di2dbun
,TO_NUMBER (di2.di2actiscn)
,DECODE
(
di.difmod
,0, 'DISABLED'
,1, 'ZERO DATA LOSS'
,2, 'POTENTIAL DATA LOSS'
,3, 'OBSERVE-ONLY'
,''
)
,DECODE
(
di.difsts
,0, 'DISABLED'
,1, 'BYSTANDER'
,2, 'SYNCHRONIZED'
,3, 'UNSYNCHRONIZED'
,4, 'SUSPENDED'
,5, 'STALLED'
,6, 'LOADING DICTIONARY'
,7, 'PRIMARY UNOBSERVED'
,8, 'REINSTATE REQUIRED'
,10, 'REINSTATE FAILED'
,11, 'TARGET OVER LAG LIMIT'
,12, 'TARGET UNDER LAG LIMIT'
,''
)
,di.diftgt
,di.difths
,DECODE (di.difopr, 1, 'YES', 2, 'NO', 3, 'UNKNOWN', '')
,di.difobs
,DECODE (BITAND (difl2, 16384), 16384, 'YES', 'NO')
,di2.di2pdbun
,DECODE (BITAND (di.difl2, 64), 64, 'YES', 'NO')
,DECODE
(
di2.di2min_req_capture_scn
,0, TO_NUMBER (NULL)
,di2.di2min_req_capture_scn
)
,DECODE (BITAND (di.difl3, 2), 2, 'YES', 'NO')
,di.con_id
,di.diprct
,TO_NUMBER (SYS_CONTEXT ('userenv', 'con_dbid'))
,DECODE (BITAND (di2.di2flg, 32768), 32768, 'YES', 'NO')
,DECODE (BITAND (di.difl3, 512), 512, 'YES', 'NO')
,DECODE (BITAND (di.difl3, 4096), 4096, 'ENABLED', 'DISABLED')
FROM x$kccdi di, x$kccdi2 di2
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3025526/ ,如需转载,请注明出处,否则将追究法律责任。