Oracle SYS.AUDSES$ 序列 说明

合集下载

oracle中序列的使用

oracle中序列的使用

oracle中序列的使⽤序列: 是oacle提供的⽤于产⽣⼀系列唯⼀数字的数据库对象。

l ⾃动提供唯⼀的数值l 共享对象l 主要⽤于提供主键值l 将序列值装⼊内存可以提⾼访问效率创建序列:1、要有创建序列的权限 create sequence 或 create any sequence2、创建序列的语法CREATE SEQUENCE sequence //创建序列名称[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减默认是1 [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue[{MAXVALUE n | NOMAXVALUE}] //最⼤值[{MINVALUE n | NOMINVALUE}] //最⼩值[{CYCLE | NOCYCLE}] //循环/不循环[{CACHE n | NOCACHE}];//分配并存⼊到内存中NEXTVAL 返回序列中下⼀个有效的值,任何⽤户都可以引⽤CURRVAL 中存放序列的当前值NEXTVAL 应在 CURRVAL 之前指定,⼆者应同时有效Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1Cycle cache 2;//先nextval 后 currvalSelect seqEmp.nextval from dual;Select seqEmp.currval from dual;Cache<max-min/increment//解释{Create 创建Sequence 序列 seqEmop 序列名称Increment by 步长Stat with 1 开始值Maxvalue 最⼤值Minvalue 最⼩值Cycle 循环 nocycle 不循环Cache 缓存 Cache<maxvalue-minvalue/increment by//⼀般不采⽤缓存Nextvalue 下⼀个Currval 当前值}//实例应⽤//实现id的⾃动递增//第⼀步create table cdpt(id number(6),name varchar2(30),constraint pk_id primary key(id));Create sequence seq_cdptIncrement by 1Start with 1Maxvalue 999999Minvalue 1Nocyclenocacheinsert into cdpt values(seq_cdpt.nextval,’feffefe’);commit;select * from cdpt;/使⽤序列会产⽣裂缝l 序列在下列情况下出现裂缝:• 回滚• 系统异常>多个表同时使⽤同⼀序列//修改序列的增量, 最⼤值, 最⼩值, 循环选项, 或是否装⼊内存alter SEQUENCE sequence //创建序列名称[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减默认是1 [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue[{MAXVALUE n | NOMAXVALUE}] //最⼤值[{MINVALUE n | NOMINVALUE}] //最⼩值[{CYCLE | NOCYCLE}] //循环/不循环[{CACHE n | NOCACHE}];//分配并存⼊到内存中修改序列的注意事项:l 必须是序列的拥有者或对序列有 ALTER 权限l 只有将来的序列值会被改变l 改变序列的初始值只能通过删除序列之后重建序列的⽅法实现删除序列l 使⽤DROP SEQUENCE 语句删除序列l 删除之后,序列不能再次被引⽤Alter sequence seqEmp maxvalue 5;Select seqEmp.nextval from dual;。

Oracle深度学习笔记ORACLE审计

Oracle深度学习笔记ORACLE审计

27.Oracle深度学习笔记——ORACLE审计审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system 表空间中的SYS.AUD$表中不管是否打开数据库的审计功能,用管理员权限连接Instance;启动数据库;关闭数据库都会被记录。

1.相关参数:audit_sys_operations12C默认TRUE当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。

如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

audit_trail12C默认DBDB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;None:不做审计;2.审计级别开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。

Statement按语句审计,如audit table 会审计数据库中所有的create table,drop table,truncate table语句Privilege按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * fromb.t)会用到select any table权限,故会被审计。

oracle数据库中锁、序列、索引管理

oracle数据库中锁、序列、索引管理

详析Oracle数据库中锁、序列、索引管理一、锁1.1什么是锁数据库是一个多用户使用的共享资源。

当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。

若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

而锁就是用于控制事务对数据的访问,实现事务的并发控制,保持数据库的一致性。

1.2锁的类型DDL锁:被Oracle自动的发布和释放DML锁:在事务处理的开始时被施加,而且在事务处理完成时被释放(使用Commit 或Rollback时被释放)内部锁:由Oracle自己管理以保护内部数据库结构注:DDL锁由数据库自动管理;DML锁和内部锁可以由用户直接或间接管理。

1.3锁的粒度1)TX锁:行级锁(事务锁),会阻止这行上其它DML操作,直到Commit或Rollback 时被释放,它只有X排他锁2)TM锁:表级锁。

2.1)Row-S 行共享(RS):共享行锁,即可被其他事务查询该行。

2.2)Row-X 行专用(RX):用于行的修改,即禁止其他事务对该行的所有操作。

2.3)Share 共享锁(S):阻止其他DML操作2.4)S/Row-X 共享行专用(SRX):阻止其他事务操作2.5)exclusive 专用(X):独立访问使用3)数据库级锁:锁定数据库为限制模式alter system enable restricted session;以下语句将锁定数据库为只读模式startup mount;alter database open read only;1.4锁的模式和使用1)共享锁(Share Table Lock,S):使用情况:当执行事务时,事务所要操作的表不希望被别的事务更新时可以使用。

即某表被加锁后只能被加锁的事务全权控制,其他事务只能对该表执行查询操作。

加锁语法:Lock Table TableName In Share Mode;使用度:中。

当对表执行大面积更新操作时可使用,反之,则不用。

aud$表字段解释

aud$表字段解释

aud$表字段解释
Oracle数据库中的AUD$表是用于存储审计日志信息的表。

该表记录了数据库的操作,如登录、用户修改表、插入、删除、更新数据等,以及其他与安全相关的事件。

AUD$表中的字段有以下几个:
1. SESSIONID:表示与操作相关的会话ID。

2. USERID:表示执行操作的用户ID。

3. USERHOST:表示执行操作的用户主机名。

4. TERMINAL:表示执行操作的终端设备信息。

5. INSTANCEID:表示数据库实例ID。

6. EVENTTIMESTAMP:表示操作发生的时间戳。

7. STATEMENTID:表示操作执行的语句ID。

8. RETURNCODE:表示操作执行的返回代码。

9. OBJ$(对象ID):表示操作涉及的对象的ID。

10. SES$TID:表示与会话相关的事务ID。

11. NTIMESTAMP#:表示操作发生的本地时间戳。

12. ACTION$NAME:表示执行的操作类型,如INSERT、SELECT、UPDATE 等。

13. ACTION$OWNERSHIP:表示操作所属的所有者。

14. ACTION$OPTIONS:表示操作的选项。

AUD$表的使用可以帮助数据库管理员监控和审计数据库的活动,确保数据库的安全性和合规性。

通过分析AUD$表中的日志信息,管理员可以追踪和识别不安全的操作或潜在的安全威胁,及时采取相应措施进行防范和应对。

同时,AUD$表也为数据恢复和调查提供了重要的依据。

[专题]Oraclesession表和process表字段描述

[专题]Oraclesession表和process表字段描述

[专题]Oracle session表和process表字段描述Oracle session表和process表字段描述Oracle 动态性能表 v$session & v$process1、v$sessionSADDR: session addressSID: session identifier,常用于连接其它列。

SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。

AUDSID: audit session id。

可以通过audsid查询当前session的sid。

select sid from v$session where audsid=userenv('sessionid');PADDR: process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id。

USER#: session's user id。

等于dba_users中的user_id。

Oracle内部进程的user#为0。

USERNAME: session's username。

等于dba_users中的username。

Oracle内部进程的username为空。

COMMAND: session正在执行的SQL Id。

1代表create table,3代表select。

TADDR: 当前的transaction address。

可以用来关联v$transaction的addr字段。

LOCKWAIT: 可以通过这个字段查询出当前正在等待的锁的相关信息。

sid & lockwait与v$lock中的sid & kaddr相对应。

STATUS: 用来判断session状态。

Active:正执行SQL语句。

Inactive:等待操作。

Killed:被标注为删除。

SERVER: server type (dedicated or shared)SCHEMA#: schema user id。

Oracle数据库的完整性约束和序列规则详解

Oracle数据库的完整性约束和序列规则详解

Oracle数据库的完整性约束规则详解完整性约束用于增强数据的完整性,Oracle提供了5种完整性约束:完整性约束是一种规则,不占用任何数据库空间。

完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。

用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

禁用约束,使用ALTER语句:或如果要重新启用约束:删除约束:或Check 约束在数据列上Check 约束需要一个特殊的布尔条件或者将数据列设置成TRUE,至少一个数据列的值是NULL,Check约束用于增强表中数据内容的简单的商业规则。

用户使用Check约束保证数据规则的一致性。

Check约束可以涉及该行同属Check约束的其他数据列但不能涉及其他行或其他表,或调用函数SYSDATE, UID,USER,USERENV。

如果用户的商业规则需要这类的数据检查,那么可以使用触发器。

Check约束不保护LOB数据类型的数据列和对象、嵌套表、VARRY、ref等。

单一数据列可以有多个Check约束保护,一个Check约束可以保护多个数据列。

创建表的Check约束使用CREATE TABLE语句,更改表的约束使用ALTER TABLE语句。

语法:Check约束可以被创建或增加为一个表约束,当Check约束保护多个数据列时,必须使用表约束语法。

约束名是可选的并且如果这个名字不存在,那么oracle将产生一个以SYS_开始的唯一的名字。

例:NOT NULL约束NOT NULL约束应用在单一的数据列上,并且他保护的数据列必须要有数据值。

缺省状况下,ORACLE允许任何列都可以有NULL值。

某些商业规则要求某数据列必须要有值,NOT NULL约束将确保该列的所有数据行都有值。

例:对于NOT NULL的ALTER TABLE语句与其他约束稍微有点不同。

唯一性约束(Unique constraint)唯一性约束可以保护表中多个数据列,保证在保护的数据列中任何两行的数据都不相同。

OracleAudit功能的使用和说明

OracleAudit功能的使用和说明

OracleAudit功能的使⽤和说明NAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string C:\ORACLE\PRODUCT\10.2.0\ADMIN\DB10G\ADUMPaudit_sys_operations boolean FALSEaudit_trail string NONESQL>审计相关的表安装SQL> connect / AS SYSDBASQL> select * from sys.aud$; --没有记录返回SQL> select * from dba_audit_trail; - 没有记录返回如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。

SQL> connect / as sysdbaSQL> @$ORACLE_HOME/rdbms/admin/cataudit.sql审计表安装在SYSTEM表空间。

所以要确保SYSTEM表空间⼜⾜够的空间存放审计信息。

安装后要重启数据库基于Oracle的稳定性及性能考虑,可以将审计相关的表移动到其他表空间。

connect / as sysdba;alter table aud$ move tablespace ;alter index I_aud1 rebuild online tablespace ;alter table audit$ move tablespace;alter index i_audit rebuild online tablespace ;alter table audit_actions move tablespace ;alter index i_audit_actions rebuild online tablespace ;开启审计功能。

Oracle数据库中序列(SEQUENCE)的用法详解

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracl‎e数据库中,什么是序列‎呢?它的用途是‎什么?序列(SEQUE‎N CE)其实是序列‎号生成器,可以为表中‎的行自动生‎成序列号,产生一组等‎间隔的数值‎(类型为数字‎)。

其主要的用‎途是生成表‎的主键值,可以在插入‎语句中引用‎,也可以通过‎查询检查当‎前值,或使序列增‎至下一个值‎。

创建序列需‎要C REA‎T E SEQUE‎N CE系统‎权限。

序列的创建‎语法如下:CREAT‎E SEQUE‎N CE 序列名 [INCRE‎M ENT BY n] [START‎WITH n] [{MAXVA‎L UE/ MINVA‎L UE n|NOMAX‎V ALUE‎}] [] [{CACHE‎n|NOCAC‎H E}];INCRE‎M ENT BY 用于定义序‎列的步长,如果省略,则默认为1‎,如果出现负‎值,则代表序列‎的值是按照‎此步长递减‎的。

START‎WITH 定义序列的‎初始值(即产生的第‎一个值),默认为1。

MAXVA‎L UE 定义序列生‎成器能产生‎的最大值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎大值定义,这时对于递‎增序列,系统能够产‎生的最大值‎是10的2‎7次方;对于递减序‎列,最大值是-1。

MINVA‎L UE定义‎序列生成器‎能产生的最‎小值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎小值定义,这时对于递‎减序列,系统能够产‎生的最小值‎是?10的26‎次方;对于递增序‎列,最小值是1‎。

CYCLE‎和NOCY‎C LE 表示当序列‎生成器的值‎达到限制值‎后是否循环‎。

C YCLE‎代表循环,NOCYC‎L E代表不‎循环。

如果循环,则当递增序‎列达到最大‎值时,循环到最小‎值;对于递减序‎列达到最小‎值时,循环到最大‎值。

如果不循环‎,达到限制值‎后,继续产生新‎值就会发生‎错误。

CACHE‎(缓冲)定义存放序‎列的内存块‎的大小,默认为20‎。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.S YS.AUDSES$ 序列说明1.1 MOS 说明MOS 文档:How Sessions get Their AUDSID Identifier [ID 122230.1] Sessions connecting to an Oracle database have a number of identifiersassigned to them which can be found in the V$SESSION dynamic view.--当session 连接到Oracle 数据库时,会分配一个标识号,这个标识号可以从v$session这个视图里查询。

One of these identifiers is V$SESSION.AUDSID. This identifier is particularlyuseful because it can also be obtained by a session using the SQL functionUSERENV('SESSIONID'). In this way, a session can find its own session-related information.--其中一个标识符就是v$session.audsid. 这个标识符非常有用,因为它也可以用SQL 函数USERENV(‘SESSIONID’) 来获取,这样,session 就可以发现其关联的信息。

1.2 SESSION 获取v$session.audsid说明A session connected to an Oracle database may obtain one of its sessionidentifiers, the Auditing Session ID, by use of the built-in USERENV SQLfunction.For example, in SQL*Plus, a query like the following can be used:SQL> select userenv('SESSIONID') from dual;USERENV('SESSIONID')--------------------13591--查看当前的Auditing session idThis value may be used to find out more information about the current sessionas it is also recorded in the column AUDSID of the V$SESSION dynamic view.--通过这个audid,然后和v$session结合,就可以查看session 的更多信息。

Continuing the previous example:SQL> select sid,serial#,audsid,program from v$session where audsid=13591;SID SERIAL# AUDSID PROGRAM---------- ---------- ---------- ------------------------------------------13 2904 13591 sqlplus@sunclient1 (TNS V1-V2)This Auditing Session ID is determined when the user connects to the databaseand is a constant value for the duration of the session.--AUDID 决定用户是什么时候连接到数据库的,在session 活动期间,该值是不变的。

The value that is assigned to AUDSID is taken from a sequence in the OracleData Dictionary, the sequence SYS.AUDSES$. When AUDSID is assigned to a newsession the SYS.AUDSES$ sequence is incremented using NEXTVAL and the newvalue is assigned to the session.--那么session 分配的AUDSID 值是从SYS.AUDSES$序列中获取的,当分配时,SYS.AUDSES$会使用nextval增加,然后赋值给session。

However, not all sessions get an AUDSID: Sessions connecting as 'internal'do not increment the SYS.AUDSES$ sequence and the value of their AUDSID is 0.--但是,不是所有的session 都可以获取到AUDSID值。

用internal 连接时,就不会增加SYS.AUDSES$序列,其对应session 的AUDSID 值是0.For example, see what happens when we connect internal in svrmgrl:SVRMGR> connect internalConnected.SVRMGR> select userenv('SESSIONID') from dual;USERENV('S----------1 row selected.Connect internal gets an AUDSID of 0 irrespective of which tool was used.--不管使用什么工具连接,只要用的是internal用户,那么AUDSID 就是0For example, connecting internal from SQL*Plus:SQL> connect internal/oracleConnected.SQL> select userenv('SESSIONID') from dual;USERENV('SESSIONID')--------------------Background processes also have 0 as their AUDSID value。

--后台进程对应的AUDSID 值也是0.Continuing from the last SQL*Plus session, where we are connected internal: SQL> select sid,serial#,audsid,program from v$session;SID SERIAL# AUDSID PROGRAM---------- ---------- ---------- ------------------------------1 1 0 oracle@sunclient1 (PMON)2 1 0 oracle@sunclient1 (DBWR)3 1 0 oracle@sunclient1 (ARCH)4 1 0 oracle@sunclient1 (LGWR)5 1 0 oracle@sunclient1 (CKPT)6 1 0 oracle@sunclient1 (SMON)7 1 0 oracle@sunclient1 (RECO)8 17125 0 sqlplus@sunclient1 (TNS V1-V2)10 rows selected.Of course 'connect internal' is equivalent to connecting 'AS SYSOPER'or 'AS SYSDBA' and in both of these cases AUDSID is again 0.--internal 进行连接,和’as sysoper’,’as sysdba’连接是等价的。

其对应的AUDSID 都是0.In 10g we make a further distinction for SYS sessions:If AUDSID=0, then it is an internally generated SYS session.If AUDSID=UB4MAX(4294967295), then it is a direct SYS session.--在Oracle 10g,如果AUDSID 为0. 则表示的使用内部生成的SYS session,如果AUDSID 为UB4MAX(4294967295),那么表示直接使用SYS 用户登陆的。

SYS@anqing1(rac1)> conn / as sysdba;Connected.SYS@anqing1(rac1)> select userenv('SESSIONID') from dual;USERENV('SESSIONID')--------------------4294967295小结:当session连接数据库时,会分配一个Auditing Session ID,可以使用userenv('SESSIONID')查看当前AUDID 的值,其值和v$session视图里的audid 等值,所以结合这个,就可以查看当前session 的更多信息。

Auditing session ID的值是从SYS.AUDSES$序列中获取,每次取时会自动增加,然后赋给session。

对于internal用户(’/as sysoper’和‘/as sysdba’)和后台进程,其对应的AUDID 为0.在Oracle 10g中,如果AUDID的值为0,表明是internal 用户,如果AUDID 值是4294967295,那么就表明是用SYS 用户直接连接的。

二.S YS.AUDSES$的优化2.1 Sequence 说明之前整理了一篇有关sequence 优化的Blog:Oracle Sequence Cache 参数说明/tianlesoftware/article/details/5995051sequence 的cache 对高DML的应用来说,在性能上的提高有很大帮助,而且对于sequence,我们可以使用alter修改除start 之外的所有属性,所以修改sequence 也很方便。

相关文档
最新文档