如何查询oracle数据库的操作记录?

如何查询oracle下的所有数据库

查看那些库的话必须用dba权限登录。登陆后可以通过下面的方法来查看。
一、查看有哪些库,你的库理解不准确,应该准确来说是表空间,可以通过下面的命令来实现
SELECT Total.name "Tablespace Name",
Free_space, (total_space-Free_space) Used_space, total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name = Total.name
二、查看有哪些表。
select table_name from dba_tables where owner='A';

select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('用户名') order by t.LAST_ACTIVE_TIME desc
用户名需要大写
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc
注意 :执行此语句等等一些相关的语句 必须具有DBA 的权限 虽然这条语句很普通 但是需要的时候很管用 能够及时查出一个人执行sql语句情况
-------oracle 查看已经执行过的sql 这些是存在共享池中的 --------->
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc
-----------查看oracle会话----------------------------》
select * from v$session t order by t.LAST_ACTIVE_TIME desc
-------------查看oracle的权限角色------------------------------>
select * from dba_role_privs; 授予用户和其他角色的角色
select * from dba_sys_privs; 授予用户和其他角色的系统权限
select * from dba_tab_privs; 数据库中对象的所有授权
select * from user_role_privs; 查看当前用户的角色

首先,向你介绍一个动态视图:v$sql
该视图展示最近一段时间所有执行过的sql语句:
select * from v$sql
即可。
如果报错找不到v$sql,一般是权限问题,换sysdba就肯定能查到。
但要注意的是“隐式sql”,很多sql语句是调用执行的,(比如,存储过程中对dbms包的调用,再如执行create 语句所触发的对系统表空间、数据字典的修改等等。),这些语句同样会展现在v$sql中。
还有其它与sql历史记录相关的v$视图,详情可以参考Oracle官方文档《Oracle® Reference》,直接给你个10.2的文档链接,够方便了吧:
http://www.oracle.com/pls/db102/homepage?remark=tahiti

方法1:使用LogMiner工具
优点:可以完全挖掘日志内容,找出所有执行过的SQL语句
缺点:
1. 如果没有启用归档日志,则只能对联机日志进行挖掘
2. 需要掌握LogMiner的用法

访法2:查看HIST视图
优点:简单,只要使用普通的select语句查询
缺点:Oracle保留约1周的历史,所以要查太早的就不可能了
-- 找出哪个数据库用户用什么程序在最近三天执行过delete或truncate table的操作

举例如下:
SELECT c.username,
a.program,
b.sql_text,
b.command_type,
a.sample_time
FROM dba_hist_active_sess_history a
JOIN dba_hist_sqltext b
ON a.sql_id = b.sql_id
JOIN dba_users c
ON a.user_id = c.user_id
WHERE a.sample_time BETWEEN SYSDATE - 3 AND SYSDATE
AND b.command_type IN (7, 85)
ORDER BY a.sample_time DESC;

查询视图:v$sqlarea,它是oracle中专门存储操作的视图,可以通过它查询历史操作。
授权某用户,查看动态性能视图的权限(如v$latch,v$lock,v$sqlarea,v$sql,v$sysstat)
grant select any dictionary to xxx;
如通过以下查询语句就可以得知那个用户进行了删除操作。
select t.SQL_TEXT, t.FIRST_LOAD_TIME
from v$sqlarea t
where t.SQL_TEXT like 'delete%' and t.FIRST_LOAD_TIME like '2013-03-30%'
order by t.FIRST_LOAD_TIME desc

用sys用户以dba身份登录。

然后,查看视图:V_$SQL,如下参考:


select *
  from V_$SQL t
 WHERE t.SERVICE = 'orcl'
   and t.PARSING_SCHEMA_NAME = 'BHOA'
   AND T.SQL_TEXT LIKE 'update %'
 order by t.LAST_ACTIVE_TIME


可直接查出当前update的那条sql语句。从语句中可看出对什么表进行了什么操作。



select count(stuId) from stuInfo;

count 函数;
一般是主键:stuId;学生编号
stuInfo: 学生信息表

  • 18934334674: Oracle数据库查询十个小技巧(三)
    戚逃:其实 不管是一些应用程序如此设计 在Oracle数据库中 本身也有这方面的限制 如直接在PL\/SQL客户端中查询数据的话 其显示的记录默认情况下也是有限制的 而不会把所有符合条件的语句查询出来 若用户需要查询所有符合条件的记录 则需要点击 继续 按钮 以让数据库显示所有的记录 为什么要做类似的限制呢?这主要...
  • 18934334674: 如何查看Oracle数据库字符集,详细操作,xx
    戚逃:涉及三方面的字符集,1. oracel server端的字符集;2. oracle client端的字符集;3. dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。2.1 查询oracle server端的字符集 有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:SQL> select userenv('...
  • 18934334674: 查询ORACLE数据库名,应该怎么查询?
    戚逃:查询ORACLE数据库名:SQL> select name from v$database。\\x0d\\x0a查看实例名:SQL> select instance_name from v$instance。\\x0d\\x0a数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按...
  • 18934334674: 如何查询Oracle中所有用户信息
    戚逃:方法如下:输入select * from dba_users; 即可。常用语句:一,查看数据库里面所有用户:select * from dba_users;前提是你是有dba权限的帐号,如sys,system。二,查看你能管理的所有用户:select * from all_users;三,查看当前用户信息 :select * from user_users;...
  • 18934334674: oracle 查看有哪些数据库的命令
    戚逃:查看那些库的话必须用dba权限登录。登陆后可以通过下面的方法来查看。一、查看有哪些库,你的库理解不准确,应该准确来说是表空间,可以通过下面的命令来实现 SELECT Total.name "Tablespace Name",Free_space, (total_space-Free_space) Used_space, total_space FROM (select tablespace_name, sum(...
  • 18934334674: oracle怎样查询两个表格中的全部数据
    戚逃:1、首先在使用的电脑上,添加想要查询数据库的服务和监听,通过Oracle客户端管理工具中的Net Manager来完成。2、创建两个数据库的连接---DBLink,可以通过指令完成,也可以通过图形界面完成。3、在Oracle管理工具中开启一个新的SQL windows窗口,测试操作我们连接的异地Oracle数据库。4、编写一个查询语句来...
  • 18934334674: 在sql server中如何查询oracle中的表
    戚逃:1。在oracle创建一个用户,将你要在sql server中想查询的表的权限给该用户。2。在sql server中创建一个DBLINK连接oracle数据库,用户名称就是你在oracle创建的那个用户,你就可以查询oracle数据库中的数据了。
  • 18934334674: oracle怎么通过索引查询数据语句?
    戚逃:oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:\\x0d\\x0a1. 根据表名,查询一张表的索引\\x0d\\x0a\\x0d\\x0aselect * from user_indexes where table_name=upper('表名');\\x0d\\x0a\\x0d\\x0a2. 根据索引号,...
  • 18934334674: oracle数据库怎么查询某个表有多少个字段
    戚逃:1、创建测试表,create table test_cols(id varchar2(20),remark varchar2(20),ex_filed1 varchar2(20),ex_filed2 varchar2(20));2、编写sql,查看系统视图,可以看到该用户下所有表的字段信息,select * from user_tab_cols;3、编写sql,查询刚创建的表,字段信息,select * from user_tab_...
  • 18934334674: oracle数据库sql怎么查询第5到第8条数据?
    戚逃:1、创建测试表,create table test_row(id number , value varchar2(20));2、插入测试数据 insert into test_row select 20+level as id, 'value_'||level from dual connect by level<=30;commit;3、查询表中全量数据,select t.* from test_row t;4、编写sql,根据ID进行排序,查询第5条...

  • 相关链接

  • oracle数据库查询语句
  • 数据库查询语句select
  • oracle查询前1000条数据
  • oracle数据库查询100
  • 经验分享为自博友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
    有问题请发邮件给我们
    © 经验分享网