当前位置:文档之家› oracle内置常用表和视图及其日志管理

oracle内置常用表和视图及其日志管理

oracle内置常用表和视图及其日志管理
oracle内置常用表和视图及其日志管理

DBA_TABLES、ALL_TABLES以及USER_TABLES此三个视图可以用来查询ORACLE中关系表信息,它们之间的关系和区别有:

DBA_TABLES >= ALL_TABLES >= USER_TABLES

DBA_TABLES意为DBA拥有的或可以访问的所有的关系表。

ALL_TABLES意为某一用户拥有的或可以访问的所有的关系表。

USER_TABLES意为某一用户所拥有的所有的关系表。

由上可知,当某一用户本身就为数据库DBA时,DBA_TABLES与ALL_TABLES等价。此规律可以类推至Oracle中其它类似名称的视图。

需要注意的是在ORACLE数据库中大小写是敏感的,而此三表中数据默认都是大写的,所以在进行查询的时候注意小写的数据可能会造成数据无法查到。

一.Oracle表明细及说明

1.dba_开头表 dba_users 数据库用户信息

dba_segments 表段信息

dba_extents 数据区信息

dba_objects 数据库对象信息

dba_tablespaces 数据库表空间信息

dba_data_files 数据文件设置信息

dba_temp_files 临时数据文件信息

dba_rollback_segs 回滚段信息

dba_ts_quotas 用户表空间配额信息

dba_free_space 数据库空闲空间信息

dba_profiles 数据库用户资源限制信息

dba_sys_privs 用户的系统权限信息

dba_tab_privs 用户具有的对象权限信息

dba_col_privs 用户具有的列对象权限信息

dba_role_privs 用户具有的角色信息

dba_audit_trail 审计跟踪记录信息

dba_stmt_audit_opts 审计设置信息

dba_audit_object 对象审计结果信息

dba_audit_session 会话审计结果信息

dba_indexes 用户模式的索引信息

https://www.doczj.com/doc/999898026.html,er_开头表

user_objects 用户对象信息

user_source 数据库用户的所有资源对象信息

user_segments 用户的表段信息

user_tables 用户的表对象信息

user_tab_columns 用户的表列信息

关于这个还涉及到两个常用的例子如下:

2.1.oracle中查询某个字段属于哪个表

Sql代码

select table_name,owner from dba_tab_columns t where

t.COLUMN_NAME like upper('%username%');

2.2.oracle中查询某个表的列数

Sql代码

select count(*) from user_tab_columns where table_name=

upper('sys_operate')

注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的

user_constraints 用户的对象约束信息

user_sys_privs 当前用户的系统权限信息

user_tab_privs 当前用户的对象权限信息

user_col_privs 当前用户的表列权限信息

user_role_privs 当前用户的角色权限信息

user_indexes 用户的索引信息

user_ind_columns 用户的索引对应的表列信息

user_cons_columns 用户的约束对应的表列信息

user_clusters 用户的所有簇信息

user_clu_columns 用户的簇所包含的内容信息

user_cluster_hash_expressions 散列簇的信息

3.v$开头表

v$database 数据库信息

v$datafile 数据文件信息

v$controlfile 控制文件信息

v$logfile 重做日志信息

v$instance 数据库实例信息

v$log 日志组信息

v$loghist 日志历史信息

v$sga 数据库SGA信息

v$parameter 初始化参数信息

v$process 数据库服务器进程信息

v$bgprocess 数据库后台进程信息

v$controlfile_record_section 控制文件记载的各部分信息 v$thread 线程信息

v$datafile_header 数据文件头所记载的信息

v$archived_log 归档日志信息

v$archive_dest 归档日志的设置信息

v$logmnr_contents 归档日志分析的DML DDL结果信息 v$logmnr_dictionary 日志分析的字典文件信息

v$logmnr_logs 日志分析的日志列表信息

v$tablespace 表空间信息

v$tempfile 临时文件信息

v$filestat 数据文件的I/O统计信息

v$undostat Undo数据信息

v$rollname 在线回滚段信息

v$session 会话信息

v$transaction 事务信息

v$rollstat 回滚段统计信息

v$pwfile_users 特权用户信息

v$sqlarea 当前查询过的sql语句访问过的资源及相关的信息 v$sql 与v$sqlarea基本相同的相关信息

v$sysstat 数据库系统状态信息

4.all_开头表

all_users 数据库所有用户的信息

all_objects 数据库所有的对象的信息

all_def_audit_opts 所有默认的审计设置信息

all_tables 所有的表对象信息

all_indexes 所有的数据库对象索引的信息

5.session_开头表

session_roles 会话的角色信息

session_privs 会话的权限信息

6.index_开头表

index_stats 索引的设置和存储信息

二.oracle最重要的9个动态性能视图

v$session + v$session_wait (在10g里功能被整合,凑合算1个吧.) v$process

v$sql

v$sqltext

v$bh (更宁愿是x$bh)

v$lock

v$latch_children

v$sysstat

v$system_event

三.按组分的几组重要的性能视图

1.System 的 over view

v$sysstat,v$system_event,v$parameter

2.某个session 的当前情况

v$process,v$session,v$session_wait,v$session_event,v$sesstat

3.SQL的情况

v$sql,v$sqlarea,v$SQL_PLAN,V$SQL_PLAN_STATISTICS,v$sqltext_with_newlines

https://www.doczj.com/doc/999898026.html,tch / lock /ENQUEUE

v$latch,v$latch_children,v$latch_holder,v$lock,V$ENQUEUE_STAT,V$ENQUEUE_LOCK 5.IO 方面的

v$segstat,v$filestat,v$tempstat,v$datafile,v$tempfile

6.shared pool / Library cache

v$Librarycache,v$rowcache,x$ksmsp

7.几个advice也不错

v$db_cache_advice,v$PGA_TARGET_ADVICE,v$SHARED_POOL_ADVICE

四、oracle日志文件的整理

1增加日志组

实例1:为oracle数据库增加一个重做日志组,组号自动分配,组中

包含两个日志成员,大小为10M,并查询动态性能视图确定能否成功。

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

或 sqlplusw sys/wangwang as sysdba

2. 增加日志组:

alter database jlfx add logfile ('d:\log\log4a.log','d:\log\log4b.log') size

10M; 或

alter database dog add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;

3. 查询日志信息(包括组号,成员数,成员,每个成员的大小):

SQL> col member format a50

SQL> select a.group#,a.members,a.bytes,b.member from v$log a,

v$logfile b where a.group#=b.group#;

GROUP# MEMBERS BYTES MEMBER

------------------------ ------------------------------------------------

3 1 10485760

D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO03.LOG

2 1 10485760

D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG

1 1 10485760

D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG

SQL> select group#,member from v$logfile;

GROUP# MEMBER

------ ------------------------------------------------------------

3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO03.LOG

2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG

1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG

SQL> select group#,members,bytes from v$log;

GROUP# MEMBERS BYTES

-------------------- ---------- ---------- ---------- ----------

1 1 10485760

2 1 10485760

3 1 10485760

例2:为oracle数据库再增加一个重做日志组,指定组号,组中包含两个日志成员,大小为10M,并查询动态性能视图确定能否成功操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 增加日志组:

SQL> alter database jlfx add logfile group 5

('d:\log\log5a.log','d:\log5b.log') size 10M;

或 SQL> alter database dog add logfile group 5

('d:\log\log5a.log','d:\log5b.log') size 10M;

3. 查询日志信息:

SQL> col member format a50

SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group# order by a.group#;

或 SQL> select group#,member from v$logfile;

SQL> select group#,members,bytes from v$log;

2增加日志成员

实例3:为oracle服务器的第4个重做日志组增加一个日志成员"log4c.lg".

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 增加日志成员:

SQL> alter database jlfx add logfile member 'd:\log\log4c.log' to group 4;

SQL> alter database dog add logfile member 'd:\log\log4c.log' to group 4;

3. 查询日志信息:

SQL> col member format a50

SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

或SQL> select group#,member from v$logfile;(显示用户数据库日志组和成员)

或SQL> select group#,members,bytes from v$log;

练习:为每个日志组添加一个日志成员。

3删除日志组(注意:current/active状态下或只有两个日志组都不能删除该日志组)

实例4:删除日志组4

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 查看日志组的状态(只有INACTIVE和UNUSED状态的可删除)

SQL> select group#,status,members,bytes from v$log;

3. 删除日志组4(下面的命令只是逻辑删除,要物理删除得用os命令)

SQL> alter database jlfx drop logfile group 4;

或 SQL> alter database dog drop logfile group 4;

此时不能再往日志组4中添加成员,如:

alter database dog add logfile member 'd:\log\log4d.log' to group 4;

出现错误信息:

第 1 行出现错误:

ORA-00359: 日志文件组 4 不存在

如果2号日志组是当前日志组,执行删除2号日志组的操作,则会出现错误。

SQL> alter database dog drop logfile group 2;

错误提示信息如下:

alter database dog drop logfile group 2

*

第 1 行出现错误:

ORA-01623: 日志 2 是实例 dog (线程 1) 的当前日志 - 无法删除

ORA-00312: 联机日志 2 线程 1:

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG'

4. 查询日志信息:

SQL> col member format a50

SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

或SQL> select group#,member from v$logfile;

或SQL> select group#,members,bytes from v$log;

4删除日志成员(注意:current状态下或日志组中只有一个日志成员时不能删除)

实例5:删除日志组5中的第2个日志组成员

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 查看日志组的状态

SQL> select group#,status,members,bytes from v$log;

3. 删除日志组4中的第2、3个日志组成员

SQL> alter database dog drop logfile member 'd:\log\log4b.log',

'd:\log\log4c.log';

4. 查询日志信息:

SQL> col member format a50

SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log

a,v$logfile b where a.group#=b.group#;

或SQL> select group#,member from v$logfile;

或SQL> select group#,members,bytes,status from v$log;

注意:日志组中只有一个日志成员时不能删除,如:

SQL> alter database dog drop logfile member 'd:\log\log4a.log';此时,出现如下信息:

第 1 行出现错误:

ORA-00361: 无法删除最后一个日志成员 d:\log\log4a.log (组 4)

5清空重做日志

实例6:清空重做日志组4

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 关闭数据库

SQL> shutdown immediate

删除4号日志组的所有成员,再启动则出现错误:

3. 启动数据库

SQL> startup

ORACLE 例程已经启动。

错误提示信息如下:

Total System Global Area 285212672 bytes

Fixed Size 1248552 bytes

Variable Size 71303896 bytes

Database Buffers 205520896 bytes

Redo Buffers 7139328 bytes

数据库装载完毕。

ORA-00313: 无法打开日志组 4 (用于线程 1) 的成员

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4A.LOG'

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4C.LOG'

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4B.LOG'

查看数据库的启动状态:

SQL> select status from v$instance;

或直接启动数据库到加载状态(特别注意)

SQL> startup mount

4. 清空重做日志组4,恢复该日志组的成员

SQL> alter database clear logfile group 4;

5. 查询日志信息:

SQL> col member format a50

SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

SQL> select a.group#,a.status,a.members from v$log a,v$logfile b where a.group#=b.group#;

6.改变日志的模式

SQL> alter system switch logfile;

6移动日志文件

实例7:移动日志文件,观察日志文件丢失时的现象,并重新定位。

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 关闭数据库

shutdown

3. 物理移动日志成员到目标位置

将文件d:\oracle\product\10.2.0\oradata\jlfx\REDO03.log 移动

到 d:\REDO03.log;

4. 打开数据库

startup;

5. 执行rename命令,重新定位日志文件

alter database jlfx rename file

'd:\oracle\product\10.2.0\oradata\jlfx\REDO03.log' to 'd:\REDO03.log';

alter database dog rename file 'd:\log\log4b.log' to 'd:\log4b.log';

6. 打开数据库

alter database open;

7. 查询日志信息:

col member format a50

select a.group#,a.status,a.members,a.bytes,b.member from v$log

a,v$logfile b where a.group#=b.group#;

7手工日志切换

实例8:强制切换日志,显示日志状态

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 查看日志组的状态

select group#,sequence#,members,status from v$log;

3. 手工日志切换(在open状态下操作)

alter system switch logfile;

4. 查看日志组及成员的状态

select group#,sequence#,members,status from v$log;

8日志归档(归档模式:archivelog,非归档模式:noarchivelog)

注意:数据库只有在加载状态下才能修改日志模式

实例9:查看数据库的日志操作模式,然后将数据库修改为归档模式

操作步骤如下:

1. 以系统管理员身份登入:

sqlplusw sys/jlfx as sysdba

2. 关闭数据库,然后加载数据库

shutdown immediate

startup mount

3. 查看归档模式

archive log list;

或 select name,log_mode from v$database;

4. 修改归档模式

alter database archivelog(开启数据库的归档模式)

alter database noarchivelog(关闭数据库的归档模式)

五、归档日志的处理操作

1.将数据库日志模式由非归档改为归档模式

Startup mount

Alter database archivelog;

2.查看v$log和v$logfile

Desc v$log,desc v$logfile

Group#表示组别,members表示成员多少,arc表示是否归档保存了,status中current表示当前正在使用的日志文件,不能删除,

INACTIVE表示已经归档出去了的日志,可以删除,要想删除当前日志,必须先切换日志(alter system switch logfile),让其归档出去,然后status 变成ACTIVE,然后利用检查点来删除(alter system checkpoint,alter database drop logfile member ‘’,或者alter database drop logfile group 1)3.增加一个日志文件组4,组中放入一个成员(redo04.log)

Alter database add logfile group 4

(‘I:\oracle\product\10.2.0\oradata\orcl\redo04.log’) size 10M;

4.向日志文件组4再增加一个成员(redo04a.log)

Alter database add logfile member ‘…\redo04a.log’ to group 4;

5.将redo01.log移动到一个新的地方

(日志文件的移动重命名

关闭数据库

使用操作系统命令拷贝,移动或重命名重做日志文件

启动

使用alter database rename file ‘original name’ to ‘new name’ 命令更新控制文件

打开数据库)

Sql>Shutdown immediate

手动移走redo01.log文件

Sql>startup

报错说找不到redo01.log文件

Sql>alter database rename file ‘原路径’ to ‘新路径’

Alter database open;

6.删除日志成员和日志文件组

Alter database drop logfile member ‘路径’;

Alter database drop logfile group 4;

7.设置归档目的地并测试文档

Alter system set log_archive_dest_1=’location:d:\arch’;

每当进行日志切换的时候,日志文件就被备份到归档日志里;

8.日志文件修复

当status为INACTIVE时

SQL>alter database clear logfile group 4;

SQL>alter database clear unarchived logfile group 4;

SQL>shutdown immediate;

SQL>startup mount;

SQL>recover database until cancel;

SQL>alter database open resetlogs;

SQL>archive log list;

六、Oracle日志文件管理与查看

1.查询系统使用的是哪一组日志文件:

select * from v$log;

2.查询正在使用的组所对应的日志文件:

select * from v$logfile;

3.强制日志切换:

alter system switch logfile;

4.查询历史日志:

select * from v$log_history;

5.查询日志的归档模式:

select dbid,name,created,log_mode from v$database;

6.查询归档日志的信息:

select recid,stamp,thread#,sequence#,name from

v$archived_log;

7.增加与删除日志文件组

alter database add logfile group 1

('/home1/oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log size 100M;

alter database drop logfile group 1;

8.增加与删除日志成员

alter database add logfile member

'/home1/oracle/oradata/ora8i/log1a.log' to group

1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;

alter database drop logfile member

'/home1/oracle/oradata/ora8i/log1a.log' ;

9.日志文件移动

alter database rename file

'/home1/oracle/oradata/ora8i/log1a.log' to

'/home2/oracle/oradata/ora8i/log1a.log';

执行该命令之前必须保证该日志文件物理上已经移动到新目录

10.清除日志文件

alter database clear logfile

'/home1/oracle/oradata/ora8i/log1a.log';

该命令用于不能用删除组及组成员命令删除日志时使用

================================================== Oracle日志查看

一.Oracle日志的路径:

登录:sqlplus "/as sysdba"

查看路径:SQL> select * from v$logfile;

SQL> select * from v$logfile;(#日志文件路径)

二.Oracle日志文件包含哪些内容:(日志的数量可能略有不同)

control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbf

control02.ctl redo03.log system01.dbf users01.dbf

control03.ctl redo01.log SHTTEST.dbf temp01.dbf

三.Oracle日志的查看方法:

SQL>select * from v$sql (#查看最近所作的操作)

SQL>select * fromv $sqlarea(#查看最近所作的操作)

Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日

志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的

日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而

LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。

四.LogMiner的使用:

1、创建数据字典文件(data-dictionary)

1).首先在init.ora初始化参数文件中,添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据库,使新加的参数生效:

SQL> shutdown;

SQL>startup;

2).然后创建数据字典文件

SQL> connect /as sysdba

SQL> execute dbms_logmnr_d.build(dictionary_filename =>

'dict.ora',dictionary_location => '/data1/oracle/logs');

PL/SQL procedure successfully completed

2、创建要分析的日志文件列表

1).创建分析列表,即所要分析的日志

SQL>execute dbms logmnr.add logfile(LogFileName =>

'/data1/oracle/oradata/akazamdb/redo01.log',Options =>

dbms_logmnr.new);

PL/SQL procedure successfully completeds

2).添加分析日志文件,一次添加1个为宜

SQL>execute dbms_ logmnr.add_ logfile(LogFileName =>

'/data1/oracle/oradata/akazamdb/redo01.log',Options =>

dbms_logmnr.ADDFILE);

PL/SQL procedure successfully completed

3、使用LogMiner进行日志分析(具体要查询什么内容可以自己修改)

(1)无限制条件

SQL> EXECUTE dbms_logmnr.start_logmnr(

DictFileName=>'/data1/oracle/logs/v816dict.ora ');

(2)有限制条件

通过对过程DBMS_ LOGMNR.START_LOGMNR中几个不同参数的设置,可以缩小要分析日志文件的范围。通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志。如下面的例子,我们仅仅分析2007年9月18日的日志:

SQL> EXECUTE dbms_logmnr.start_logmnr(

DictFileName => ' /data1/oracle/logs/ v816dict.ora ',

StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS') EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));

也可以通过设置起始SCN和截至SCN来限制要分析日志的范围:

SQL> EXECUTE dbms_logmnr.start_logmnr(

DictFileName => ' /data1/oracle/logs/ v816dict.ora ',

StartScn => 20,

EndScn => 50);

4、观察分析结果(v$logmnr_contents)

到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视

v$logmnr_contents包含LogMiner分析得到的所有的信息。

SELECT sql_redo FROM v$logmnr_contents;

如果我们仅仅想知道某个用户对于某张表的操作,可以通过下面的SQL查询得到,该查询可以得到用户DB_ZGXT对表SB_DJJL所作的一切工作。

SQL> SELECT sql_redo FROM v$logmnr_contents WHERE

username='DB_ZGXT' AND tablename='SB_DJJL';

需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。这是因

为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。

最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

5、查看LogMiner工具分析结果

SQL> select * from dict t where t.table_name like '%LOGMNR%';-看所有与logmnr相关的视图

TABLE_NAME COMMENTS

------------------------------ --------------------------------------------------------------------------------

GV$LOGMNR_CALLBACK Synonym for GV_$LOGMNR_CALLBACK GV$LOGMNR_CONTENTS Synonym for GV_$LOGMNR_CONTENTS GV$LOGMNR_DICTIONARY Synonym for GV_$LOGMNR_DICTIONARY GV$LOGMNR_LOGFILE Synonym for GV_$LOGMNR_LOGFILE

GV$LOGMNR_LOGS Synonym for GV_$LOGMNR_LOGS

GV$LOGMNR_PARAMETERS Synonym for

GV_$LOGMNR_PARAMETERS

GV$LOGMNR_PROCESS Synonym for GV_$LOGMNR_PROCESS

GV$LOGMNR_REGION Synonym for GV_$LOGMNR_REGION

GV$LOGMNR_SESSION Synonym for GV_$LOGMNR_SESSION

GV$LOGMNR_STATS Synonym for GV_$LOGMNR_STATS

GV$LOGMNR_TRANSACTION Synonym for

GV_$LOGMNR_TRANSACTION

V$LOGMNR_CALLBACK Synonym for V_$LOGMNR_CALLBACK

V$LOGMNR_CONTENTS Synonym for V_$LOGMNR_CONTENTS

V$LOGMNR_DICTIONARY Synonym for V_$LOGMNR_DICTIONARY

V$LOGMNR_LOGFILE Synonym for V_$LOGMNR_LOGFILE

V$LOGMNR_LOGS Synonym for V_$LOGMNR_LOGS

V$LOGMNR_PARAMETERS Synonym for V_$LOGMNR_PARAMETERS

V$LOGMNR_PROCESS Synonym for V_$LOGMNR_PROCESS

V$LOGMNR_REGION Synonym for V_$LOGMNR_REGION

V$LOGMNR_SESSION Synonym for V_$LOGMNR_SESSION

V$LOGMNR_STATS Synonym for V_$LOGMNR_STATS

V$LOGMNR_TRANSACTION Synonym for

V_$LOGMNR_TRANSACTION

GV$LOGMNR_LOGS 是分析日志列表视图

分析结果在GV$LOGMNR_CONTENTS 视图中,可按以下语句查询:

select

scn,timestamp,log_id,seg_owner,seg_type,table_space,data_blk#,data_obj#,data_objd#, session#,serial#,username,session_info,sql_redo,sql_undo from logmnr3 t

where t.sql_redo like 'create%';

如果不能正常查询GV$LOGMNR_CONTENTS视图,并报以下错误,

ORA-01306: 在从 v$logmnr_contents 中选择之前必须调用

dbms_logmnr.start_logmnr() 。可采用如下方法:

create table logmnr3 as select * from GV$LOGMNR_CONTENTS;

Oracle端口:1521

oracle系统表和视图说明

1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。 3.视图的作用 用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下: 通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制 隐藏数据复杂性 视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 简化用户的SQL 语句 用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。 以不同的角度来显示基表中的数据 视图的列名可以被任意改变,而不会影响此视图的基表 使应用程序不会受基表定义改变的影响 在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。 保存复杂查询 一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

Oracle 11gR2 概念 第6章 数据字典和动态性能视图

Previous Next View PDF 6 Data Dictionary and Dynamic Performance Views Previous Next View PDF 第6章数据字典和动态性能视图 This chapter describes the central set of read-only reference tables and views of each Oracle database, known collectively as the data dictionary. The chapter also describes the dynamic performance views, which are special views that are continuously updated while a database is open and in use. 本章介绍了每个 Oracle 数据库都具有的只读参考表和视图中最重要的部分,统称为数据字典。本章还介绍了动态性能视图,它们是一些会在数据库处于打开状态时不断更新的特殊视图。 This chapter contains the following sections: 本章包含以下各节: ?Overview of the Data Dictionary o Contents of the Data Dictionary o Storage of the Data Dictionary o How Oracle Database Uses the Data Dictionary ?Overview of the Dynamic Performance Views o Contents of the Dynamic Performance Views o Storage of the Dynamic Performance Views ?Database Object Metadata ?数据字典概述 o数据字典的内容 o数据字典存储 o Oracle数据库如何使用数据字典?动态性能视图概述 o动态性能视图的内容 o动态性能视图的存储 ?数据库对象元数据 Overview of the Data Dictionary 数据字典概述 An important part of an Oracle database is its data dictionary, which is a read-only set of tables that provides administrative metadata about the database. A data dictionary contains information such as the following: Oracle 数据库的一个重要部分是它的数据字典,它是一组提供有关数据库管理元数据的只读表。数据字典包含如下信息: ?The definitions of every schema object in the database, including default values for columns and integrity constraint information ?在数据库中每个模式对象的定义,包括列的默认值和完整性约束信息 ?The amount of space allocated for and currently used by the schema objects ?分配给模式对象的空间量及当前已使用量 ?The names of Oracle Database users, privileges and roles granted ?Oracle数据库用户的名称、授予用户的权限和角色、和与用户相关

Oracle创建视图

Oracle创建视图 在本练习中,将在HR模式中练习如何创建视图,查询视图的定义,并对视图进行更新。 (1)创建一个视图EMPLOYEES_IT,该视图是基于HR模式中的EMPLOYEES表,并且该视图只包括那些部门为IT的员工信息。在创建视图时使用WITH CHECK OPTION,防止更新视图时,输入非IT部门的员工信息。 create or replace view employees_it as select * from employees where department_id =( select department_id from departments where departments.department_name='IT') with check option; (2)创建一个联接视图EMP_DEPT,它包含EMPLOYEES表中的列和DEPARTMENTS 表中的DNAME列。 create or replace view emp_dept as select t1.employee_id,t1.first_name,https://www.doczj.com/doc/999898026.html,st_name,t1.email, t1.phone_number,t1.hire_date,t1.job_id,t1.salary,t2.department_name from employees t1,departments t2 where t1.department_id=t2.department_id with check option; (3)Oracle针对创建的视图,只在数据字典中存储其定义。输入并执行如下的语句查看创建的视图定义: select text from user_views where view_name=UPPER('emp_dept'); (4)查看视图各个列是否允许更新。 col owner format a20 col table_name format a20 col column_name format a20 select * from user_updatable_columns where table_name=UPPER('emp_dept');

Oracle索引分析与查询优化

龙源期刊网 https://www.doczj.com/doc/999898026.html, Oracle索引分析与查询优化 作者:崔黎明志远李婧 来源:《数字技术与应用》2016年第07期 摘要:Oracle是目前国内在大型数据存储中用得比较多的一种关系型数据库,磁盘阵列技术(RAID)和集群技术(RAC)的运用,使Oracle在处理数据效率和数据安全上有非常大的提高,在国内交通、电力,通信和金融等重要领域都有广泛的用途。本文基于Oracle 11g版本,对Rowid和索引的原理机制做出分析,并论述利用这些原理对大型数据表查询的优化。 关键词:Oracle Rowid 索引查询 中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2016)07-0234-02 在逻辑上,Oracle是由多个表空间构成的,在新建一个表空间的时候,必须指定存储的文件,可以指向多个存储在不同磁盘上的数据。表空间下面分为段、区、块。新建一张表的时候,Oracle数据库就会为它创建一个段。所谓区就是指连续的块(block)构成的空间,一般区包含8个空块,block是Oracle数据库最小的数据空间,一般为8k或16k,当开始往这个表中插入数据的时候,Oralce数据库会自动为这个表分配一个区,并把数据不断往此区进行填充,当数据填满此区后,Oralce数据库会重新为该表分配一个区而不是一个段。实际上,对于我们不同的查询过程中,就是通过一些谓词过滤条件,从对应的数据块中获取正确的一行数据或多行数据。如何快速定位到该数据行,是一个数据库学习者不断探索的方向。 1 Rowid 1.1 简介 从字面上理解是行标识的意思,它是Oracle数据库中数据表的一个伪列,用于存放该表中每一行数据的地址,在8i版本之前,Oracle采用受限制的rowid,它是由数据文件编号,块编号和数据在该块内的偏移量这三个部分构成,长度为6个字节,因此在8i之前的版本中,每 个数据库最多可以包含1022个文件,每个文件最多能有4m个数据块,而每个数据库最多能 存储64k条记录。为了突破长度的限制和解决其他一些缺陷,Oracle数据库引入了这样一个概念:相对文件号。它的主要特点是改变之前rowid中数据文件编号是整个数据库范围组成的表空间,即文件编号为5的文件不再是数据库中编号为5的数据文件,而是表空间中对应编号的数据文件。如下图1所示为Oracle11g中一个普通表的rowid。 从该图1中可以看到rowid共有18位,分为四部分,格式为:AAAAAABBBCCCCCCDDD,其中AAAAAA六位表示dataobjectid,根据这个id可以确定该行数据在哪个段中;BBB三位表示相对文件号,通过这个字段号可以用来确定该行数据的绝 对文件号;CCCCCC六位表示datablocknumber,它是相对于datafile的编号;最后三位DDD

Oracle EBS常用表和视图

fnd_user 系统用户表 fnd_application 应用信息表 FND_PROFILE_OPTIONS_VL 系统配置文件 fnd_menus 菜单 fnd_menu_entries_tl FND_NEW_MESSAGES 消息表 FND_FORM 表单表 FND_CONCURRENT_PROGRAMS_VL 并发程序视图 FND_CONCURRENT_PROGRAMS_TL FND_CONCURRENT_PROGRAMS FND_DESCR_FLEX_COL_USAGE_VL FND_DESCR_FLEX_COL_USAGE_TL FND_DESCR_FLEX_COLUMN_USAGES FND_EXECUTABLES_FORM_V 可执行并发程序视图FND_EXECUTABLES_TL FND_EXECUTABLES FND_DESCRIPTIVE_FLEXS FND_CONC_REQ_SUMMARY_V 并发请求视图FND_CONCURRENT_REQUESTS FND_RESPONSIBILITY 职责表

FND_RESPONSIBILITY_VL 职责FND_USER_RESP_GROUPS 用户职责 fnd_flex_value_sets 值集表 FND_FLEX_VALUES FND_IREP_ALL_INTERFACES 接口表 FND_IREP_CLASSES Fnd_Irep_Classes_Tl fnd_territories_vl 国家视图 fnd_log_messages 日志表 fnd_form_functions 功能 FND_DOCUMENT_SEQUENCES 单据序列 FND_DOC_SEQUENCE_ASSIGNMENTS 序列分配 fnd_id_flexs 关键弹性域定义表 FND_ID_FLEX_STRUCTURES 弹性域结构表 FND_ID_FLEX_SEGMENTS 弹性域段表 fnd_descriptive_flexs 描述性弹性域属性表 FND_DESCR_FLEX_CONTEXTS 弹性域列类别表 FND_DESCR_FLEX_COLUMN_USAGES 弹性域列类别属性表FND_FLEX_VALUE_SETS 值集表 FND_FLEX_VALUES 值表 Fnd_Flex_Values_Tl 值描述表

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图

oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图(https://www.doczj.com/doc/999898026.html,/gzz%5Fgzz/blog/item/1f6ef92a67599392033bf6de.html) 2009年08月10日星期一 17:06 oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图dba_开头 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session 会话审计结果信息 dba_indexes 用户模式的索引信息 user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息 user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 关于这个还涉及到两个常用的例子如下: 1、oracle中查询某个字段属于哪个表 Sql代码 select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%'); select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like

oracle中性能视图V$SYSSTAT小结

V$SYSSTAT中包含多个统计项,这部分介绍了一些关键的v$sysstat统计项,在调优方面相当有用。下列按字母先后排序: 数据库使用状态的一些关键指标: l CPU used by this session:所有session的cpu占用量,不包括后台进程。这项统计的单位是百分之x秒.完全调用一次不超过10ms l db block changes:那部分造成SGA中数据块变化的insert,update或delete操作数这项统计可以大概看出整体数据库状态。在各项事务级别,这项统计指出脏缓存比率。 l execute count:执行的sql语句数量(包括递归sql) l logons current:当前连接到实例的Sessions。如果当前有两个快照则取平均值。l logons cumulative:自实例启动后的总登陆次数。 l parse count (hard):在shared pool中解析调用的未命中次数。当sql语句执行并且该语句不在shared pool或虽然在shared pool但因为两者存在部分差异而不能被使用时产生硬解析。如果一条sql语句原文与当前存在的相同,但查询表不同则认为它们是两条不同语句,则硬解析即会发生。硬解析会带来cpu和资源使用的高昂开销,因为它需要oracle 在shared pool中重新分配内存,然后再确定执行计划,最终语句才会被执行。 l parse count (total):解析调用总数,包括软解析和硬解析。当session执行了一条sql语句,该语句已经存在于shared pool并且可以被使用则产生软解析。当语句被使用(即共享) 所有数据相关的现有sql语句(如最优化的执行计划)必须同样适用于当前的声明。这两项统计可被用于计算软解析命中率。 l parse time cpu:总cpu解析时间(单位:10ms)。包括硬解析和软解析。 l parse time elapsed:完成解析调用的总时间花费。 l physical reads:OS blocks read数。包括插入到SGA缓存区的物理读以及PGA中的直读这项统计并非i/o请求数。 l physical writes:从SGA缓存区被DBWR写到磁盘的数据块以及PGA进程直写的数据块数量。 l redo log space requests:在redo logs中服务进程的等待空间,表示需要更长时间的log switch。 l redo size:redo发生的总次数(以及因此写入log buffer),以byte为单位。这项统计显示出update活跃性。

oracle视图总结

oracle视图总结(转) 视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图。 视图的分类: 视图分为简单视图和复杂视图。 两者区别如下: 1.简单视图只从单表里获取数据,复杂视图从多表获取数据; 2.简单视图不包含函数和数据组,复杂视图包含; 3.简单视图可以实现DML操作,复杂视图不可以。 视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 例如: Sql代码 1.CREATE OR REPLACE VIEW dept_sum_vw 2.(name,minsal,maxsal,avgsal)

Oracle常用数据字典表(系统表或系统视图)及查询SQL

Oracle常用数据字典表(系统表或系统视图)及查询SQL 2014年12月15日?数据库?共4187字?暂无评论?阅读861 次 文章目录 ?数据字典分类 ?dba_开头 ?user_开头 ?v$开头 ?all_开头 ?session_开头 ?index_开头 ?伪表 ?数据字典常用SQL查询 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息的视图等。 数据字典系统表,保存在system表空间中。查询所有数据字典可用语句“select * from dictionary;”。 数据字典分类 数据字典主要可分为四部分: 1)内部RDBMS表:x$*,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。

2)数据字典表:*$,如tab$,obj$,ts$等,用来存储表、索引、约束以及其他数据库结构的信息。 3)动态性能视图:gv$*,v$*,记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 4)数据字典视图:user_*、all_*、dba_*,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。 数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)。 数据字典视图可分为静态数据字典视图和动态数据字典视图。 静态数据字典是指在用户访问数据字典时内容不会发生改变。这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。 静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*(该用户方案对象的信息)、all_*(该用户可以访问的所有对象的信息)、dba_*(全部数据库对象的信息)。 动态数据字典是Oracle包含的一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。 dba_开头 dba_users数据库用户信息

ORACLE系统视图及表大全

总结ORACLE系统视图及表大全: dba_开头..... dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs用户具有的对象权限信息dba_col_privs用户具有的列对象权限信息dba_role_privs用户具有的角色信息 dba_audit_trail审计跟踪记录信息 dba_stmt_audit_opts审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session会话审计结果信息 dba_indexes用户模式的索引信息 user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 user_constraints 用户的对象约束信息 user_sys_privs 当前用户的系统权限信息

user_tab_privs 当前用户的对象权限信息 user_col_privs 当前用户的表列权限信息 user_role_privs 当前用户的角色权限信息 user_indexes 用户的索引信息 user_ind_columns用户的索引对应的表列信息 user_cons_columns 用户的约束对应的表列信息 user_clusters 用户的所有簇信息 user_clu_columns 用户的簇所包含的内容信息 user_cluster_hash_expressions 散列簇的信息 v$开头 v$database 数据库信息 v$datafile 数据文件信息 v$controlfile控制文件信息 v$logfile 重做日志信息 v$instance 数据库实例信息 v$log 日志组信息 v$loghist 日志历史信息 v$sga 数据库SGA信息 v$parameter 初始化参数信息 v$process 数据库服务器进程信息 v$bgprocess 数据库后台进程信息 v$controlfile_record_section 控制文件记载的各部分信息v$thread 线程信息 v$datafile_header 数据文件头所记载的信息 v$archived_log归档日志信息 v$archive_dest 归档日志的设置信息 v$logmnr_contents 归档日志分析的DML DDL结果信息v$logmnr_dictionary 日志分析的字典文件信息 v$logmnr_logs 日志分析的日志列表信息 v$tablespace 表空间信息

Oracle DBA 常用视图

Oracle DBA 常用视图 ☆dba_开头..... dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息dba_profiles 数据库用户资源限制信息dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息dba_col_privs 用户具有的列对象权限信息dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session 会话审计结果信息dba_indexes 用户模式的索引信息

☆user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 user_constraints 用户的对象约束信息 user_sys_privs 当前用户的系统权限信息 user_tab_privs 当前用户的对象权限信息 user_col_privs 当前用户的表列权限信息 user_role_privs 当前用户的角色权限信息 user_indexes 用户的索引信息 user_ind_columns 用户的索引对应的表列信息user_cons_columns 用户的约束对应的表列信息user_clusters 用户的所有簇信息 user_clu_columns 用户的簇所包含的内容信息user_cluster_hash_expressions 散列簇的信息 ☆v$开头 v$database 数据库信息 v$datafile 数据文件信息 v$controlfile 控制文件信息 v$logfile 重做日志信息

Oracle常用的45个查询语句

日期/时间 相关查询 1、获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month " 2 FROM DUAL; 2、获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current mont h" 2 FROM DUAL; 3、获取当前年份的第一天 每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL; 4、获取当前年份的最后一天 类似于上面的查询语句。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL 5、 获取当前月份的天数 这个语句非常有用,可以计算出当前月份的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) num ber_of_days 2 FROM DUAL; 6、获取当前月份剩下的天数 下面的语句用来计算当前月份剩下的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT SYSDATE, 2 LAST_DAY (SYSDATE) "Last",

Oracle数据字典与视图

ORACLE数据字典与视图 当ORACLE数据库系统启动后,数据字典总是可用,它驻留在SYSTEM表空间中,所有权属于sys(DBA)用户。 数据字典包含数据库中所有模式对象(包括表、视图、索引、聚簇、同义词、序列、过程、函数、包、触发器等)的定义、列的默认值、完整性约束的定义、用户的权限和角色信息、存储空间分配情况、审计信息、字符集信息等数据库信息。 为了方便用户查询,在数据字典表上建立了数据字典视图集。视图集分为三种,这些视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA。 ▽前缀为USER_的视图,为用户视图,是在用户的模式内,包含当前用户所拥有的全部对象信息。如:USER_OBJECTS视图包含当前用户所建立的对象信息。 ▽前缀为ALL_的视图,为扩展的用户视图,除包含当前用户所拥有的全部对象信息以外,还包含公共帐号和显式授权用户所拥有的全部模式对象信息。如:ALL_USERS。 ▽前缀为DBA_的视图,为DBA的视图,包含整个数据库的所有用户所拥有的所有对象信息,而不局限于部分用户。如:DBA_USERS视图包含数据库中所有用户信息。只有DBA用户或被授予select_any_dictionary系统权限的用户才能够访问DBA视图。 在数据库ORACLE还维护了一组虚表(virtual table),记录当前数据库的活动情况和性能参数,这些表称为动态性能表。动态性能表的拥有者为SYS用户,名字均以V_$或GV_$为前缀。动态性能表不是真正的表,许多用户不能直接存取。DBA可通过查询这些表,了解系统运行状况、诊断和解决系统运行中出现的问题。DBA可以建立视图,给其它用户授予存取视图权。为了便于访问,Oracle在动态性能表的基础上建立了公用同义词,这些同义词的名字以V_$开头。如V_$BGPROCESS视图记录Oracle后台进程信息。 Sys帐号进去在视图下可见全部数据字典。其它帐号只能通过SQL语句查询 ORACLE数据字典与视图(部分,不全) 视图名说明

oracle常用笔记总结

1、用dba权限的用户查看数据库都有哪些锁 select https://www.doczj.com/doc/999898026.html,ername,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 2、查看有哪些对象被锁了 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id 3、根据sid查找进程id select pro.spid from v$session ses, v$process pro where ses.sid=129 and ses.paddr=pro.addr; select ses.sid from v$session ses, v$process pro where pro.spid=129 and ses.paddr=pro.addr; 4:根据这个spid对应linux下的进程pid linux命令: ps -ef | gre | 'ora' (找到所有ora开头的进程) kill -9 (pid) 5、解决delete后表的高水位的问题 初步判断应该是之前有大量数据,后来delete了,选成高水位,用shrink 清除高水位: alter table t_mobile_client_tp_prov enable row movement; alter table t_mobile_client_tp_prov shrink space; 重新收集统计信息: begin dbms_stats.gather_table_stats(ownname=>'traffic',tabname=>'T_MOBILE_CLIENT_TP_PR end; 6、ORA-02064 distributed operation not supported

Oracle视图中建立索引的注意事项

Oracle视图中建立索引的注意事项 在视图上创建索引需要三个条件: 一、视图必须绑定到架构。 要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中“绑定到架构”。 二、索引必须是唯一索引。 要做到这点,在 CREATE INDEX 中必须指定 UNIQUE。 三、索引必须是聚集索引。 要做到这点,在 CREATE INDEX 中必须指定 CLUSTERED。 例: CREATE VIEW viewFoo WITH SCHEMABINDING AS SELECT id... CREATE UNIQUE CLUSTERED INDEX index_viewFoo ON viewFoo(id) 在视图上创建聚集索引之前,该视图必须满足下列要求: 当执行 CREATE VIEW 语句时,ANSI_NULLS 和 QUOTED_IDENTIFIER 选项必须设置为 ON。OBJECTPROPERTY 函数通 过 ExecIsAnsiNullsOn 或 ExecIsQuotedIdentOn 属性为视图报告此信息。 为执行所有 CREATE TABLE 语句以创建视图引用的表,ANSI_NULLS 选项必须设置为 ON。 视图不能引用任何其它视图,只能引用基表。 视图引用的所有基表必须与视图位于同一个数据库中,并且所有者也与视图相同。 必须使用 SCHEMABINDING 选项创建视图。SCHEMABINDING 将视图绑定到基础基表的架构。 必须已使用 SCHEMABINDING 选项创建了视图中引用的用户定义的函数。 表和用户定义的函数必须由 2 部分的名称引用。不允许使用 1 部分、3 部分和 4 部分的名称。

oracle数据库中的表与视图

oracle数据库中的表与视图 Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i 引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如: CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) ); 这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES

. USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。 从其它表中建立表 可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定。建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列。在CREATE TABLE语句中使用关键字AS,例如: SQL>CREATE TABLE emp AS SELECT * FROM employee TABLE CREATED SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2 需要注意的是如果查询涉及LONG数据类型,那么CREATE TABLE....AS SELECT....将不会工作。 更改表定义 在建立表后,有时候我们可能需要修改表,比如更改列的定义,更改缺省值,增加新列,删除列等等。ORACLE使用ALTER TABLE语句来更改表的定义 1、增加列 语法: ALTER TABLE [schema.] table_name ADD column_definition

相关主题
文本预览
相关文档 最新文档