ORACLE审计小结

时间:2019-05-13 18:47:26下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《ORACLE审计小结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《ORACLE审计小结》。

第一篇:ORACLE审计小结

1、什么是审计

审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin /$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查 看)中。默认情况下审计是没有开启的。

不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。

2、和审计相关的两个主要参数

Audit_sys_operations:

默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

Audit_trail:

None:是默认值,不做审计;

DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;

DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句; OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;

XML:10g里新增的。

注:这两个参数是static参数,需要重新启动数据库才能生效。

3、审计级别

当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。

Statement:

按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter session by cmy会审计cmy用户所有的数据库连接。

Privilege:

按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。

Object:

按对象审计,只审计on关键字指定对象的相关操作,如aduit alter,delete,drop,insert on cmy.t by scott;这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。注意Oracle没有提供对schema中所有 对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access;后,对于随后创建的对象的drop操作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比 trigger可以对schema的DDL进行“审计”,这个功能稍显不足。

4、审计的一些其他选项

by access / by session:

by access 每一个被审计的操作都会生成一条audit trail。

by session 一个会话里面同类型的操作只会生成一条audit trail,默认为by session。

whenever [not] successful:

whenever successful 操作成功(dba_audit_trail中returncode字段为0)才审计, whenever not successful 反之。省略该子句的话,不管操作成功与否都会审计。

5、和审计相关的视图

dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图 dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail 的一个子集。

dba_stmt_audit_opts:可以用来查看statement审计级别的audit options,即数据库设置过哪些statement级别的审计。dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似

all_def_audit_opts:用来查看数据库用on default子句设置了哪些默认对象审计。

6、取消审计

将对应审计语句的audit改为noaudit即可,如audit session whenever successful对应的取消审计语句为noaudit session whenever successful;7、10g中的审计告知一切

Oracle 数据库 10g 审计以一种非常详细的级别捕获用户行为,它可以消除手动的、基于触发器的审计。

假定用户 Joe 具有更新那张表的权限,并按如下所示的方式更新了表中的一行数据:

update SCOTT.EMP set salary = 12000 where empno = 123456;您如何在数据库中跟踪这种行为呢?在 Oracle 9i 数据库及其较低版本中,审计只能捕获“谁”执行此操作,而不能捕获执行了“什么”内容。例如,它让您知道 Joe 更新了 SCOTT 所有的表EMP,但它不会显示他更新了该表中员工号为 123456 的薪水列。它不会显示更改前的薪水列的值 — 要捕获如此详细的更改,您将不得不编写您自己的触发器来捕获更改前的值,或使用 LogMiner 将它们从存档日志中检索出来。

细粒度审计(FGA),是在 Oracle 9i 中引入的,能够记录 SCN 号和行级的更改以重建旧的数据,但是它们只能用于 select 语句,而不能用于 DML,如 update、insert 和delete 语句。因此,对于 Oracle 数据库 10g 之前的版本,使用触发器虽然对于以行级跟踪用户初始的更改是没有吸引力的选择,但它也是唯一可靠的方法。

8、实例讲解

8.1、激活审计

SQL> conn /as sysdba SQL> show parameter audit NAME TYPE VALUE----------------------------------------------audit_file_dest string /u01/app/oracle/admin/ORCL/adump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string NONE

SQL> alter system set audit_sys_operations=TRUE scope=spfile;--审计管理用户(以sysdba/sysoper角色登陆)SQL> alter system set audit_trail=db,extended scope=spfile;SQL> startup force;SQL> show parameter audit NAME TYPE VALUE----------------------------------------------audit_file_dest string /u01/app/oracle/admin/ORCL/adump audit_sys_operations boolean TRUE audit_syslog_level string audit_trail string DB, EXTENDED

8.2、开始审计

SQL> conn /as sysdba SQL> audit all on t_test;SQL> conn u_test SQL> select * from t_test;SQL> insert into u_test.t_test(c2,c5)values('test1','2');SQL> commit;SQL> delete from u_test.t_test;SQL> commit;SQL> conn /as sysdba SQL> col DEST_NAME format a30 col OS_USERNAME format a15 col USERNAME format a15 col USERHOST format a15 col TERMINAL format a15 col OBJ_NAME format a30 col SQL_TEXT format a60 SQL> select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,sessionid,os_process,sql_text from dba_audit_trail;

sql> audit select table by u_test by access;如果在命令后面添加by user则只对user的操作进行审计,如果省去by用户,则对系统中所有的用户进行审计(不包含sys用户).例:

AUDIT DELETE ANY TABLE;--审计删除表的操作

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;--只审计删除失败的情况

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;--只审计删除成功的情况 AUDIT DELETE,UPDATE,INSERT ON user.table by test;--审计test用户对表user.table的delete,update,insert操作

8.3、撤销审计

SQL> noaudit all on t_test;

9、审计语句

多层环境下的审计:appserve-应用服务器,jackson-client AUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;审计连接或断开连接: AUDIT SESSION;AUDIT SESSION BY jeff, lori;--指定用户

审计权限(使用该权限才能执行的操作):

AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;AUDIT DELETE ANY TABLE;AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;

对象审计:

AUDIT DELETE ON jeff.emp;AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;

取消审计:

NOAUDIT session;NOAUDIT session BY jeff, lori;NOAUDIT DELETE ANY TABLE;NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE;NOAUDIT ALL;--取消所有statement审计

NOAUDIT ALL PRIVILEGES;--取消所有权限审计 NOAUDIT ALL ON DEFAULT;--取消所有对象审计

10、清除审计信息

DELETE FROM SYS.AUD$;DELETE FROM SYS.AUD$ WHERE obj$name='EMP';

11、审计视图

STMT_AUDIT_OPTION_MAP--审计选项类型代码 AUDIT_ACTIONS--action代码

ALL_DEF_AUDIT_OPTS--对象创建时默认的对象审计选项 DBA_STMT_AUDIT_OPTS--当前数据库系统审计选项 DBA_PRIV_AUDIT_OPTS--权限审计选项 DBA_OBJ_AUDIT_OPTS USER_OBJ_AUDIT_OPTS--对象审计选项 DBA_AUDIT_TRAIL USER_AUDIT_TRAIL--审计记录 DBA_AUDIT_OBJECT USER_AUDIT_OBJECT--审计对象列表 DBA_AUDIT_SESSION USER_AUDIT_SESSION--session审计 DBA_AUDIT_STATEMENT USER_AUDIT_STATEMENT--语句审计

DBA_AUDIT_EXISTS--使用BY AUDIT NOT EXISTS选项的审计 DBA_AUDIT_POLICIES--审计POLICIES DBA_COMMON_AUDIT_TRAIL--标准审计+精细审计

12、将审计结果表从system表空间里移动到别的表空间上

实际上sys.aud$表上包含了两个lob字段,并不是简单的move table就可以。下面是具体的过程: alter table sys.aud$ move tablespace users;alter table sys.aud$ move lob(sqlbind)store as(tablespace USERS);alter table sys.aud$ move lob(SQLTEXT)store as(tablespace USERS);alter index sys.I_AUD1 rebuild tablespace users;

--End--

第二篇:Oracle JOB 用法小结

Oracle JOB 用法小结时间:2004-10-20 08:00来源:中国网管联盟 作者:BitsCN整理 点击:24528次

一、设置初始化参数 job_queue_processes

sql> alter system set job_queue_processes=n;(n>0)

job_queue_processes最大值为1000

查看job queue 后台进程

sql>select name,description from v$bgprocess;

二,dbms_job package 用法介绍

包含以下子过程:

Broken()过程。

change()过程。

Interval()过程。

Isubmit()过程。

Next_Date()过程。

Remove()过程。

Run()过程。

Submit()过程。

User_Export()过程。

What()过程。

1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。

这个过程有三个参数:job、broken与next_date。

PROCEDURE Broken(job

IN binary_integer,Broken

IN boolean,next_date IN date :=SYSDATE)

job参数是工作号,它在问题中唯一标识工作。

broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。网管联盟www.xiexiebang.com.com

创建测试表

SQL> create table TEST(a date);

表已创建。

创建一个自定义过程

SQL> create or replace procedure MYPROC as

begin

insert into TEST values(sysdate);

end;

/

过程已创建。

创建JOB

SQL> variable job1 number;

SQL>

SQL> begin

dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');即一分钟运行test过程一次end;

/

PL/SQL 过程已成功完成。

运行JOB

SQL> begin

dbms_job.run(:job1);

end;

/

PL/SQL 过程已成功完成。

SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss')时间 from TEST;

时间

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

--每天1440分钟,2001/01/07 23:51:21 2001/01/07 23:52:22 2001/01/07 23:53:24

删除JOB SQL> begin 2 dbms_job.remove(:job1);3 end;4 / 网管网bitsCN.com

PL/SQL 过程已成功完成。www.xiexiebang.com】

【转自

第三篇:oracle知识小结

Tnsnames.ora: listener_rac=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521))(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))Listener_racdb1=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))Listener_racdb2=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))

Pl/sql: Oracle参数查询命令show parameter的一个小技巧,可以使用模糊查询,比如我想查询包含db_的参数,那么我就可以用: SQL> show parameter db_;

NAME

TYPE

VALUE

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

db_16k_cache_size

big integer 0

db_2k_cache_size

big integer 0

db_32k_cache_size

big integer 0

db_4k_cache_size

big integer 0

db_8k_cache_size

big integer 0

db_block_buffers

integer

0

db_block_checking

string

FALSE

db_block_checksum

string

TRUE

db_block_size

integer

8192

db_cache_advice

string

ON

db_cache_size

big integer 0

Oracle 中的Userenv()

1.USEREVN()USERENV(OPTION)

返回当前的会话信息.OPTION='ISDBA'若当前是DBA角色,则为TRUE,否则FALSE.OPTION='LANGUAGE'返回数据库的字符集.OPTION='SESSIONID'为当前会话标识符.OPTION='ENTRYID'返回可审计的会话标识符.OPTION='LANG'返回会话语言名称的ISO简记.OPTION='INSTANCE'返回当前的实例.OPTION='terminal'返回当前计算机名

SELECT USERENV('LANGUAGE')FROM DUAL;

返回当前用户环境的信息,opt可以是: ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE 1.ISDBA 查看当前用户是否是DBA如果是则返回true SQL> select userenv('isdba')from dual;USEREN------FALSE 2.SESSION 返回会话标志

SQL> select userenv('sessionid')from dual;USERENV('SESSIONID')--------------------152 4.ENTRYID 返回会话人口标志

SQL> select userenv('entryid')from dual;USERENV('ENTRYID')------------------0 5.INSTANCE 返回当前INSTANCE的标志 SQL> select userenv('instance')from dual;USERENV('INSTANCE')-------------------1 6.LANGUAGE 返回当前环境变量

SQL> select userenv('language')from dual;USERENV('LANGUAGE')---------------------SIMPLIFIED CHINESE_CHINA.ZHS16GBK 7.LANG 返回当前环境的语言的缩写

SQL> select userenv('lang')from dual;USERENV('LANG')---------------------ZHS 8.TERMINAL 返回用户的终端或机器的标志 SQL> select userenv('terminal')from dual;USERENV('TERMINA----------------GAO 9.VSIZE(X)返回X的大小(字节)数

SQL> select vsize(user),user from dual;VSIZE(USER)USER-----------------------------------------6 SYSTEM 2.sys_context

select

SYS_CONTEXT('USERENV','TERMINAL')terminal,SYS_CONTEXT('USERENV','LANGUAGE')language,SYS_CONTEXT('USERENV','SESSIONID')sessionid,SYS_CONTEXT('USERENV','INSTANCE')instance,SYS_CONTEXT('USERENV','ENTRYID')entryid,SYS_CONTEXT('USERENV','ISDBA')isdba,SYS_CONTEXT('USERENV','NLS_TERRITORY')nls_territory,SYS_CONTEXT('USERENV','NLS_CURRENCY')nls_currency,SYS_CONTEXT('USERENV','NLS_CALENDAR')nls_calendar,SYS_CONTEXT('USERENV','NLS_DATE_FORMAT')nls_date_format,SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE')nls_date_language,SYS_CONTEXT('USERENV','NLS_SORT')nls_sort,SYS_CONTEXT('USERENV','CURRENT_USER')current_user,SYS_CONTEXT('USERENV','CURRENT_USERID')current_userid,SYS_CONTEXT('USERENV','SESSION_USER')session_user,SYS_CONTEXT('USERENV','SESSION_USERID')session_userid,SYS_CONTEXT('USERENV','PROXY_USER')proxy_user,SYS_CONTEXT('USERENV','PROXY_USERID')proxy_userid,SYS_CONTEXT('USERENV','DB_DOMAIN')db_domain,SYS_CONTEXT('USERENV','DB_NAME')db_name,SYS_CONTEXT('USERENV','HOST')host,SYS_CONTEXT('USERENV','OS_USER')os_user,SYS_CONTEXT('USERENV','EXTERNAL_NAME')external_name,SYS_CONTEXT('USERENV','IP_ADDRESS')ip_address,SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')network_protocol,SYS_CONTEXT('USERENV','BG_JOB_ID')bg_job_id,SYS_CONTEXT('USERENV','FG_JOB_ID')fg_job_id,SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')authentication_type,SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')authentication_data

from dual;

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 upper('%username%');

2、oracle中查询某个表的列数

Sql代码

select count(*)from user_tab_columns where table_name= upper('sys_operate');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 散列簇的信息

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 数据库系统状态信息

all_开头

all_users 数据库所有用户的信息 all_objects 数据库所有的对象的信息

all_def_audit_opts 所有默认的审计设置信息 all_tables 所有的表对象信息

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

session_roles 会话的角色信息 session_privs 会话的权限信息

index_开头

index_stats 索引的设置和存储信息

伪表

dual 系统伪列表信息

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 3.Latch / lock /ENQUEUE v$latch , v$latch_children , v$latch_holder , v$lock ,V$ENQUEUE_STAT ,V$ENQUEUE_LOCK 4.IO 方面的

v$segstat , v$filestat , v$tempstat ,v$datafile , v$tempfile 5.shared pool / Library cache v$Librarycache , v$rowcache , x$ksmsp 6.几个advice也不错

v$db_cache_advice , v$PGA_TARGET_ADVICE, v$SHARED_POOL_ADVICE V$SESSION

在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。A、V$SESSION中的常用

V$SESSION是基础信息视图,用于找寻用户SID或SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例:

SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语句。PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session执行的上一条语句。B、STATUS:这列用来判断session状态是:

l

Achtive:正执行SQL语句(waiting for/using a resource)l

Inactive:等待操作(即等待需要执行的SQL语句)l

Killed:被标注为删除 C、Session信息

l

SID:SESSION标识,常用于连接其它列

l

SERIAL#:如果某个SID又被其它的session使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)。

l

AUDSID:审查session ID唯一性,确认它通常也用于当寻找并行查询模式 l

USERNAME:当前session在oracle中的用户名。D、Client信息

数据库session被一个运行在数据库服务器上或从中间服务器甚至桌面通过SQL*Net连接到数据库的客户端进程启动,下列各列提供这个客户端的信息 l

OSUSER:客户端操作系统用户名 l

MACHINE:客户端执行的机器 l

TERMINAL:客户端运行的终端 l

PROCESS:客户端进程的ID l

PROGRAM:客户端执行的客户端程序

要显示用户所连接PC的 TERMINAL、OSUSER,需在该PC的ORACLE.INI或Windows中设置关键字TERMINAL,USERNAME。E、V$SESSION中的连接列

Column

View

Joined Column(s)

SID

V$SESSION_WAIT V$SESSTAT V$LOCK V$SESSION_EVENT V$OPEN_CURSOR

SID(SQL_HASH_VALUE, SQL_ADDRESS)

V$SQLTEXT, V$SQLAREA, V$SQL

(HASH_VALUE, ADDRESS)(PREV_HASH_VALUE, PREV_SQL_ADDRESS)

V$SQLTEXT, V$SQLAREA, V$SQL

(HASH_VALUE, ADDRESS)

TADDR

V$TRANSACTION

ADDR

PADDR

ADDR 示例:

1.查找你的session信息

SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS FROM V$SESSION WHERE audsid = userenv('SESSIONID');2.当machine已知的情况下查找session SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL FROM V$SESSION WHERE terminal = 'pts/tl'AND machine = 'rgmdbs1';3.查找当前被某个指定session正在运行的sql语句。假设sessionID为100 select sql_text from v$sqltext

where(hash_value,sql_address)in

(select decode(sql_hash_value,0,prev_hash_value,sql_hash_value),decode(sql_hash_value,0,prev_sql_addr,sql_address)

from v$session

V$PROCESS

where paddr =(select addr from v$process where spid='操作系统进程id'));寻找被指定session执行的SQL语句是一个公共需求,如果session是瓶颈的主要原因,那根据其当前在执行的语句可以查看session在做些什么。

--

1、start with + connect by-->一般用于构成树查询--eg: SELECT * FROM district WHERE del_flag = 0 AND(district_level_code IN(SELECT DISTINCT domain_key FROM domain_district_level)OR district_level_code IS NULL)START WITH district_id IN(SELECT district_id--根节点开始的位置 FROM district WHERE parent_district_id IS NULL OR parent_district_id = 0)CONNECT BY PRIOR district_id = parent_district_id ORDER BY LEVEL, district_no;--

2、connect by 用于构成循环

select LEVEL FROM dual CONNECT BY LEVEL<=10;SELECT ROWNUM FROM dual CONNECT BY ROWNUM <=10;SELECT LEVEL FROM dual CONNECT BY 1=1;--会得到无穷数列.SELECT ROWNUM FROM dual CONNECT BY 1=1;--会得到无穷数列.rownum与 level 一致,都是以connect by 后的数字范围为准。select level from dual connect by level< 10;select rownum from dual connect by rownum< 10;都能取到9 select level from dual connect by level<= 10;select rownum from dual connect by rownum< =10;都能取到10 1、查询当前session中的操作系统进程号spid

select a.PROGRAM,a.MACHINE,a.sid,a.SERIAL#,a.USERNAME,a.STATE,b.TERMINAL,b.SPID as ospid from v$session a ,v$process b where a.PADDR=b.ADDR;

2、杀掉某个session

a)db级别: alter system kill session 'sid ,serial ';b)os级别: unix kill-9 spid; windows :orakill sid thread eg orakill csltest 9323

v$session 和v$process 应该是一一对应的,一个session 在OS 这边就是一个 process,如果正常的话,v$session 应该和v$process 是一一对应的,但是我遇到很多系统运行一段时间后发现v$session 里面的记录比v$process 里面多很多,这就由于无效的session 产生的,比如有一个生产系统这2个数据字典视图的记录数分别为

SQL> select count(*)from v$session;COUNT(*)----------140 SQL> select count(*)from v$process;COUNT(*)----------67 bash-2.03$ ps-ef | grep oracle | wc-l 69 在OS 下查看oracle 总的process 数与v$process 查不多,为什么会有这种差别呢?也就是v$session 和v$process 的差别 是如何造成的,v$session 肯定有很多无效的session 如何判断这些无效的session 呢

我的环境里面没看到你说的情况,你看看

select sid,username, status from v$session where paddr not in(select addr from v$process);数据库没有配置 MTS SQL> show parameter mts SQL> select count(*)from v$session where paddr not in(select addr from v$process);

COUNT(*)----------45 也就是说有45个session 是没有对应的process 的

问题弄清楚了,程序是使用C写的访问数据库的程序,在程序中使用OCI 连接操作数据库,如果正常shutdown 程序的话,是有disconnect 的处理的,这样对数据库的disconnect 是正常的

但是维护人员并没有按照正常的方法来关闭应用程序,直接使用kill-9 kill 了应用程序,相当于异常关闭的应用程序,所以造成在kill 父process 的时候,对数据库的连接process 也异常中断,但是session 却没有disconnect 也就是说session 还存在,尽管process 没有了,造成死连接,oracle 的pmon 也无法判断这个session 是否已经没有用了

可以用什么方法可以查处这写无效的session 呢

关于v$session

1、dict_columns中comments有值的一般是数据字典的字段而不是性能视图的

2、判别session 的状态可知道某进程是否死掉,但要结合时间看logon_time sql>;select status,logon_time from v$session;如果状态是inactive,怎样杀掉呢 select sid,serial# from v$session;alter system kill session(a,b);a,b填上上面得到的sid,serial#值 以下语句可以证明v$session是个视图

select view_definition from v$fixed_view_definition where view_name='V$SESSION';select * from v$fixed_table where name='V$SESSION';select owner, object_type, status from dba_objects where object_name='V$SESSION';从OEM中观察确实v$session是public 同义词.我确实读过一篇文章在讲以下流程, 数据库建立时 1.创建x$等表

2.create view v$xxxx as select * from x$xxxx 3.create view v_$xxxx as select * from v$xxxx 4.create public synonym v$xxxx for v_$xxxxx 如果是dba的话, 使用select * from v$xxxx;该对象将是视图 而非dba的, 使用select * from v$xxxx;该对象将是同义词 「原厂委托制造」OEM(Original Equipment Manufacturer)

OEM ORACLE 企业管理器简称OEM

(Oracle Enterprise Manager)ORACLE的DBA的主要操作工具

Oracle instr函数: INSTR

(源字符串, 目标字符串, 起始位置, 匹配序号)

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始

到字符的结尾就结束。

语法如下:

instr(string1, string2 [, start_position [, nth_appearance ] ])

参数分析:

string1

源字符串,要在此字符串中查找。

string2

要在string1中查找的字符串.start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1.字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance

代表要查找第几次出现的string2.此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:

如果String2在String1中没有找到,instr函数返回0.示例:

SELECT instr('syranmo','s')FROM dual;--返回 1

SELECT instr('syranmo','ra')FROM dual;--返回 3 SELECT instr('syran mo','a',1,2)FROM dual;--返回 0

(根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)

SELECT instr('syranmo','an',-1,1)FROM dual;--返回 4

(就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母的位置,所以这里返回4)

SELECT instr('abc','d')FROM dual;--返回 0

注:也可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含。

substr functions

In oracle/PLSQL, the substr functions allows you to extract a substring from a string.The syntax for the substr function is:

substr(string, start_position, [ length ])

说明:

string is the source string.start_position is the position for extraction.The first position in the string is always 1.length is optional.It is the number of characters to extract.If this parameter is omitted, substr will return the entire string.For example:

substr('This is a test', 6, 2)would return 'is'

substr('This is a test', 6)would return 'is a test'

substr('TechOnTheNet', 1, 4)would return 'Tech'

substr('TechOnTheNet',-3, 3)would return 'Net'

substr('TechOnTheNet',-6, 3)would return 'The'

substr('TechOnTheNet',-8, 2)would return 'On'

第四篇:Oracle Apps DBA工作小结

Oracle Apps DBA工作小结

开始Oracle Apps DBA的工作到现在差不多有2周了,为了清理思路作个小的总结。

日常需要做的工作包括:

1。Oracle Apps的克隆,复制,因为有各个省份的生产环境,测试环境,开发环境,所以克隆,复制的需求量很大,这是个熟能生巧的事情,同时也是个比较无聊的工作,没什么技术含量。

2。Oracle Apps的troubleshooting,通过对Oracle Forms做trace,再加上反应不算快速的Metalink支持,基本上也可以应付。但是看见旁边的同事疲于应付各种求助,感觉上也有些烦躁。

3。数据库的备份,使用HP OpenView Storage Data Protector+RMAN,以前没有用过omni,但是仍然属于熟能生巧的事情,而且有HP工程师作技术支持,也不是什么问题。目前需要做的是备份策略还没有完全测试过,这是这周的主要工作。

4。编写文档,文档的模版比较正规,但是内容仍然需要改善,各个省份的文档都是Ctl+C, Ctl+V,然后全局替换的产物。

5。SQL Tuning,一般是对于客户化开发功能的SQL调优,目前我对于应用还很不熟悉,所以这部分工作还没有开始。

需要接触的技术:

HP主机 + Oracle数据库 + Oracle Apps 11i + HP OpenView Storage Data Protector

工作之外需要进一步学习IT管理。

PS;本文档由北大青鸟广安门收集自互联网,仅作分享之用。

第五篇:审计小结

***********内部审计室工作小结

内部审计室成立2个月来,在公司领导的大力关注下,在主管领导的悉心指导下,成员经过短期的磨合,统一了思想观念,从公司的大局出发,初步展开了一些内审工作。由于在内审方面都是新手,工作也没有先例可循,只能摸着石头过河,边干边学。经过两个月的摸索,审计工作初步取得了一些进展,但也存在不足,为了及时的巩固成效、明确差距、弥补不足,作用于下一步的工作更有力、有效的展开,部门特对前期的工作进行总结、汇报,请领导给予指正和把舵:

一、内审室成立以来所作的工作。

1.首先进行了建章立制工作。内审人员通过查找国家的有关规定和资料,借鉴一些知名企业的经验,结合公司的实际情况,起草了公司的《内部审计管理制度》,在公司领导和主管领导的主持下,经过多次讨论、沟通、几经修改,于4月初正式颁布。该制度明确了内部审计室的部门职责,业务范围,工作程序、常用审计方法以及审计依据和工作指导原则,明确了内部审计室与各部门的关系,规范了审计工作与各部门的业务接口,使审计工作具备了操作的条件。

2.内审工作起始初,主管领导就提出了:抓住钱袋子,扎紧出钱的口子,内审要从源头抓起的工作理念。内审以物资采购、付款环节为工作切入口,重点对不合格物资处理进行了审计和后续跟踪。检查前,我们依据《物资采购询价制度》《物资采购控制程序》《不合格物资处理程序》《统计工作管理制度》等制度文件,制定了审计计划和核查表,列出了需要检查的6个方面:不合格物资处理情况、物资采购计划、物资采购询价、采购渠道、各种台帐和物质计划执行情况统计表及付款程序等。由于准备工作充分,具有针对性,查清了制度上存在的不足和制度执行得不规范,特别是不合格物资的管理,没有一套系统的资料能反映 不合格物质的退货、补货、降价的准确数据,有关部门的资料衔接不到位。三月底不合格物质95吨、四月底不合格物质83吨,按含税价31000元/吨计算,每月占用资金达200-300万元,这种长期对不合格物质的掌控,资金占用,没有清晰的流程和报表,对公司目前生产资金极度紧张的状况,影响是很大的。内审人员及时与供应和有关部门沟通确定管理方法、修改完善ISO9000质量体系文件,同时向公司领导提交了审计报告(详见专项审计报告07003号)经过不断与有关部门的沟通及跟踪核查,目前已建立了不合格物质处理的工作流程和台帐跟踪记录,每卷不合格物质从质检中心的确认,退到仓库,供应部的商议处理,财务部的核实,都能在台帐中得到反映。5月份已开始实施,控制结果在6月初会反映出来。

3.经营分析会中,发现二期工程资金计划处于空白,监控力度不够。主管 领导提出内审人员要介入二期工程建设,二期工程是公司的一项重大投资,也是花线的大口,是当前工作的重点。在公司领导的支持下内审人员参与了二期设备安装工程招投标的过程,并要求内审人员对二期工程施工预算增加进行审核检查,内审人员对二期工程施工预算增加进行审核检查,感到压力较大,因为这是一项专业性很强的工作,内审人员三个人都没有接触过,但必须干好,主管领导专门召集内审人员进行沟通,向业内人士请教,指引内审人员收集资料,了解工程施工行业的各种规范、流程、制度,有针对性地检查二期工程《完工项目验收单》、《施工变更单》,了解工作流程,来核实确认增加的项目。在此次预算调整的审核中,内审人员还发现了监理方面存在的问题:二期工程没有建立规范的工程监理制度。仅有工作部门的内部文件规定,但也没有得到落实,监理工作的相关记录、签证、工程量统计等工作都存在明显的缺失。内审人员及时、客观、真 实地提出了审核报告(详见专项审计报告07007号),并提出4项建议。目前正在督促、配合二期工作组完善二期工程建设的规章制度。

4.根据公司领导的指示和布置,针对经营活动中出现的问题,展开的内审 工作:

 货物在运输途中产生滞箱费的调查(详见专项审计报告07008号) 货物产生货损的调查(详见专项审计报告07002号) 产品质量控制和验收的审核(详见专项审计报告07004号) 跟踪复核生产日报统计(详见专项审计报告07005号) 对《维修设备的报告》进行审核(详见专项审计报告07006号) 对营销风险排查工作进行跟踪审核(详见专项审计报告07008号) 配制室改造、食堂冰柜采购等花钱项目的审核把关工作。

以上几项工作,我们坚持独立、公正的原则,对事不对人,客观真实的反映事实真相,为领导提供决策依据。

二、内审工作的心得体会

通过这两个月的内审工作,我们对各部门的工作有了更多的了解,对公司的规章制度和各项业务流程有了比较全面的熟悉,也通过切身体会,对内审工作有了更深的理解和认识。内审工作确实可以反映出公司经营活动中的不少问题,虽然只有2个月,只进行了8项专项审计和少量的复核把关,不过已经发现我司确实存在部分制度在束之高阁、一些操作行为随意、部分工作缺失控制等问题,如果没有内审室的成立,这些隐患可能还会一直隐藏在繁忙的经营大局下,可能就会在不远的将来造成一个个问题,甚至给公司造成明显损失。所以内审室的成立是必要的,内审室的工作是有事可为、有效可量的。现在,我们内审室人员坚 信:内审工作只要运行得当,一定会是公司领导班子一个非常有用的管理工具,通过内审,一定会达到深化管理,促进经营效益提高的目的。如何使内审工作取得理想的效果?内审室的体会有几点:

1、要坚持在工作中学习。在这方面,公司领导给与了足够的支持,为内审购买了专业书籍、派内审人员参加ISO9000质量体系认证的培训班、请教外部人员介绍经验等。确实,内审工作涉及公司经营的方方面面,每一次的审计内容都是各不相同,如果对审计项目没有足够的了解,就不可能了解到最真实的情况,如果对审计项目没有正确的理解,就不可能作出正确的判断,提供出切实、合理的建议。所以内审人员对各部门的各种业务不能局限于了解,还必须进行专业知识学习,要对其流程、目的、绩效评价都有所领悟,内审员只有在工作中持续学习,才能不断的提高内审工作质量。

2、内审人员要对本部门的定位有正确的认识,要对内审工作有正确的理解。内审室从定位上可以高于其它部门,但从实际操作上应该以服务部门的姿态出现,内审的目的是通过核查过程,找出差距、漏洞,促进工作改进和质量提高,决不是挑毛病,抹灭成绩,更不能挫伤大家的工作积极性,内审一定要主动配合、协助经营部门解决问题。另外,内审工作需要时刻保持着敏锐和主动,只有敏锐才能扑捉到线索,只有主动才能及时开展工作,才能发挥内审的过程控制作用,如果依赖领导安排任务,只做事后检查,内审工作的意义就会大打折扣。公司领导反复提出:内审人员要大胆、无私、公正、客观、实事求是,这也是内审人员的基本道德规范,我们会努力在坚持原则和部门协调之间把握好分寸。

3、要有科学严谨但须适用的工作方法。内审工作是对公司各项制度及流程 的执行进行检查,做出客观、真实公正的评价。由于内审评价要用于管理者对实 际工作的指导,还直接关系着被审计部门的切身利益,所以内审工作须严谨,内审结论须客观。目前内审室在借鉴理论推荐方法的基础上,结合公司现状,以现场审核为主,依据制度、管理文件进行沟通、查证、核实,记录底稿,内审报告初稿反馈沟通等,严格执行这一工作程序,避免工作出现的大的纰漏。

4、要和各部门、公司领导保持有效的沟通。与人相处始终是大文章!没 有有效的沟通就没有有效的工作,沟通是任何工作开展的基础。首先是和公司领导和主管领导进行沟通,掌握公司的发展方向,工作重点,紧跟公司的战略部署确定内审工作重点。二是和各部门的负责人进行联系沟通:内审计划的确定,审计结论的反馈沟通,审计结论落实的后续跟踪等,通过沟通,促使存在的不足的得以改正。希望通过内审部门主动、及时的沟通,与各部门建立起和谐、互信的关系,使公司的管理工作得到有效的提高。三是待工作逐渐顺畅后,内审部门再组织建立各部门的兼职审计员体系,更便于沟通和工作。

5、内审工作要和公司领导充分合力才能取得成效。对于内审发现的问题,如果领导只是签批意见,对后续的改进解决不管不问,只依靠内审部门在每项审计结束后进行后续跟踪和验证,就容易出现业务部门在解决问题时效率和质量不高的现象。如果领导亲自布置,明确要求,把整改列入日常工作,会议上、工作中经常的给业务部门敲打提醒,那么效果就会大不一样。所以,我们内审室提出,领导要对内审反映的问题给予足够重视,内审要努力和领导充分合力。从最近和几位公司领导进行的沟通,我们能感受到高层班子对审计工作的肯定和支持,这使我们对今后的工作充满信心。

三、内审工作的近期计划。目前部门对内审工作的整体计划考虑还不成熟,不过根据审计工作开展以来的发现,并结合公司当前的经营现状,内审室初步确 定了近期的工作方向:

1.继续对物资采购工作进行跟踪审核。采购是直接花钱的部门,是公司节 流的重要环节,采购中节约的每一分钱都是公司的经营利润,所以下大功夫对采购工作进行规范是很有必要的。从4月初,内审就对供应部进行了审计,也提出了改进建议,但是直到现在还没有非常明显的成效。5月中旬内审开始对一些生产的常用物资进行市场询价,和当前的采购价格进行比较,已经发现通过询价确实可以进一步降低采购成本。这一工作公司准备提到日程上做,我们相信,这项工作一定会取得成效。

2.对销售工作的规范性进行跟踪审核,营销是企业经营的“龙头”,营销 工作的好坏(赚钱能力)直接关系着企业的发展。我司销售大量具有明显的“坐销”特点,日常有大量的内务工作需要处理,因此销售工作质量除了体现在考核指标上,还有很大比重是取决于内部管理。

3.介入对需要资金支出的各种立项、预算进行审核。企业经营的目的是要 获取利润,所以每花一分钱都要明确目的:花钱干什么,要花多少钱达到什么效果,保障效果实现需要采取哪些措施。这些都要明确。所谓预则立,不预则废。没有计划、预算,不可能把事做好。做事不仅要有计划,有预算,还要有审核。事前、事中的控制比事后算帐更有价值。在主管领导的直接指挥下,内审已经开始介入这方面的工作。

4.依据ISO9000质量管理手册和公司的规章制度汇编,按工作流程为线索,根据经营活动中不同时期不同的工作重点持续开展审核活动,努力保障咱们公司体系持续、有效的运行。在适当的时候介入生产一线的成本控制范围。向成本要效益、向内部管理要效益,杜绝浪费,重点是材料的领用和控制环节。要让购买 的材料价值,充分利用起来,消除隐形的浪费,降低成本提高效益。

上述总结比较粗浅,难免会有不当之处,请领导多批评指正。

下载ORACLE审计小结word格式文档
下载ORACLE审计小结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    审计小结

    ABC公司工作小结 ABC公司 200X年X月X日财务报表审计 一、工作内容 ABC公司200X年度财务报表专项审计。 二、工作时间 200X年X月X日—200X年X月X日 三、审计情况(各科目审计情......

    审计小结模版

    审计小结模板股份有限公司2005年度审计小结编制:复核:核准:(提示:上市公司及大型企业集团适用)日期: 日期: 日期:上海立信长江会计师事务所有限公司目录一、审计范围与审计人员二、审......

    课题_ORACLE编译失效对象小结

    ORACLE编译失效对象小结 在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程Procedure、函数Function、视图View、同义词.....)会失效,呈现无效状态(INVAL......

    社保审计小结

    上海泛远税务师事务所有限公司 www.xiexiebang.com Shanghai Fanyuan Tax Affairs Agency Co.Ltd 电话:021-51532125 上海市建国西路91弄5号802室 邮编: 200020 传真:021......

    国企审计小结

    审 计 小 结 一、本审计单位概况 大吉山钨矿原是国家有色金属工业局设在江西的全民所有制企业。2000年中央有色金属企业下放地方管理,大吉山钨矿成为江西稀有稀土金属钨业集......

    如何撰写审计小结

    如何撰写审计小结 如何撰写审计小结 概要 我们主要论述如何编写审计小结,就审计小结内容提供指导并示范了实例。 一、目的 编制审计小结是用来辅助实施项目的人员以及各级审......

    如何撰写审计小结[精选合集]

    如何撰写审计小结 如何撰写审计小结 一、目的 编制审计小结是用于实施项目的人员总结审计工作,以及与各级审核人员进行沟通,以便达到下述目的: 1、通过考查审计范围,被审计企业......

    社保审计小结

    社 保 审 计 小 结 我们组于2011年10月17日至10月25日对一下7家单位进行了社保审计:1上海四○强机械仪器厂;○2上海森中电器有限公司;○3上海蓝怡科技有限公司;○4上海百信生物......