一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Oracle常用系统数据字典表、系统包功能分类

时间:2022-06-29 09:36:31 编辑:袖梨 来源:一聚教程网

【对象信息】
查看表:user_tables、all_tables、dba_tables

查看表字段:user_tab_columns、all_ tab_columns、dba_tab_columns

查看表注释:user_ tab_comments 、all_tab_comments、dba_tab_comments

查看字段注释:user_col_comments、all_col_comments、dba_col_comments

查看索引信息:user_indexes、all_indexes、dba_indexes

查看索引所在字段:user_ind_columns、all_ind_columns、dba_ind_columns

查看约束信息:user_constraints、all_constraints、dba_constraints

查看约束所在字段:user_cons_columns、all_cons_columns、dba_cons_columns

查看触发器信息:user_triggers、all_triggers、all_triggers

查看序列信息:user_sequences、all_sequences、dba_sequences

查看视图信息:user_views、all_views、dba_views

查看同义词信息:user_synonyms、all_synonyms、dba_synonyms

查看DBLINK信息:user_db_links、all_db_links、dba_db_links

查看JOB信息:user_jobs、all_jobs、dba_jobs

查看所有对象信息(过程PROCEDURE、函数FUNCTION、包和包体、JOB和LOB大字段、表、视图、索引、序列、触发器):user_objects、all_objects、dba_objects

查看过程、函数、触发器、包和包体内容:user_source、all_source、dba_source

【举例】

--查看用户下所有的表

SELECT * FROM user_tables;

--查看某表的创建时间

SELECT object_name, created

FROM user_objects

WHERE object_name = upper('&table_name');

--看索引所在字段

SELECT * FROM user_ind_columns WHERE index_name = upper('&index_name');

--查看序列号,last_number是当前值

SELECT * FROM user_sequences;

--查看视图及其SELECT语句

SELECT * FROM user_views;

--查看某表的约束条件

SELECT * FROM user_constraints WHERE table_name = upper('&table_name');

--查看过程状态

SELECT * FROM user_objects WHERE object_type = 'PROCEDURE';

--查看过程源代码

SELECT * FROM user_source WHERE NAME = upper('&procedure_name');

--查看名称包含log字符的表

SELECT object_name, object_id

FROM user_objects

WHERE instr(object_name, 'LOG') > 0;

--查看建表语句

SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'PROCEDURE_NAME', 'USER_NAME') FROM dual;

--查看远程数据库对象的定义

SELECT DBMS_LOB.SUBSTR@dblinkname(DBMS_METADATA.GET_DDL@dblinkname('TABLE', 'TABLENAME', 'USERNAME')) FROM DUAL@dblinkname;

【表空间与数据文件信息】
查看用户默认表空间和临时表空间:user_users、all_users、dba_users

查看表空间信息:user_tablespaces、all_tablespaces、dba_tablespaces

查看表空间空余空间:dba_free_space

查看表空间数据文件及使用情况:dba_data_files

查看数据文件详细信息:v$datafile

查看数据段基本信息:user_segments、all_segments、dba_segments

查看数据区基本信息:user_extents、all_extents、dba_extents

查看临时表空间信息:dba_temp_files

回滚段信息:dba_rollback_segs

【举例】

--查看用户默认表空间和临时表空间

SELECT * FROM user_users;

--查看用户有权操作的表空间基本情况

SELECT * FROM user_tablespaces;

--查看表空间剩余空间

SELECT tablespace_name, SUM(bytes), SUM(blocks)

FROM dba_free_space

GROUP BY tablespace_name;

--查看表空间数据文件及其位置

select * from dba_data_files;

--查看数据文件详细信息

SELECT * FROM v$datafile

【用户、角色与权限信息】
查看所有角色:dba_roles

查看用户角色:user_role_privs、dba_role_privs

查看用户权限:user_sys_privs、dba_sys_privs

查看角色权限:role_sys_privs

查看用户操作表权限:user_tab_privs、all_tab_privs、dba_tab_privs

【数据库信息】
查看控制文件信息:v$controlfile

查看系统参数信息:v$parameter

数据库系统运行信息:v$datafile

查看当前实例基本信息:v$instance

实例当前有效的参数信息:v$system_parameter

查看日志文件位置:v$logfile

查看日志文件信息:v$log

查看日志线程信息:v$thread

查看归档日志位置:v$archived_dest

查看归档日志信息:v$archived_log

日志历史切换信息:v$loghist

查看数据允许的连接数:show parameter processes

【内存与进程信息】
SGA区的基本信息:v$sga

SGA区的详细信息:v$sgastat

共享SQL区SQL详细信息(SQL文本是CLOB,每条SQL仅记录一次):v$sql

共享SQL区SQL详细信息(SQL文本是CLOB,不同用户执行相同SQL多次记录):v$sqlarea

共享SQL区SQL的文本信息(仅记录文本且拆分成多行):v$sqltext

库缓存性能的统计数据:v$librarycache

联机的回滚段的名字:v$rollstat

后台进程信息:v$bgprocess

会话信息:v$session

【性能信息】
文件IO信息:v$filestat

锁存器的统计数据:v$latch

块竞争统计数据:v$waitstat

事件的总计等待时间:v$system_event

事件等待信息:v$session_wait

排序操作信息:v$sort_usage

被锁定对象信息:v$locked_object

会话的IO信息:v$sess_io

会话的等待信息:v$session_wait

【举例】

--查看当前会话的SID

select userenv('sid') from dual;

--查看当前被锁的对象信息

SELECT o.object_name,

s.sid,

s.serial#,

s.username,

s.osuser,

s.machine,

s.terminal

FROM v$locked_object l, dba_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid;

--杀掉系统对象锁定的进程

ALTER system KILL session 'SID,serial#';

--如何监控事例的等待?

SELECT event,

SUM(decode(wait_Time, 0, 0, 1)) "Prev",

SUM(decode(wait_Time, 0, 1, 0)) "Curr",

COUNT(*) "Tot"

FROM v$session_wait

GROUP BY event

ORDER BY 4;

--如何查询做比较大的排序的进程?

SELECT b.tablespace,

b.segfile#,

b.segblk#,

b.blocks,

a.sid,

a.serial#,

a.username,

a.osuser,

a.status

FROM v$session a, v$sort_usage b

WHERE a.saddr = b.session_addr

ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks;

--如何查看回滚段的争用情况?

SELECT NAME, waits, gets, waits / gets "Ratio"

FROM v$rollstat C, v$rollname D

WHERE C.usn = D.usn;

--如何监控表空间的 I/O 比例?

SELECT B.tablespace_name NAME,

B.file_name       "file",

A.phyrds          pyr,

A.phyblkrd        pbr,

A.phywrts         pyw,

A.phyblkwrt       pbw

FROM v$filestat A, dba_data_files B

WHERE A.file# = B.file_id

ORDER BY B.tablespace_name;

--如何监控文件系统的 I/O 比例?

SELECT substr(C.file#, 1, 2) "#",

substr(C.name, 1, 30) "Name",

C.status,

C.bytes,

D.phyrds,

D.phywrts

FROM v$datafile C, v$filestat D

WHERE C.file# = D.file#;

--如何监控 SGA 的命中率?

SELECT a.value + b.value "logical_reads",

c.value "phys_reads",

round(100 * ((a.value + b.value) - c.value) / (a.value + b.value)) "BUFFER HIT RATIO"

FROM v$sysstat a, v$sysstat b, v$sysstat c

WHERE a.statistic# = 38

AND b.statistic# = 39

AND c.statistic# = 40;

--如何监控 SGA 中字典缓冲区的命中率?

SELECT parameter,

gets,

Getmisses,

getmisses / (gets + getmisses) * 100 "miss ratio",

(1 - (SUM(getmisses) / (SUM(gets) + SUM(getmisses)))) * 100 "Hit ratio"

FROM v$rowcache

WHERE gets + getmisses <> 0

GROUP BY parameter, gets, getmisses;

--如何监控 SGA 中共享缓存区的命中率,应该小于1%

SELECT SUM(pins) "Total Pins",

SUM(reloads) "Total Reloads",

SUM(reloads) / SUM(pins) * 100 libcache

FROM v$librarycache;

SELECT SUM(pinhits - reloads) / SUM(pins) "hit radio",

SUM(reloads) / SUM(pins) "reload percent"

FROM v$librarycache;

--如何知道使用CPU多的用户session?

SELECT a.sid,

spid,

status,

substr(a.program, 1, 40) prog,

a.terminal,

osuser,

VALUE / 60 / 100 VALUE

FROM v$session a, v$process b, v$sesstat c

WHERE c.statistic# = 11

AND c.sid = a.sid

AND a.paddr = b.addr

ORDER BY VALUE DESC;

【常用系统包】
dbms_output用于输入和输出信息

put():在当前行输出

put_line():在当前行结尾处换行并在新行输出

newline:换行

getline:取得缓冲区的单行信息

getlines:取得缓冲区的多行信息

dbms_job用于安排和管理作业队列

submit():新建作业

remove():移除作业

change():修改作业

what()、next_date()、interval():更改作业任务、下次执行时间、时间间隔

broken()、run():暂停作业、运行作业

dbms_lob使用和维护LOB字段

write:向LOB中写入数据

read:从LOB中读取数据

instr:从LOB中查字符位置

substr:从LOB中取字符

getlength:返回LOB长度

dbms_metadata.get_ddl:生成数据库对象的ddl信息

dbms_random:快速生成随机数

initialize:初始化dbms_random包,必须提供随机数种子

seed:复位随机数种子

random:生产随机数

dbms_flashback:激活或禁止会话的flashback特征,普通用户使用需授权

enable_at_time:以时间方式激活会话的flashback

enable_at_system_change_number:以系统改变号(scn)方式激活会话的flashback

get_system_change_number:取得系统的当前scn值

disable:禁止会话的flashback模式

dbms_ddl:DDL信息管理

alter_compile:重新编译过程、函数和包

analyze_object:分析表、索引、簇并生成统计数据

dbms_stat:用于搜集,查看,修改数据库对象的优化统计信息

get_column_stats:取得列的统计信息

get_index_stats:取得索引的统计信息

get_system_stats:从统计表或数据字典中取得系统统计信息

get_table_stats:取得表的统计信息

dbms_session

dbms_rowid:取得行标识符(rowid)的信息并建立ROWID

dbms_shared_pool:操作共享池

sizes:显示在共享池中大于指定尺寸的对象

keep:用于将特定对象绑定到共享池中

unkeep:清除被绑定到共享池中的对象

热门栏目