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‎。

Oracle编码规范分解

Oracle编码规范分解

MIS系统Oracle编码规范变更记录1、编写目的使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。

2、适用范围本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。

3、对象命名规范3.1 数据库和SID数据库名定义为系统名+模块名★ 全局数据库名和例程SID 名要求一致★ 因SID 名只能包含字符和数字,所以全局数据库名和SID 名中不能含有“_”等字符3.2 表相关3.2.1 表空间★ 面向用户的专用数据表空间以用户名+_+data命名,但在MIS系统中,sysnet用户下按层来给表空间命名,如ODS表空间,BASE,MID等。

★ 面向用户的专用索引表空间以用户名+_+idx命名,MIS系统目前只有一个用户,所以使用系统名+idx命名,如MIS_IDX表空间。

★ 面向用户的专用临时表空间以用户名+_+tmp命名★ 面向用户的专用回滚段表空间以用户名+_+rbs 命名★ 面向应用的表空间以应用名+_data/应用名+_idx/应用名+_tmp/应用名+_rbs 命名★ LOB 段数据专用表空间以其数据表空间+_+lobs 命名,如上例中数据表空间为Aud_data,则LOB 段表空间可命名为Aud_data_lobs3.2.2 表空间文件表空间文件命名以表空间名+两位数序号(序号从01开始)组成,如Aud_data01 等3.2.3 表表命名要遵循以下原则:★ 一般表采用“系统名+t_+模块名+_+表义名” 格式构成,但在MIS系统中因为只有sysnet一个用户,MIS一个系统,所以,表命名以模块名+_+表义名构成,具体命名规则如下:维表命名:D_+维度名,维度名一般为维度英文名字或缩写。

如d_org ,d_product等ODS层:表名与核心库保持一致;BASE层:根据模块不同,承保模块则以f_policy开头,理赔以f_claim开头,后面带有evt +_+表义。

oracle SQL用法总结汇总

oracle SQL用法总结汇总

Oracle SQL 用法总结(一)用户管理1.创建用户create user user_name --创建用户identified by password[default tablespace def_tablespace] --指定用户默认表空间[temporary tablespace temp_tablespace] --指定用户临时表空间2.用户授权与收回权限grant DBA to user_name --给用户授予DBA角色权限grant create user,create table to user_name(用户名)[with admin option](with admin option 选项表示该用户可以将这种系统权限转授予其他用户) --给用户授予系统权限grant select ,update ,insert on table_name(表名) to user_name(用户名) [with grant option](with grant option 选项表示允许该用户将当前的对象权限转授予其他用户) --为用户添加对象权限revoke create table ,create user from user_name(用户名) --收回用户的系统权限(建表,建用户)revoke selece ,insert ,update ,delete on table_name(表名) from user_name (用户名) --收回用户的对象权限(查询,插入,更新,删除).3.修改用户密码alter user user_name --为用户修改密码identified by new_password;或者直接输入:password --修改当前用户密码.4.修改用户默认表空间alter user user_name --修改用户的默认表空间default tablespace new_def_tablespacetemporary tablespace new_tem_tablespace;5.锁定或解锁用户帐号alter user 用户名; --锁定或解锁一个已存在的用户帐号account lock|unlock (锁定/解锁)6.删除用户drop user user_name(用户名); --删除用户drop user user_name(用户名)cascade; --删除用户的同时还要删掉用户所拥有的数据库对象(如表,索引,簇,视图等);7.创建角色create role role_name(角色名)[identified by role_password] ; --为角色创建密码revoke role_name(角色名) from user_name(用户名); --收回用户的角色权限drop role role_name; --删除角色8.查看用户和系统相关信息set timing on --查看执行效率。

Oracle-audit审计

Oracle-audit审计
由于aud$表等审计相关的表存放在system表空间,因此为了不影响系统的性能,保护system表空间,
最好把aud$移动到其他的表空间上。可以使用下面的语句来进行移动:
1创建审计用的表空间(sys用户)
SQL>createtablespaceaudit_dataloggingdatafile'/oracle/oradata/xxx/audit01.dbf'size20mautoextendoffextentmanagementlocalsegmentspacemanagementauto;
selectindex_name,tablespace_namefromdba_indexeswhereindex_namelike'%AUDIT%';
5开启数据库审计
altersystemsetaudit_sys_operations=truescope=spfile;
altersystemsetaudit_trail=db,extendedscope=spfile;
------------------------------------------------------------------------------
--审计迁移案例
1安装数据库的审计功能
conn /assysdba;
SQL> @$ORACLE_HOME/rdbms/admin/cataudit.sql安装审计软件
AUDITDELETE,UPDATE,INSERTONscott.emp;
10审计用户的delete、updet、insert操作
altersystemsetaudit_trail=DB_EXTENDEDscope=spfile;

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

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

Oracle数据库中序列(SEQUENCE)的⽤法详解在Oracle数据库中,序列的⽤途是⽣成表的主键值,可以在插⼊语句中引⽤,也可以通过查询检查当前值,或使序列增⾄下⼀个值。

本⽂我们主要介绍了序列的⽤法,希望能够对您有所帮助。

在Oracle数据库中,什么是序列呢?它的⽤途是什么?序列(SEQUENCE)其实是序列号⽣成器,可以为表中的⾏⾃动⽣成序列号,产⽣⼀组等间隔的数值(类型为数字)。

其主要的⽤途是⽣成表的主键值,可以在插⼊语句中引⽤,也可以通过查询检查当前值,或使序列增⾄下⼀个值。

创建序列需要CREATE SEQUENCE系统权限。

序列的创建语法如下:CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [] [{CACHE n|NOCACHE}];INCREMENT BY ⽤于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。

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

MAXVALUE 定义序列⽣成器能产⽣的最⼤值。

选项NOMAXVALUE是默认选项,代表没有最⼤值定义,这时对于递增序列,系统能够产⽣的最⼤值是10的27次⽅;对于递减序列,最⼤值是-1。

MINVALUE定义序列⽣成器能产⽣的最⼩值。

选项NOMAXVALUE是默认选项,代表没有最⼩值定义,这时对于递减序列,系统能够产⽣的最⼩值是?10的26次⽅;对于递增序列,最⼩值是1。

CYCLE和NOCYCLE 表⽰当序列⽣成器的值达到限制值后是否循环。

CYCLE代表循环,NOCYCLE代表不循环。

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

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

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

oracle中sequence用法

oracle中sequence用法

oracle中sequence用法在Oracle数据库中,Sequence是一种用于生成唯一数字序列的对象。

它可以被广泛地应用于各种场景,例如主键的自动递增、生成唯一的标识符等。

以下是针对Sequence的详细用法解释。

1. 创建Sequence使用CREATE SEQUENCE语句来创建一个Sequence。

可以指定Sequence的名称、初始值、递增步长、最小值、最大值等参数。

例如,创建一个名为seq_customer_id的Sequence,其初始值为1,递增步长为1,最小值为1,最大值为9999:```CREATE SEQUENCE seq_customer_idSTARTWITH1INCREMENTBY1MINVALUE1MAXVALUE9999;```2. 使用Sequence在表中使用Sequence生成唯一的标识符时,可以在INSERT语句中使用NEXTVAL来获取Sequence的下一个值。

例如,向一个名为customer的表中插入一条新记录时,使用Sequence生成一个唯一的customer_id:INSERT INTO customer(customer_id, name, address)VALUES (seq_customer_id.NEXTVAL, 'John Doe', '123 Main St');```在更新表中的记录时,也可以使用Sequence生成一个唯一的标识符。

例如,更新名为customer的表中的记录时,为每条记录生成一个唯一的order_id:```UPDATE customerSET order_id = seq_order_id.NEXTVALWHERE customer_id = 1;```3. 获取Sequence的当前值使用SELECT语句的CURRVAL来获取Sequence的当前值。

但是,要注意CURRVAL只能在使用NEXTVAL之后才能使用,并且只能在同一个Session中使用。

Oracle数据库之序列(sequence)

Oracle数据库之序列(sequence)

Oracle数据库之序列(sequence)Oracle数据库之序列(sequence)序列是⼀个计数器,它并不会与特定的表关联。

我们可以通过创建Oracle序列和触发器实现表的主键⾃增。

序列的⽤途⼀般⽤来填充主键和计数。

⼀、创建序列语法结构:CREATE SEQUENCE [ schema. ] sequence_name[ { INCREMENT BY | START WITH } integer| { MAXVALUE integer | NOMAXVALUE }| { MINVALUE integer | NOMINVALUE }| { CYCLE | NOCYCLE }| { CACHE integer | NOCACHE }| ...]...;说明:1. schema:模式,即⽤户名称2. sequence_name:序列名称3. INCREMENT BY:定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。

4. START WITH:定义序列的初始值,默认为1。

5. MAXVALUE:序列⽣成器能产⽣的最⼤值。

NOMAXVALUE是默认选项,代表没有最⼤值定义。

6. MINVALUE:序列⽣成器能产⽣的最⼩值。

NOMINVALUE是默认选项,代表没有最⼩值定义。

7. CYCLE和NOCYCLE:当序列⽣成器的值达到限制值后是否循环。

CYCLE代表循环,NOCYCLE代表不循环。

如果循环,则当递增序列达到最⼤值时,循环到最⼩值,最⼩值为1。

对于递减序列达到最⼩值时,循环到最⼤值。

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

8. CACHE:定义存放序列的内存块的⼤⼩,默认为20,相当于预加载。

缓冲部分序列计数以便更快获取序列值,可以改善序列的性能,但缓存选项可能会造成数据丢失。

NOCACHE表⽰不缓冲。

⽰例:CREATE SEQUENCE customers_seqSTART WITH 1000INCREMENT BY 1NOCACHENOCYCLE;⼆、删除序列语法:DROP SEQUENCE [ schema. ] sequence_name ;⽰例:DROP SEQUENCE customers_seq;三、使⽤序列序列有两个属性能够获取序列的值:CURRVAL:返回序列的当前值。

Oracle不同版本IMP,EXP命令详解

Oracle不同版本IMP,EXP命令详解

Oracle 不同版本IMP/EXP 命令详解Imp常用用法Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。

imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seapark impsystem/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy)touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)6. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)log=paycheck, filesize=1G full=y7. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par参数文件:#Import the sample tables used for the Oracle8i Database Administrator's Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import8. 增量导入imp system./manager inctype= RECTORE FULL=Y FILE=AOracle imp/expC:Documents and Settingsadministrator>exp help=yExport: Release 9.2.0.1.0 - Production on 星期三7月28 17:04:43 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.通过输入EXP 命令和用户名/口令,您可以后接用户名/口令的命令:例程: EXP SCOTT/TIGER或者,您也可以通过输入跟有各种参数的EXP 命令来控制“导出”按照不同参数。

Oracle Audit 功能的使用方法介绍

Oracle Audit 功能的使用方法介绍

一. 视图说明:1. SYS.AUD$审计功能的底层视图,如果需要对数据进行删除,只需要对aud$视图进行删除既可,其他视图里的数据都是由aud$所得.2. DBA_AUDIT_EXISTS列出audit not exists和audit exists产生的审计跟踪,我们默认的都是audit exists.3. DBA_AUDIT_TRAIL可以在里面查处所有审计所跟踪的信息.4. DBA_AUDIT_OBJECT可以查询所有对象跟踪信息.(例如,对grant,revoke等不记录),他的信息完全包含于dba_audit_trail5. DBA_AUDIT_SESSION所得到的数据都是有关logon或者logoff的信息.6. DBA_AUDIT_STATEMENT列出grant ,revoke ,audit ,noaudit ,alter system语句的审计跟踪信息.7. DBA_PRIV_AUDIT_OPTS通过系统和由用户审计的当前系统特权8. DBA_OBJ_AUDIT_OPTS可以查询到所有用户所有对象的设计选项9. ALL_DEF_AUDIT_OPTS(还没明白出其确切意义)10. AUDIT_ACTIONS可以查询出在aud$等视图中actions列的含义11. SYSTEM_PRIVILEGE_MAP可以查询出aud$等视图中priv$used列的含义(注意前面加’-‘)12.二. 对audit的设置1.需要对audit_trail参数进行设置.该参数有三个值可以设置,默认为false,为不进行审计.当设置为OS时,对数据库进行设计的信息记录到操作系统中,当为DB时记录入sys.aud$中.2.需要对sys用户进行审计,需要设置AUDIT_SYS_OPERATIONS = TRUE,该参数默认值为false,为不进行审计.当对其设计时,所有的信息将记录入操作系统中而不记录入SYS.AUD$注:当记录入操作系统中时,其参数控制为AUDIT_FILE_DEST三. 审计1. by session与by access当设置为by session时,对每个session下每条审计记录只出现一次,by access对每次操作都进行记录,by access将会带来大量的记录.2. by user如果在命令后面添加by user则只对user的操作进行审计,如果省去by 用户,则对系统中所有的用户进行审计(不包含sys用户).四. 测试情况Session1设置设计选项(sys),简写为S1, session2查询结果(user),简称S2,其他为测试连接session(user),为sessionn(n >2)1. 对表的审计对create table进行审计(需要对成功与失败两种情况进行测试)S1:SQL> audit create table by user;S3:SQL>create table test (id number);SQL>create table test (id number);(要报错)S2:SQL>select username,returncode,action_name from dba_audit_trail;user 955 CREATE TABLEuser 0 CREATE TABLES1:SQL>truncate table aud$对修改表(alter table)进行审计S1:SQL> audit alter table by user;S3:SQL> alter table test add( col number);SQL> alter table test add( col number); (要报错)S2:SQL>select username,returncode,action_name from dba_audit_trail;user 0 ALTER TABLEuser 1430 ALTER TABLES1:SQL>truncate table aud$对删除表(drop table)进行审计由于没有对drop table进行单独审计的操作,需要添加audit table by user(此命令将对create table ,drop table, truncate table 进行审计) S1:SQL> audit table by user;S3:SQL> drop table test;SQL> drop table test;(将报错)SQL>create table test(id number);SQL> truncate table test;S2:SQL>select username,returncode,action_name from dba_audit_trail;1 user 0 DROP TABLE2 user 942 DROP TABLE3 user 0 CREATE TABLE4 user 0 TRUNCATE TABLES1:SQL>truncate table aud$2. 对视图的审计对创建视图(create view)进行审计S1:SQL> audit create view by user;S3:SQL> create view test0 as select * from test;SQL> create view test0 as select * from test;(要报错)S2:SQL>select username,returncode,action_name from dba_audit_trail;1 user 955 CREATE VIEW2 user 0 CREATE VIEWS1:SQL>truncate table aud$对修改视图(alter view)进行审计没有对视图进行修改的操作,所以审计修改视图也就不存在.对删除视图(drop view)进行审计由于没有对drop view进行单独审计的操作,需要添加audit view by user(此命令将对create view ,drop view进行审计)S1:SQL> audit view by user;S3:SQL> drop view test0;SQL> drop view test0; (将报错)SQL> create view test0 as select * from test;;S2:SQL>select username,returncode,action_name from dba_audit_trail;1 user 0 DROP VIEW2 user 942 DROP VIEW3 user 0 CREATE VIEWS1:SQL>truncate table aud$3. 对程序包的审计目前没有对程序包的重新编译进行审计.对包,函数以及存储过程的审计都可以通过auditprocedure by user进行审计.S1:SQL> audit procedure by user;S3:SQL> create procedure test12 as3 begin4 null;5 end;6 /SQL> drop procedure test1;SQL> drop procedure test1;S2:SQL>select username,returncode,action_name from dba_audit_trail;1 user 0 CREATE PROCEDURE2 user 0 DROP PROCEDURE3 user 4043 DROP PROCEDURESQL>truncate table aud$4. 对用户的审计对用户的审计可以有audit user来实现,该命令可以审计create user,alter user,drop user.S1:SQL> audit user by user;S3:SQL> create user zyc identified by zyc;SQL> alter user zyc identified by 000; (要报错)SQL> alter user zyc identified by zyc; (要报错)SQL> alter user zyc identified by aaa;SQL> drop user zyc;SQL> drop user zyc; (要报错)S2:SQL>select username,returncode,action_name from dba_audit_trail;1 user 0 CREATE USER2 user 988 ALTER USER3 user 28007 ALTER USER4 user 0 ALTER USER5 user 0 DROP USER6 user 1918 DROP USERS1:SQL>truncate table aud$综上所述:1. 对表的审计:可以单独对表的create,alter进行审计,如果要对drop操作进行审计需要对表加audit table(该命令包含有create table,drop table,truncate table).2. 对视图的审计:可以单独对视图的create进行审计,如果要对drop操作进行审计需要对视图加audit view(该命令包含有create view,drop view).3. 对程序包的审计:可以对包(函数,存储过程等)的create进行审计,如果需要对drop操作进行审计需要加audit procedure(该命令对CREATE FUNCTION, CREATE LIBRARY , CREATE PACKAGE, CREATE PACKAGE BODY, CREATE PROCEDURE, DROP FUNCTION, DROP LIBRARY, DROP PACKAGE, DROP PROCEDURE进行审计)4. 对用户的审计:可以通过audit user(该命令包含 create user,alter user,drop user)进行审计.。

Oracle Sequences完全解释

Oracle Sequences完全解释
VALUES
(seq_audit_tx.NEXTVAL, 'Univ. of Washington', 'Everett');
INSERT INTO division
(division_id, site_id, division_name)
VALUES
(seq_audit_tx.NEXTVAL, seq_audit_tx.CURRVAL, 'Science');
desc seq_test
INSERT INTO seq_test
(test, test2)
VALUES
(seq_inc_by_ten.NEXTVAL, seq_inc_by_ten.NEXTVAL);
SELECT * FROM seq_test;
INSERT INTO seq_test
(test, testq_test;
CREATE SEQUENCE seq_inc_by_tenINCREMENT BY10;
INSERT INTO seq_test VALUES (seq_inc_by_ten.NEXTVAL);
/
/
SELECT * FROM seq_test;
ALTER TABLE seq_test ADD test2 NUMBER(10);
4. Unlock the seqnum table for the next transation
Tables For Sequence Demos
CREATE TABLE campus_site (
site_id NUMBER(4),
organization_name VARCHAR2(40),
CREATE SEQUENCE <sequence_name> START WITH <integer>;

Oracle SYS.AUDSES$ 序列 说明

Oracle SYS.AUDSES$ 序列 说明

一.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 的更多信息。

  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 也很方便。

相关文档
最新文档