Oracle Web ADI 开发笔记(抽丝拨茧篇)
- 格式:pdf
- 大小:3.28 MB
- 文档页数:62
Oracle基础学习笔记主要是9i,部分会涉及10g的东西。
有点乱,大家慢慢看吧,对入门的学习还是挺基础的。
一、结构一个Oracle服务由实例(instance)和数据库(database)组成,数据库和实例是一对多的关系,即一个实例只可以管理一个数据库,而一个数据库可以被多个实例同时管理着,如在RAC环境中。
(1)实例1、由一组进程和内存结构组成2、5个基本进程:dbwr(数据文件写), lgwr(日志文件写),smon(系统恢复和控制),pmon(服务进程监控),chk(检查点),3、其他进程:arch(归档日志写),job作业进程等4、内存:SGA和PGA5、SGA包括share pool-lib cache: sql, pl/sql,-dictionary cache: 数据字典缓存db buffer:-nk_cache block 是nk的表空间使用的buffer-recycle_cache:经常不驻留内存的对象缓冲区-keep_cache:经常驻留内存的对象缓冲区relog buffer: redo log 文件缓存large buffer:share模式下为uga所使用java buffer:jvm使用streem buffer( 10g)最大比例的是db_cache_size,上面没有列出db_cache_size,是因为其被nk_cache包含了,若db_block_size =8k,则db_cache_size就是8k_cache。
6、参数SGA_MAX_SIZE : SGA最大内存SHARED_POOL_SIZE : share pool 的大小DB_CACHE_SIZE : db cache 的大小DB_RECYCLE_CACHE_SIZE: 经常不驻留内存的对象缓冲区DB_KEEP_CACHE_SIZE: 经常驻留内存的对象缓冲区LOG_BUFFER : log buffer 的大小LARGER_POOL_SIZE : large buffer的大小JAVA_POOL_SIZE : java buffer的大小Db_2K_cache_size : block size 为2k的表空间的数据缓冲Db_4K_cache_size : block size 为4k的表空间的数据缓冲Db_8K_cache_size : block size 为8k的表空间的数据缓冲Db_16k_cache_size : block size 为16k的表空间的数据缓冲Db_32K_cache_size : block size 为32k的表空间的数据缓冲若db_block_size为nk,则参数db_nk_cache_size无意义,nk的cache size由db_cache_size确定。
第十章:使用视图(整理笔记)主要内容:1.创建视图;2.更改、重命名和撤消视图3.使用视图修改数据4.使用内联视图。
5.使用Top-N方法。
视图是从一个或多个表中导出的行或列的子集。
视图本身不包含数据,它只起到一个窗口的作用,由此可以观看或修改基表的数据。
数据字典把视图作为一条select语句加以保存。
视图优点:1.视图可用来检索表中所选的列。
(防止数据丢失)2.可创建简单的查询,检索需要频繁调看的结果。
3.可用来从多个表中检索数据。
4.不需要时可以删除,不影响数据库。
//1创建视图注意事项:1.包含连接、组合和子查询的select语句可被包含在定义视图的子查询内。
2.创建视图时不能使用orderby子句,但为检索视图中数据,可用这条语句。
3.or replace选项用于修改视图定义,而无需撤消或重新创建它。
//1.1创建简单视图create view empasselect vfirstname,vlastnamefrom employee;create view v_addressasselect vfirstname,vlastname,cphone,vemailid,ntestscore from externalcandidate;select * from v_addresswhere vlastname='Jones';create view v_scoreasselect vfirstname,ntestscore from externalcandidate wherentestscore>='60';//force强制创建视图create force view v_testasselect * from t_test;//or replace创建或替代视图create or replace view v_countryasselect vfirstname,ccountryfrom externalcandidate natural join country;//1.2创建复杂视图create view emp_dept_vuas select vfirstname,vlastname,vdepartmentname from employeejoin department on employee.cdepartmentcode=department.cdepartmentcode;//2更改、重命名和撤消视图//2.1更改视图create or replace view emp_dept_vuas select vfirstname,vlastname,vdepartmentname,cCurrentPosition from employeejoin department on employee.cdepartmentcode=department.cdepartmentcode; //2.2重命名视图rename emp_dept_vu to empdeptvu;//2.3撤消视图drop view empdeptvu;select * from emp_dept_vu;//3使用视图修改数据//不能同时修改两个表里面的数据,如果修改必须在两个表里面分别修改update emp_dept_vuset vfirstname='Hello'where vlastname='Smith';//4使用内联视图:它是SQL语句的子查询,在主查询的from子句使用它吧,通过别名被引用它。
oracle 调优笔记(揭开传言的面纱)一、oracle 的不解之缘别人高考报志愿,都是因为热爱那门专业,所以选择了大学的专业。
还有些人报志愿是看到了未来长远的发展比较好,所以选择了大学的专业。
而我呢高考志愿是如何选择的呢?家里人没啥文化,父母全是普通的老百姓,自然也没有人帮我参考报啥专业。
于是和母亲商量上网查查吧,哪个专业比较好?搜着搜着,看到了一条“某互联网公司招聘数据库专业人员,年薪10W ”,我毫不犹豫的报了我的大学专业《数据库设计与开发》。
现在回想起来,我自己都觉得可笑,就因为那1条招聘信息,我选择了我的大学专业。
从此我便不知不觉的踏上了数据库的贼船,走上了这条不归路。
在网络中不断学习的过程中,我发现了个问题,网上的资料好多都是近亲,更有甚者有些资料还是双胞胎兄弟,一模一样啊,标点符号都不差,但它们真的全都标注着“原创”。
前面的文章还好,最可气的是有些文章,写得这个详细、排版这个漂亮,给人第一感觉就是,按着一步一步做吧,肯定没有问题。
但是当你花了九牛二虎之力,实验就是做不出来,肯定会有些小问题,这样的文章给我这样一个oracle 初学者留下了永恒的伤。
仔细算算,从大二的第一次oracle 课到现在,大约有6个年头了。
回想当初学习oracle 的经历,挺有感触的。
每当我写博文的时候,我尽可能的把实验内容写全、实验截图贴全。
希望可以帮到需要的朋友们,这么多年从业的道路上,每当有兄弟找到我问东西的时候,只要是我会的,我都会尽可能得去帮忙。
下面进入本篇文章的主题吧,和大家分享一些oracle 库中sql 语句调优的小知识点吧,写得比较基础、易懂。
二、实战操作及截图说明(一)、要说SQL 调优,就必须要简单说一下,SQL 语句的执行过程:123 45 6 78 1、检查语法(检查语法,如果有错误,直接返回,省着往下执行浪费资源) 2、检查语义(有没有这个表、当前用户有没有操作权限,如果没有直接返回) 3、hash 计算(把当前的sql 语句转换成oracle 可以理解的hash 值)4、解析 4.1、软解析(当一条sq1语句执行过,就会保存在library cache 中,当再一次执行与此条sql 相同的语句时,不经过cpu 计算,直接调用share pool)4.2、硬解析(当软解析不成功进,经过cpu 计算) 5、执行(有顺序的)select name from aa where id=1(先计算条件,再对比表,减少查找范围,触发索引就是先看where条件部分)(二)、优化器Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。
1、用dba权限的用户查看数据库都有哪些锁select ername,t2.sid,t2.serial#,t2.logon_timefrom v$locked_object t1,v$session t2where t1.session_id=t2.sid order by t2.logon_time;2、查看有哪些对象被锁了select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.object_id = a.object_id3、根据sid查找进程idselect pro.spid from v$session ses,v$process pro where ses.sid=129 and ses.paddr=pro.addr;select ses.sid from v$session ses,v$process pro where pro.spid=129 and ses.paddr=pro.addr;4:根据这个spid对应linux下的进程pidlinux命令:ps -ef | gre | 'ora' (找到所有ora开头的进程)kill -9 (pid)5、解决delete后表的高水位的问题初步判断应该是之前有大量数据,后来delete了,选成高水位,用shrink清除高水位:alter table t_mobile_client_tp_prov enable row movement;alter table t_mobile_client_tp_prov shrink space;重新收集统计信息:begindbms_stats.gather_table_stats(ownname=>'traffic',tabname=>'T_MOBILE_CLIENT_TP_PR end;6、ORA-02064 distributed operation not supportedCause:One of the following unsupported operations was attempted:Array execute of a remote update with a subquery that references a database link, orAn update of a long column with bind variable and an update of a second column with a subquery that both references a database link and a bind variable, orA commit is issued in a coordinated session from an RPC with OUT parameters.Action:Simplify the remote update statement.问题: 数据库A ,B 通过DBlink互相访问, 数据库A 调用数据库B的存储过程pro_b , pro_b 过程中有out 输出参数,并且里面有dml语句,之后commit ,或rollback. 这时数据库A 通过DBlink 的调用pro_b@B就会产生这个错误.解决办法:a. 去掉pro_b中的commit, rollback ,统一有数据库B来控制事务.(当然也可以去掉out参数,这样也破坏是事务的完整性)b.用自制事务来控制pro_b , 在pro_b中添加.PRAGMA AUTONOMOUS_TRANSACTION; 优点:不用去修改调用的所有方法.当然这样也不能控制事务的完整.7、建表开启并行v_table_sql := 'CREATE TABLE T_MOBILE_CAP_DETA82_'||in_date||' parallel (degree 4) as '||' select /*+parallel(t1 4) */ * fromT_MOBILE_CAP_DETAIL_'||in_date||'@QAS82 t1';EXECUTE IMMEDIATE v_table_sql;8、创建dblinkCREATE DATABASE LINK CONNECT TO TRAFFICIDENTIFIED BY "pwd"USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.228.65)(PORT=1521)))(CONNECT_DATA=(SID=qas)))'9、创建临时表a.create global temporary table temp_tbl(col_a varchar2(30))on commit preserve rows(当提交后保留数据,session结束时才清除数据)b.create global temporary table temp_tbl(col_a varchar2(30))on commit delete rows (当提交后不保留数据,session结束时也清除数据)10、drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。
Oracle Web ADI开发步骤*以下的操作开发步骤是基于实现应付发票EXCEL导入功能的项目案例。
1 程序开发部分1.1 新建临时表TEMP,用于暂放EXCEL数据脚本参考:脚本说明:1.表结构中的ID、TRAN_TYPE和WHO栏是必有的栏位,用于实现逻辑控制,其中ID是唯一的,TRAN_TYPE用于控制操作类型,例如新建(Insert)、更新(Update)等;2.序列器及Synonym的生成脚本。
1.2 新建API过程,将EXCEL数据导入临时表TEMP1、此步骤主要是对EXCEL中数据的正确性进行校验,如果数据正确将导入至临时表TEMP中暂存;如果EXCEL中的数据校验发生错误,数据不允许进入临时表,调用EXCEPTION函数,在EXCEL导入表中报错:App_Exception.Raise_Exception('CUX'--应用产品,Cont_Exception_Code--自定义的Exception代码,'Error Message'--错误信息提示)。
2、脚本参考:脚本说明:1、声明Cux_Inv_Temp_Rec为记录类型;2、过程Valid_Inv_Temp_Ins验证Excel导入临时表的数据,对Cux_Inv_Temp_Rec的记录进行校验;3、编写EXCEL数据导入临时表的主过程Create_Invoice_Temp,调用验证过程Valid_Inv_Temp_Ins;如果数据正确无误,导入临时表TEMP,反之EXCEPTION处理,全部数据导入不成功。
1.3 新建并发请求,将临时表TEMP中的数据导入系统相关的信息表或者接口表INTERFACE中。
1.3.1 非主-次表的导入如果只是单一表的数据导入,则可以通过EXCEL表直接导入系统表或者接口表中。
1.3.2 主-次表的导入1、编写并发请求,将临时表TEMP中的数据整理成主表、明细表的资料,并进行分步导入处理。
目录Oracle学习路线 (1)在windows XP之后的版本中安装Oracle10g的注意事项 (2)创建和删除临时表空间 (3)创建数据表空间 (4)3、创建用户并指定表空间 (4)4、给用户授予权限 (4)Oracle学习路线1、sql、pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)作为oracle的基本功,需要大家对sql和plsql非常的熟悉。
特别是sql 里面的多表连接、子查询、各种新版本的函数,以及plsql里面的所有语法。
建议大家拿出足够的时间来研究这两块。
不要认为这是开发人员的工作,他也是DBA的重要工作,而且对DBA的要求更高,你不但能看懂,还要能够找出问题。
学些这方面知识的要点就是:多练、多思考。
2、Oracle管理(体系结构)(这一块一定要听课,而且是要听“大师”的课、多讨论)这是Oracle的难点,Orcle技术博大精深,主要的难点就集中在这里面。
包括Oracle的存储管理、对象管理、内存和进程、undo管理、初始化参数、数据字典视图、安全、latch和lock、权限和角色、资源调度、闪回、日志原理等。
学习这一块知识的时候,一个重点是:要知道原理和“根”,知道表面的东西没有任何意义。
知道原理以后,通过实验去证明,将原理总结出来。
这一块学习的好还是不好,直接决定了以后的一个备份恢复、优化、排错。
这一块虽然是研究管理,但是更加注重原理和体系结构的分析和解剖。
应该叫做“深入剖析Oracle体系结构”,多深都需要。
在这一部分的学习中,已经学习了很多优化的内容,在学习任何一个知识点的时候,我们都离不开对性能的分析。
3、备份恢复(听听课、看几本书,多做做实验、多讨论)有了第二部分的铺垫,这一章的学习相对有意思,前提是我们对Oracle的日志原理研究得较深,对oracle的内存和进程研究得较深。
策划一个完美和正确的备份计划和实施方案(具体要分析出原理),实施备份;对各种损坏进行恢复(还是要能够够分析出原理);另外可以做一些高难度的恢复实验(还是老话、要能够分析出原理)。
Oracle学习笔记oracle 的资源限制概要文件为了控制系统资源的使用,可以利用资源限制概要文件资源限概要文件是oracle安全策略的重要组成部分,利用资源限制概要文件可以对数据库用户进行基本的资源限制,而且还可以对用户的口令进行管理使用资源限制概要文件还可以限制下列资源的使用每个会话和每个语句的CPU时间,每个用户的并发数据库会话每个用户的并发数据库会话每个会话的最大链接次数和空闲时间可以提供线程服务器会话使用的最大的服务器内存使用资源限制概要文件可以对每个制定次概要文件的用户账号进行一下设置,允许用户连续输入错误口令的次数,在此之后oracle将锁定账号口令的过期时间,一天为计算允许用户使用过期口令的天数,这之后将锁定账号是否检查一个口令的复杂性,防止过简口令的使用默认的资源概要文件的所有资源限制设置为无限制的模式schema模式:组织相关数据库对象的一个逻辑概念,与数据库对象的物理存储无关,一个模式只能属于一个数据库用户,而且模式的名称和用户的名称相同即一个模式对应一个用户,并且模式的名字和用户的名字相同oracle数据库的每一个用户都有一个唯一的模式,默认情况下,用户所创建的所有模式对象都保存在自己的模式中。
模式和用户账号是一一对应的一个模式引用另一个模式中的对象,可以使用点表示法,不同模式中的对象名可以重复使用,Scott.emp 即使用用户名.表名的方式进行访问模式对象和非模式对象能够包含在模式中的对象成为模式对象能够在模式中队形有表,索引,触发器不属于任何模式的对象,成为非模式对象,表空间,用户角色,账号,概要文件用户的默认表空间表空间是非模式对象,是数据库的逻辑存储设备,她吧数据库信心租车各位物理存储空间表空间有数据文件组成,用户的各种模式对象,表,索引,触发器,都放置在表空间中若果不给新建用户制定表空间的话,用户的默认表空间为users表空间用户临时表空间一般,一个sql语句在完成认识时需要临时工作空间,例如,一个用来链接和排序大量的查询需要临时工作空间来存放结构,除非例外指令,一般情况下,用户的临时表空间是temp若数据库中没有创建临时表空间,则用户的临时表孔家是system表空间权限管理新建的用户,既不能与数据库服务器链接,也不能作任何的事情,除非给他们相应的执行特定数据库操作的权限oracle中数据库访问权限类型共有两种方式:系统权限:提供执行某种和一种类型的数据库操作能力对象权限:控制用户能否在特定数据库对象中执行特定类型的操作alter any table 更改数据库中的任何表结构create session 创建数据库链接create any table 在数据库中的任何模式中创建表create table 在数据库的自己模式中创建表create view 在自己的模式中创建视图create any view 任何模式中创建视图create type 在用户的自己模式中创建类型create any type 在数据库的任何模式中创建类型create procedure 在用户自己的模式中创建过程create any procedure 在数据库的任何模式中创建过程create trigger 在自己的模式中常见触发器create synonym 创建同义词create sequence 创建序列drop any table删除数据库中的任何表delete any table 删除表中的行execute any procedure执行任何过程execute any type 执行任何类型insert any table 在任何表中插入任何行select any table在任何视图和表中进行查询操作update any table在数据库的任何表中进行更新使用系统权限用户连接到数据库,必须具备连接到数据库的权限,create session权限用户具备的创建任何过程的create any procedure的系统权限后看,则能后创建,删除,执行任何存储过程,程序包和函数用户如果具有create any table的系统权限后,则能后在自己的模式中创建,修改,删除,查询任何表(自己模式中)开发人员一般具有create table,create view,create type的系统权限就可以利用角色进行权限管理角色就是系统权限和对象权限的一个集合,可以将角色授予用户,被属于角色的用户所具有了角色的相应的权限,若角色的权限被修改后,被授予角色的用户的缺陷也会相应的修改常见的数据库对象表:基本的数据存储集合,由行和列组成视图:从表中抽取逻辑上相关的数据集合序列:提供与规律的数值,主要用于提供键值,自动提供唯一的数值索引:提高查询的效率同义词:给对象起别名为表创建序列:create sequence deptincrement by 10start with 120maxvalue 9999nocachenocycle;select sequence_name,min_value,max_value,increment_by,last_number from user_sequence;nextval 返回序列中的下一个有效值,任何用户都可以引用currval 中存放序列的当前值nextval 应该在 currval 的前边,否则会报currval为在会话中错误空值是无效的,未指定的,未知的或不可预知的值空值不是空格或0select employee_id,last_name,hire_date from employees where to_char(hire_date,'yyyy-mm-dd')='1899-01-12';select to_char(salary,'$99,999.00') salary from employees where last_name='ernast';to_char('¥1,234,567,890.00','L999,999,999,999.99') from dual;通用函数,nvl,将空值转换成一个已知的值selectlast_name,salary,nvl(commisson_pct,0),(salary*12)+(qlary*12*nvl(commi ssion_pct,0)) an_sal from employees;nvl2(expr,expr1,expr2) expr如果为空的话,expr2,若果不为空的话则置为expr1select last_name,jon_id,salary,case job_id when 'it_prog' then 1.10*salarywhen 'st_cleark' then 1.15*salarywhen 'sa_rep' then 1.20*salaryelse salaryend 'revised_salary'from employees;select last_name,job_id,salary,decode(job_id,'it_prog',1.10*salary,'st_cleark'1.11*salary,'sa_rep',1.20*salary,salary) revised_salary from employees;select last_name,nvl(to_char(manager_id),'NO MANAGER') from employees where manager_id is null;使用函数对数据进行计算使用函数修改数据使用函数空值一组数据的输出格式使用函数改变日期的显示格式decode case end使用外链接可以查询不满足链接条件的数据select tables1.column,tables2.column from tables1 cross join tables2; select tables1.column,tables2.column from tables1 natural join tables2;select tables1.column,tables2.column from tables1 join tables2 using(column_name);select tables1.column,tables2.column from tables1 join tables2 on (tables1.column_name=tables2.column_name);select tables1.column,tables2.column from tables1 left/right/full/outer/ join tables2 on (tables1.column_name=tables2.column_name);;交叉链接cross join 和笛卡尔集是一样的,会产生大量的无用的数据natural join 自然链接会自动查找匹配的列名,并以列名为条件进行查询,类似与等值链接(where, join on)join on 链接的可读性高,可以进行多表链接select Employee_id,city,department_name from employees e join departments d on e.department_id=d.department_id join locations l on l.location_id=d.location_id;内连接和外连接内链接是指只返回满足链接条件的数据,包括自然链接外链接,两个表在链接过程中除了返回满足链接条件的行以外,还有返回部门条件的左或右的行,这种链接叫做左链接或右链接。
oracle数据库目录oracle数据库 (1)1.oracle简介 (2)1.1 软件素材 (3)1.2 安装oracle软件 (3)1.3 创建oracle数据库 (3)1.4 验证数据库 (10)1.5 切换scott用户 (21)1.6 scott用户表结构 (22)2.SQL语言 (24)2.1 SQL语言分类 (24)2.2 SELECT (24)2.3 字符串拼接 (29)2.4 去重复 (30)2.5 WHERE条件 (30)2.6 ORDER BY排序 (32)2.7 函数 (33)2.8 GROUP分组 (38)2.9 HAVING (40)2.10 表的自关联 (40)2.11 JOIN查询 (45)2.12 SELECT总结 (47)2.13 子查询 (48)2.14 分页查询 (49)2.15 复杂查询 (53)3.ORACLE的系统架构 (56)3.1 系统架构图 (58)3.2 用户管理 (60)3.2.1 表空间 (60)3.2.2 用户创建 (60)3.2.3 新用户登录 (61)4.DDL、DML语言 (65)5.视图 (67)6.序列 (71)7.数据字典 (72)8.索引 (75)9.PL/SQL编程 (86)9.1 helloworld入门案例 (87)9.2 变量 (87)9.3 动态赋值 (89)9.4 变量的分类 (90)9.4.1 简单类型变量 (90)9.4.2 %type类型 (90)9.4.3 record类型 (92)9.4.4 %rowtype (93)9.4.5 table类型 (94)9.5 if分支 (95)9.6 循环分支 (97)9.7 异常 (100)9.8 PL/SQL执行DDL (101)9.9 PL/SQL执行DML (103)10.游标 (105)10.1游标基础知识 (105)10.2游标应用 (109)10.3批量游标 (109)11.存储过程 (112)12自定义函数 (114)13 ORACLE JOB (116)14 JDBC连接oracle数据库 (121)1.oracle简介属于关系型数据库,有很多,如sql server(微软)+.net,DB2(IBM)+电商领域,mysql(早期属于瑞典AB公司---→sun公司收购---→oracle)java领域大多都会使用mysql(中小型项目)或oracle数据库(大型项目)。
Oracle经典自学笔记(doc 34页)一.验证Oracle已经安装完成了,首先得确认程序里有这些个选项,有四个选项:Oracle Installation Products、集成管理工具、配置和移植工具(管理员用得比较多)、应用程序开发。
Oracle也可以形成一种层次性的链接(Directory Manager),对于我们来说用得最多是sqlplus,而OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM),他是微软提出的,在用VB开发时可能要用,对于我们来说不须管。
当启动sqlplus时会提示输入用户名和口令,所谓的sqlplus是Oracle的一个客户端。
Oracle大多数命令都用命令来实现,所以比较难使,就如同unix比windows难使。
口令你输入tiger,建议就用它,因为以后去企业里Oracle 9i就是用的这个口令。
当你看到SQL>命令符时说明已经进入到了Oracle的命令行了。
图形版的sqlplus,命令行的sqlplus,还有一个就是通过网页访问Oracle的服务,启动sqlplus,端口号是5560,URL是它干什么且怎么干。
第四大只用告诉它我要干什么,不用去控制它怎么干,这样的语言学起来当然十分easy。
我们共有四类语句要学:数据操作语言语句[Data manipulation language,DML],会话控制语句[session control statement],数据定义语言语句[Data definition language,DDL]以及事务控制语句[transaction control statement]。
查询语句只有一句话就是select语句,这是最重要的一条语句。
以后只要遇到相应的select 语句一律背过,企业再面试时其他语句一般不会怎么考但这条语句是必考的。
如果考你SQL语句肯定会考这条select语句不是别的。
Oracle的安装:进入u01目录,cd /u01创建目录,mkdir –p app/oracle修改u01目录的权限,chown –R oracle :install /u01修改五个文件的内容,五个文件在帮助文档2.6节修改.bash_profile文件,它在home目录下,cd ~进入进入u01目录,解压oracle,uzip 10201_database_linux32.zip进行解压启动vnc,vncservervi /home/oracle/.vnc/xstartup,修改文件,去除两个#kill掉这个vnc,vncserver –kill :1(这个数字是vnc的号)打开vnc的exe程序,输入ip:192.168.98.11 :1进行连接,前面是ip地址,后面是vnc的id号,(ˇˍˇ) 进入vnc时是database目录下在vnc的exe程序界面,打开终端,进入/u01/databse目录,用ls –l 查看文件,执行./runInstaller执行后可以看到oracle的安装界面选择高级安装选项(第二个选项),点击next后,看到的目录指出安装文件在什么地方选择install database software only先选择只安装数据库软件vnc.exe界面,dbca命令选择general...选项,点击next,设置global database name和sid选择sample schemas设置character sets,选择第三个,再选择utf8sqlplus / as sysdba,进入sql了startup 打开数据库shutdown immediate关闭数据库show parameter sga 查看sga的相关参数alter system set sga_target=150m scope=both 修改参数修改sga_max_size特殊参数时需要先关闭数据库再执行其它操作重点:第一章、第三章、第九章、第二十章20.1、20.3监听、EM、五个数据字典,redo日志等文件索引的种类和意义,优化sql文,分区表,给分区表加索引(分区索引)Oracle Server由例程(instance)和数据库(Database)组成。
ORACLE EBS—Web ADI开发笔记(抽丝拨茧篇)Author:Jarwang(王重东)Create Date:September28th,2009Update Date:Control No:Current Edition: 1.0声明:本文可以任意免费转载、复制、传播。
但您务必保持其完整性!If you copy this document,you ought to keep the document completely.Document ControlModify Record日期作者版本更改参考September28th,2009jarwang 1.0Approved姓名职位签字Distribute编码姓名地点和位置1234IndexDocument Control2Modify Record2Approved2Index3Preface5WEB ADI安装5浏览器设置5EXCEL设置5Web ADI—GL导入6Oracle Web ADI原理10WebADI之VBA分析10VBA实现下拉菜单11VBA实现下拉菜单之事件13WebADI与Oracle通信14Oracle Web ADI权限16职责、菜单、功能16Integrator权限17WEBADI开发权限17配置文件18Oracle ADI客制化开发(一)19Single Table19创建数据库对象19注册表及列19创建程序包20创建Integrator21创建Function23建立Integrator与Function关联23定义Layout25定义Mapping27定义查询条件27使用WEBADI29查询参数使用下拉框30修改Excel的列标题33创建Integrator快捷方式34 Oracle ADI客制化开发(二)37Relation Table37创建数据库对象37注册表及列37创建程序包38创建Integrator40创建Function41建立Integrator与Function关联41定义Layout42定义Mapping43定义查询条件44使用WEBADI45实现excel中的LOV(步骤一)46实现excel中的LOV(步骤二)53实现excel中的LOV(步骤三)60 Oracle Web ADI客制化开发(三)61自行开发Web ADI61创建数据库对象61Other Notes62PrefaceWEB ADI全称是WEB Application Development Integrator,原来是Oracle HRMS模块提供的一个利用浏览器来进行存取的,在服务器段运行的self-service应用程序。
后来经过不断地发展,也可以用于其他模块的数据导入。
现在,我们也可能通过客制化开发ADI,来实现EXCEL与EBS模块通信。
特别是财务人员习惯了excel界面,叫他们使用form,总是可以找出一堆理由。
WEB ADI让他们无话说吧。
呵呵!^_^本文主要是基于EBS11.5.10.2,但在R12.0.4中也能测试通过。
本文参考文档:Oracle Web Applications Desktop Integrator User Guide(bne115ug.pdf)Oracle Web Applications Desktop Integrator Implementation Guide(bne115ig.pdf)WEB ADI安装WEB ADI在具体的EBS版本中配置不尽相同,具体可参考user guide。
例:在R12中,WEBADI是默认安装好的。
又如:在EBS11.5.10.2环境中,WEBADI的职责名:Oracle Web ADI。
在EBS R12.0.4环境中,WEBADI的职责名:Desktop Integration。
浏览器设置Oracle建议你使用IE,事实也可以间接支持firefox,因为ADI生成的Excel会自行调用IE。
EXCEL设置Excel必须安装VBA组件,同时设置如下:Web ADI—GL导入日记帐导入是ORACLE WEBADI本身就开发的模板,可以直接拿来使用。
授权职责,这是肯定的啦。
登陆EBS后,选择Oracle Web ADI职责。
选择create document选择View:如果勾选reporting的话,则无法修改,上传。
选择Intergrator:General Ledger-Journals选择Layout:Functional Actuals-Single选择Conten:None选择Review:Create Document输入日记帐信息,然后选择Oracle菜单upload。
选择Upload。
OK,完成了。
Oracle Web ADI原理坦言,第一次接触Web ADI时感觉只不是个VBA生成器。
偶曾经也主导过一个VB项目的开发,所以对VBA并不陌生。
Oracle WEB ADI架构图:WebADI之VBA分析经过WEB ADI服务端自动生成的Excel文件,打这个excel文件VBA工程,就可以查看到相关的代码。
了解VB的同学们,对下面的代码会感到亲切(事实上,PL/SQL与VB语言的相似程序很高,所以对于PL/SQL程序员来说,也可以看得懂!)。
^_^!如果不想了解VBA的,可以考虑跳过。
上图是excel中的VBA工程的基本结构:对象层(由sheet、workbook构成)、Fomrs(界面)、modules (模块,用于公共变量、过程的声明区)、class modules(类模块,其实就是类啦)。
VBA实现下拉菜单WEB ADI:这个功能是由sheet层BneCreateOracleMenu子过程实现的。
VBA脚本:Public Sub BneCreateOracleMenu()Dim strMenuTitle As StringDim strMenuListOfValues As StringDim strMenuUpload As StringDim strMenuMonitor As StringDim strMenuDownload As StringDim strMenuAbout As StringstrMenuTitle="Or&acle"strMenuListOfValues="&List of Values"strMenuUpload="&Upload"strMenuMonitor="&Monitor"strMenuDownload="&Download"strMenuAbout="&About"On Error Resume NextMenuBars(xlWorksheet).Menus(strMenuTitle).DeleteMenuBars(xlWorksheet).Menus.add strMenuTitle,before:=8With MenuBars(xlWorksheet).Menus(strMenuTitle).MenuItems.add strMenuListOfValues,OnAction:=Application.ActiveSheet.CodeName &".BneDBLClick".MenuItems.add strMenuUpload,OnAction:=Application.ActiveSheet.CodeName& ".BneUploadDocument".MenuItems.add strMenuMonitor,OnAction:=Application.ActiveSheet.CodeName& ".BneMonitor".MenuItems.add"-".MenuItems.add strMenuAbout,OnAction:=Application.ActiveSheet.CodeName& ".BneAbout"End WithEnd Sub调用这个BneCreateOracleMenu,在workbook层的activate事件下。
---------------------------------------------------------------------------------------------------------------------------什么?你不太相信偶?呵呵!以事实说话!*******访谈!^_^1.新建一下excel文件,保留一个sheet即可,删除多余的sheet。
2.打开VBA工程在workbook层的worbook_open()中加入Dim strMenuTitle As StringDim strMenuListOfValues As StringDim strMenuUpload As StringDim strMenuMonitor As StringDim strMenuDownload As StringDim strMenuAbout As StringstrMenuTitle="Oracle ADI"strMenuListOfValues="值列表"strMenuUpload="上传"strMenuMonitor="监视"strMenuDownload="下载"strMenuAbout="&About me"MenuBars(xlWorksheet).Menus.Add strMenuTitle,before:=8With MenuBars(xlWorksheet).Menus(strMenuTitle).MenuItems.Add strMenuListOfValues.MenuItems.Add strMenuUpload.MenuItems.Add strMenuMonitor.MenuItems.Add"-".MenuItems.Add strMenuAboutEnd With3.保存后,重新打开excel。
这下相信了吧。
VBA实现下拉菜单之事件细心的人会注意上述代码中的OnAction。
一点也没错,菜单对应的事件代码就是由它实现。