oracle笔记(3)
2021学年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添加主键primarykey的四种方法

Oracle数据库学习笔记_Oracle添加主键primarykey的四种⽅法创建主键oracle主键添加语句通常紧跟在建表语句之后,也可以直接嵌在列声明⾥创建,oracle创建主键时会⾃动在该列上创建索引。
常见⽅法⼤概有以下5种:⽅法⼀、使⽤add constraint ⽅法添加主键约束alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)⽅法⼆、使⽤索引创建主键(和⽅法⼀没有区别,可以将⽅法⼀理解为省略了using index)alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)using index [index_name];当省略using index后⾯的index_name时,创建主键的同时创建同名索引;当使⽤已有索引index_name创建主键时,注意索引列和主键列应该相同才能创建成功。
⽅法三、直接添加主键alter table 表名 add primary key (列名1,列名2,...) ;同样,创建主键的同时创建同名索引。
⽅法四、参数列内添加主键create table ALERT_RESULT_EVENT_C(data_date VARCHAR2(8) not null,object_id VARCHAR2(600) not null,event_id VARCHAR2(20) not null,ratio NUMBER(22,4),pairing_object_id VARCHAR2(128),index_value_1 VARCHAR2(128),index_value_2 VARCHAR2(128),constraint PK_ALERT_RESULT_EVENT_C primary key (DATA_DATE, OBJECT_ID, EVENT_ID));删除主键alter table 表名 drop primary key ;采⽤该语句删除主键时,同名索引也会被删掉。
dbms_lob包学习笔记之三:instr和substr存储过程

dbms_lob包学习笔记之三:instr和substr存储过程instr和substr存储过程,分析内部⼤对象的内容instr函数与substr函数instr函数⽤于从指定的位置开始,从⼤型对象中查找第N个与模式匹配的字符串。
⽤于查找内部⼤对象中的字符串的instr函数语法如下:dbms_lob.instr(lob_loc in blob,pattern in raw,offset in integer :=1;nth in integer :=1)return integer;dbms_lob.instr(lob_loc in clob character set any_cs,pattern in varchar2character set lob_loc%charset,offset in integer:=1,nth in integer :=1)return integer;lob_loc为内部⼤对象的定位器pattern是要匹配的模式offset是要搜索匹配⽂件的开始位置nth是要进⾏的第N次匹配substr函数substr函数⽤于从⼤对象中抽取指定数码的字节。
当我们只需要⼤对象的⼀部分时,通常使⽤这个函数。
操作内部⼤对象的substr函数语法如下:dbms_lob.substr(lob_loc in blob,amount in integer :=32767,offset in integer :=1)return raw;dbms_lob.substr(lob_loc in clob character set any_cs,amount in integer :=32767,offset in integer :=1)return varchar2character set lob_loc%charset;其中各个参数的含义如下:lob_loc是substr函数要操作的⼤型对象定位器amount是要从⼤型对象中抽取的字节数offset是指从⼤型对象的什么位置开始抽取数据。
Oracle数据库学习笔记_CREATETABLE和INSERTINTO的高级用法

Oracle数据库学习笔记 _CREATETABLE和 INSERTINTO的高级用 法
1、新建表 create table ACCT_LOAN (
data_date INTEGER not null, --整数,也可以约束数字最大位数,不可为空 acct_num VARCHAR2(35) not null, --可变长度的字符串(包含数字。字母及特殊字符) curr_cd CHAR(3), --固定长度为3的字符串(可包含数字,字母及特殊字符) drawdown_dt DATE, --日期 loan_amt decimal(8,2) --小数,小数最大长度为8位,小数位固定为2位 ) 2、建备份表 create table 备份表名 as select * from 表名; 3、将两张相同结构的表合并在一起 insert into 表1 select * from 表2 where ...; commit; 4、更新表:merge into merge into 表1 using 表2 on (表1.字段=表2.字段) when matched then update set ... when not matched then insert values(表2.xx, 表2.xx,...); commit; 5、给变量赋值 select into 变量名 from
【Oracle学习笔记】定时任务(dbms_job)

【Oracle学习笔记】定时任务(dbms_job)⼀、概述Oralce中的任务有2种:Job和Dbms_job,两者的区别有:1. jobs是oracle数据库的对象, dbms_jobs只是jobs对象的⼀个实例,就像对于tables, emp和dept都是表的实例。
2.创建⽅式也有差异,Job是通过调⽤dbms_scheduler.create_job包创建的,Dbms_job则是通过调⽤dbms_job.submit包创建的。
3.两种任务的查询视图都分为dba和普通⽤户的,Job对应的查询视图是dba_scheduler_jobs和user_scheduler_jobs,dbms_jobs对应的查询视图为dba_jobs和user_jobs。
这⾥主要是介绍Dbms_job。
⼆、使⽤1、创建job:1BEGIN2 DBMS_JOB.SUBMIT(3 JOB OUT BINARY_INTERGER,--输出变量,是此任务在任务队列中的编号,也可以⾃定义,⼀般不传4 WHAT IN VARCHAR2,--执⾏的任务的名称及其输⼊参数5 NEXT_DATE IN DATE DEFAULT SYSDATE,--任务执⾏的时间6 INTERVAL IN VARCHAR2DEFAULT NULL,--任务执⾏的时间间隔7 NO_PARSE IN BOOLEAN DEFAULT FALSE,--⽤于指定是否需要解析与作业相关的过程8 INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,--⽤于指定哪个例程可以运⾏作业9 FORCE IN BOOLEAN DEFAULT FALSE--⽤于指定是否强制运⾏与作业相关的例程10 );11END新⼿可以使⽤窗⼝创建:2、删除job: dbms_job.remove(jobno); -- jobno任务号3、修改要执⾏的操作: job:dbms_job.what(jobno, what); --指定任务号以及存储过程4、修改下次执⾏时间:dbms_job.next_date(jobno, next_date); --指定任务号的时间5、修改间隔时间:dbms_job.interval(jobno, interval); --指定任务号的间隔时间6、改变与作业相关的所有信息,包括作业操作,作业运⾏⽇期以及运⾏时间间隔等.1 dbms_job.change(2 job in binary_integer,3 what in varchar2,4 next_date in date,5 interval in varchar2,6 instance in binary_integer default null,7 force in boolean default false8 );例⼦:dbms_job.change(2,null,null,'sysdate+2');6、启动job: dbms_job.run(jobno); --指定任务号启动7、停⽌job: dbms.broken(jobno, broken, nextdate); –broken为boolean值 N代表启动,Y代表没启动(STOP)三、Interval 说明间隔/interval是指上⼀次执⾏结束到下⼀次开始执⾏的时间间隔,当interval设置为null时,该job执⾏结束后,就被从队列中删除。
Oracle EBSGL学习笔记

12.81、冲销日记账1)原始借:租金10,000 本位币美元贷:现金10,000 本位币美元冲销借:现金10,000 本位币美元贷:租金10,000 本位币美元2)可以创建冲销日记账分录来冲销应计、估计、临时调整和重新分类,或更正错误。
3)方法:转换借贷项:通过转换借项和贷项金额来冲销日记账分录。
红字冲销:通过将原始日记账金额从正值改为负值来冲销日记账分录。
4)日记账> 输入> 复核日记账(B)其他活动日记账> 生成> 冲销2、自动冲销日记账1)可以自动冲销上一个月的应计日记账分录,并自动将其过账(如果需要)。
2)自动冲销日记账的前提条件:--日记账余额类型为“实际”--日记账类型已启用“自动冲销”选项--日记账已过帐,但尚未冲销--日记账冲销期间为“打开”或“将来可输入”3) 设置> 日记账> 自动冲销(AutoReverse)3、日记账分录报表提供:会计结算日期、类别、日记账名称、参考、日记账批4、与Oracle General Ledger 集成--在Excel中创建日记账--通过Web ADI 加载到GL_INTERFACE 表--从接口表中提交“日记账导入”-从Web ADI中与加载流程同时提交-从Web ADI 中作为独立的提交流程提交-从Oracle General Ledger中使用“导入日记账”窗口提交5、Web ADI 的核心功能1)布局功能--从布局中删除或向布局中添加字段--指定字段在布局中的位置--为布局中的字段分配默认值--保存布局,可以由具有适当责任的某个人来定义,然后由整个站点使用2) 文本导入功能--将文本文件数据导入到桌面文档中--创建可以修改和重复使用的映射模板,根据需要更改数据临时的移动目标。
3) 安全功能--将Web ADI 功能与菜单关联,创建用作安全配置文件的自定义访问点--将菜单附加到分配给用户的职责中,用用户级别限制Web ADI访问--为自助连接添加默认参数:强制用户在其桌面上生成文档时使用预定义的参数--将表单功能与用户的菜单关联,已授予其访问集成器的权限4) Internet 计算功能--集中部署,要操作词产品,客户机只需要浏览器和Excel--在Web 上运行6、通过Web ADI 进行桌面集成1) 集成器:Oracle General Ledger-日记账集成器、Oracle General Ledger-预算集成器、创建资产集成器、实地盘点集成器、HRMS集成器2)Oracle General Ledger-日记账集成器:--根据可定义的布局,自动生成基于电子表格的日记账分录工作表--允许通过复制和粘贴日记账行,然后进行增量式修改来快速的输入日记账--允许您定义可以反复修改和加载的日记账模板--使用安全措施和交叉验证规则以及其他引用字段全面验证账户--通过Oracle General Ledger开放接口将日记账加载到Oracle General Ledger7、导入日记账日记账> 导入> 运行1)将子分类帐和源系统数据导入Oracle General Ledger--定义分类账、币种、帐户、日记账来源和类别设置Oracle General Ledger,以接受日记账导入数据--运行“优化”程序,并定义并发程序控件。
韩顺平oracle学习笔记

韩顺平oracle学习笔记第0讲:如何学习oracle一、如何学习oracleOracle目前最流行的数据库之一,功能强大,性能卓越。
学习oracle需要具备一定基础:1.学习过一门编程语言(如:java ,c)2.最好学习过一门别的数据库(sql server,mysql , access)教程推荐:oracle使用教程,深入浅出oracle记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解Oracle基础部分:oracle基础使用; oracle用户管理; oracle表管理Oracle高级部分:oracle表的查询; oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程;索引,约束和事物。
期望目标:1 学会安装、启动、卸载oracle2 使用sql *plus工具3 掌握oracle用户管理4 学会在oracle中编写简单的select语句第1讲:基础语法内容介绍:1.为什么学习oracle2.介绍oracle及其公司的背景3.学会安装、启动、卸载oracle4.oracle开发工具5.Sql*plus的常用命令6.oracle用户管理一、主流数据库包括:●微软:sql server 和 access●瑞典:mysql AB公司●IBM公司:DB2●美国sybase公司:sybase●IBM公司:infromix●美国oracle公司:oracle(目前最流行的之一)二、oracle安装,启动及卸载1.系统要求:操作系统最好为windows2000内存最好在256M以上硬盘空间需要2G以上2.oracle安装会自动的生成sys和system两个用户说明:○1Sys用户是超级用户,具有最高权限,具有sysdba角色,create database 的权限,默认密码是manager○2System 用户是管理操作员,权限也很大,具有sysoper角色,没有create database权限,默认密码是 change_on_install○3一般讲,对数据库维护,使用system用户登录就可以了3.启动oracle右键单击我的电脑->服务和应用程序:服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener4.卸载oracle1、先关掉oralce,net stop OracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭2、开始->程序->Oracle - oracle的版本号,我的是10ghome->Oracle Installation Products->Universal Installer 卸载oracle3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
Oracle数据库学习笔记

Oracle数据库学习笔记Oracle数据库基础 orcale属于关系型数据库,适⽤于各类⼤,中,⼩,微机环境,是⼀种⾼效率、可靠性好的、适应⾼吞吐量的数据库⽅案。
学习,实验完全免费,商⽤需要⽀付相应费⽤。
Oracle 数据库包括数据库实例,和数据库,⼆者脱离谁都没有存在的价值。
实例是⽤来操作数据库的对象,数据库是⽤来存储数据使⽤的。
Oracle主要组件包含实例组件,数据库组件。
SGA(System Global Area)是Oracle Instance的基本组成部分,PGA(Process Global Area)是为每个连接到Oracle database的⽤户进程保留的内存。
每个实例只有⼀个SGA,所有的进程都能访SGA。
PGA是程序全局区,每个⼀个进程都⼀个PGA,PGA是私有的,只有对应进程才能访问对应的PGA。
数据库中包含:参数⽂件,⼝令⽂件,数据库⽂件,控制⽂件,⽇志⽂件以及归档⽇志⽂件。
Oracle实例进场包含⽤户进程,服务器进程和后台进程。
SGA:系统全局区 系统全局区包含共享池,数据缓冲区,⽇志缓冲区。
“共享池”:是对SQL,PL/SQL程序进⾏语法分析,编译,执⾏的内存区;由库缓存和数据字典缓存组成;其⼤⼩直接影响数据库性能。
“数据缓冲区”:临时存储从数据库读⼊的数据,所有⽤户共享,数据缓存区的⽬的是加快数据读写。
“⽇志缓冲区”:⽇志记录数据库所有修改信息,其先产⽣于⽇志缓冲区,当达到⼀定数量时,由后台进程将⽇志数据写到⽇志⽂件中。
PGA:程序全局区 PGA包含单个服务器进程所需要的数据和控制信息,在⽤户进程连接到数据库并创建⼀个会话时⾃动分配的,保存每个与数据库连接的⽤户进程所需要的信息。
PGA为⾮共享区,只能单个进程使⽤,当⼀个⽤户会话结束,PGA释放。
后台进程 后台进程中包含PMON(进程监视器(Process Monitor)),SMON(系统监视器(System Monitor)),DBWR(数据库书写器(Database Write)),LGWR(⽇志书写器(Log Write)),CKPT(检查点(Checkpoint)),以及其他。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.用insert语句进行行数据的迁移Insert into 表名(列,列) select 列,列from emp where 条件2.用update更新数据(使用子查询):希望员工scott的岗位,工资,补助与smith员工一样?update emp set (job,sal,comm)=(select job,sal,comm. From emp where ename=‟SMITH‟) where ename=‟SCOTT‟;3.事务(1)锁(2)提交事务(3)回退事务(一开始就做保存点(savepoint))(4)事务的几个重要操作1)设置保存点:savepoint a2)取消部分事务:rollback to a3)取消全部事务:rollback(5)只读事务:set transaction read only(当前用户能看到之前的操作,若其他用户进行更新,该用户之后的操作都不能看到更新)(6)字符函数(1)lower(char):将字符串转化为小写的格式(2)upper(char): 将字符串转化为大写的格式(3)length(char):返回字符串的长度(4)substr(char,m,n):取字符串的子串,从m开始取,取n个(5)例:以首字符大写的方式显示所有的员工的姓名:(1)完成首字母大写:select upper(substr(ename,1,1)) from emp;(2)完成后面字母小写:select lower(substr(ename,2,length(ename)-1)) from emp;(3)合并:select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1))from emp;(6)replace(char1,search_string,replace_string)(7)instr(char1,char2,[,n[,m]])—取子串在字符串的位置(8)例:显示所有员工的姓名,用”我是A”替换所有”A”:select replace(ename,‟A‟,‟我是A‟) from emp;(7)数学函数(1)round(n,[m]):用于四舍五入(2)trunc(n,[m]):用于截取数字(3)mod(m,n):取模(4)floor(n):返回<=n的最大整数(5)ceil(n):返回>=n的最小整数(6)例:显示在一个月为30天的情况所有员工的日薪金,忽略余数:selectfloor(sal/30),ename from emp;(8)日期函数(1)sysdate(2)add_months(d,n)(3)last_day(d):返回指定日期所在月份的最后一天例:返回在八个月前雇佣的员工(已经入职8个月多的员工):select * from emp where sysdate>add_months(hiredate,300);例:对于每个员工,显示其加入公司的天数:select trunk(sysdate-hiredate) “入职天数”,ename from emp;例:找出各月倒数第3天受雇的所有员工:select hiredate,ename from emp where last_day(hiredate)-2=hiredate;(9)转换函数(1)to_char :select ename,to_char(hiredate,‟yyyy-mm-dd hh24:mi:ss‟) from emp;(2)显示1980年入职的所有员工:select * from emp whereto_char(hiredate,‟yyyy‟)=1980(3)显示所有12月份入职的员工:select * from emp where to_char(hiredate,‟dd‟)=12(10)to_date(11)sys_context—系统函数:1)terminal:2)language3)db_name:4)nls_date_format5)session_user6)current_schema:7)host:select sys_context(…userenv‟,‟db_name‟) from dual;管理数据库的用户主要是sys和system,主要的区别(1)最重要的区别,存储的数据的重要性不同:所有oracle的数据字典的基表和视图都存放在sys用户中,sys用户拥有dba,sysdba,sysoper角色或权限,system用于存放次一级的内部数据,如Oracle的一些特性或工具的管理信息,system用户拥有dba,sysdba角色或系统权限(2)其次的区别,权限的不同:sys用户必须以as sysdba或as sysoper形式登陆,不能以normal方式登陆数据库(3)管理初始化参数(1)显示初始化参数:show parameter命令数据库(表)的逻辑备份与恢复(1)物理备份可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行(2)导出:导出表,方案,数据库,exp,常用选项(userid,tables,owner,full=y,inctype,rows,file)(3)导出自己的表:exp userid=scott/tiger@accp tables=(emp) file=d:\e3.dmp(4)导出其他方案的表:需要有dba的权限(5)导出表的结构:exp userid=scott/tiger@accp tables=(emp) file=d:\e3.dmp rows=n(6)直接导出方式:exp userid=scott/tiger@accp tables=(emp) file=d:\ec.dmp direct=y—速度快,当数据量大时,可以考虑这种方法(7)导出方案:导出自己的方案:exp scott/tiger@myral owner=scotr file=d:\scott.dmp(8)导出其他方案:需要dba的权限或exp_full_database的权限(9)导出数据库:exp userid=system/manager@myor full=y inctype=complete file=d:x.dmp导入(1)Import视图记载了例程启动后的相关信息数据字典和动态性能视图(1)数据字典是oracle数据库中最重要的组成部分,它提供了数据库的ixie系统信息:数据字典记录了数据库的系统信息,它是只读表和视图的稽核,数据字典的所有者是sys用户,用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的(2)动态性能:用于记录当前例程的活动信息(3)user_tables:显示当前用户所拥有的所有表,all_tables :显示当前用户可以访问的所有表,不仅返回当前用户方案的所有表,还会返回当前用户可以访问的其他方案的表,dba_tables:显示所有方案拥有的数据库表,必须有dba权限(4)通过查询dba_user可以显示所有数据库用户的详细信息,通过查询数据字典视图dba_sys_privs可以显示用户所具有的系统权限,dba_tab_privs:显示用户具有的对象权限,dba_col_privs可以显示用户具有的列权限,dba_role_privs可以显示用户所具有的角色(5)显示当前用户可以访问的所有数据字典视图:select * from dict where comments like…%grant%‟;(6)显示当前数据库的全称:select * from global_name;表空间(1)表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中,从逻辑上讲,数据库则是存放在表空间中,表空间由一个或是多个数据文件组成(2)Oracle中逻辑结构包括表空间,段,区,块(3)数据库逻辑上是由一个或多个表空间组成的,表空间可以达到以下作用(1)空值数据库占用的磁盘空间(2)dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,同时利于备份和恢复等管理操作(4)建立表空间:create tablespace (有create tablespace的系统权限即可)(5)建立数据表空间:create tablespace data01 datafile …d:\test\data01.dbf‟ size 20m uniform size128k(6)改变表空间的状态(1)使表空间:alter tablespace 表空间名offline(2)使表空间联机:alter tablespace 表空间名online(3)只读表空间:alter tablespace query_data read only(4)使表空间可读写:alter tablespace 表空间名read write删除表空间(1)drop tablespace 表空间including contents and datafiles约束:约束用于确保数据库数据满足特定的商业规则(1)not null:修改约束:alter table 表名modify 列: not null(2)unique:修改约束:alter table 表名add constraint 约束名unique(列)(3)primary key(4)foreign key:列char(8) references 主表(列)(5)check:列number(10) check (列between 1 and 20))或列number(10) check (列in (…值‟,…值‟))(6)删除约束:alter table 表名drop constraint 约束名称(要强制删除的话可以在最后加cascade)(7)显示约束信息:user_constranints,显示约束列:user_cons_columns(8)列级定义:是在定义列的同时定义约束(9)表级定义:在定义了所有列后,再定义约束索引(1)单列索引:create index 索引名on 表名(列名);(2)复合索引:create index emp_idxl on emp (ename,job);(3)使用原则:(1)在大表上建立索引才有意义(2)在where子句或是连接条件上经常引用的列上建立索引(3)索引的层次不要超过4层索引缺点分析(1)建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引(2)更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性(3)很少或从不引用的字段(4)逻辑型的字段,如男或女等显示表的所有索引(1)select index_name,index_type from user_indexes where table_name=‟表名‟;显示索引列(1)select table_name ,column_name from user_ind_columns whereindex_name=‟IND_ENAME‟;(2)回收某个用户的系统权限后,级联的用户的系统权限不会被收回,而回收某个用户的对象权限后,级联的用户的对象权限则也会被收回角色(预定义+自定义):角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理。