一.准备工作

1.建立基本调试环境

Create demo schema(建立演示模式)

sqlplus>start $ORACLE_HOME/sqlplus/demo/demobld.sql

2.建立login.sql

以下是引用片段:

define_editor=vi

set serveroutput on size 1000000

set trimspool on

set long 500

set linesize 100

set pagesize 9999

column plan_plus_exp format a80

column global_name new_value gname

select lower(user)||'@'||decode(global_name,'WEBDB.FANYAMIN.NET','webdb',global_name) global_name from global_name;

set sqlprompt '&gname>'

set termout on

3.在sqlplus中配置AutoTrace

1)cd $ORACLE_HOME/rdbms/admin

log into sqlplus as system(connect system/manager@webdb)

run @utlxplan

run create public synonym plan_table for plan_table;

run grant all on plan_table to public;

2)

cd $ORACLE_HOME/sqlplus/admin

log into sqlplus as sys(connect sys/change_on_install@webdb)

run @plustrce

run grant plustrace to public;

二.内容

1.开发成功的Oracle应用程序

一条简单秘诀

if(possible) 就用单条SQL语句完成

else if(possible) 用plsql程序

else if(possible) 用java存储过程

else if(possible) 用C外部过程

else 考虑是否真有必要这样做

两个指导方针

1)不要在MTS下运行长事务<45s

2)使用绑定变量

system@webdb>altersystem flush shared_pool;

system@webdb>settiming on

执行这两个sql文件,一比较,发现使用绑定变量后,速度快多了

以下是引用片段:

--bindtest1.sql, did not use bind variable

declare

type rc is ref cursor;

l_rc rc;

l_dummy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

begin

for i in 1..1000

loop

open l_rc for

'select object_name from all_objects where object_id='||i;

fetch l_rc into l_dummy;

close l_rc;

end loop;

dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');

end;

/

--bindtest2.sql, use bind variable

declare

type rc is ref cursor;

l_rc rc;

l_dummy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

begin

for i in 1..1000

loop

open l_rc for

'select object_name from all_objects where object_id=:x'

using i;

fetch l_rc into l_dummy;

close l_rc;

end loop;

dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');

end;

/

Oracle封锁策略

Oracle体系结构的3个主要组件:

1.文件:组成数据库实例的5个文件(参数文件,控制文件,数据文件,临时数据文件,重做日志文件)

2.系统全局区域SGA( System Global Area): Java池,共享池等

3.物理进程与线程: 在数据库上运行3种不同类型的进程(服务器server进程,后台backgroud进程,从属slave进程)

术语解释:

数据库: 物理操作系统文件的集合

实例: 一组oracle进程和SGA

二者关系:

一个数据库可以被多个实例装载mount和打开open

实例可以及时地装载并打开一个单独的数据库,被实例打开并装载的数据库在启动时不必相同

文件:

1.参数文件:

TNSNAMES.ORA, LISTENER.ORA,SQLNET.ORA, PROTOCOL.ORA,NAMES.ORA, SMAN.ORA, LDAP.ORA

(refer to "Oracle Net administrator Guide")

$ORACLE_HOME/DBS/int.ora: 内容为一系列的变量名和值对

such as:

db_name="wmdb"

db_block_size=8192

control_files=("c:\oradata\control01.ctl","c:\oradata\control02.ctl")

...

其中有一些在Oracle文档中没有说明的参数以下划线开始

除了在开发环境中设置_TRACE_FILES_PUBLIC=TRUE这个参数外,其他没有说明的参数最好不要改动

2.数据文件:

数据库database-->表空间tablespace-->segment段-->extent扩展区-->block块

1)数据库由一个或多个表空间组成

2)表空间由一个或多个数据文件组成,一个表空间有一个或多个段

3)一个段(表,索引等)由多个扩展区组成,段存在于表空间中,但在表空间中可有多个数据文件中的数据

4)一个扩展区是在磁盘上一些连续分配的块,一个扩展区在一个表空间中,而且总是表空间中单一的文件

5)块是数据库中最小的分配单元和I/O单元,它的大小在数据库创建时就固定下来了

3.临时文件

当内存不足以保存一个大规模排序操作的中间结果(集),Oracle用临时文件来存储它们,永久数据,如表或索引是不会存储到临时文件中的,但临时表或临时索引的内容则可能存储到临时文件 中。

推荐用本地管理临时表空间来配置数据库???,例

以下是引用片段:

create temporary tablespace temp

tempfile 'c:\oracle\oradata\walter\temp.dbf'

size 5m

extent management local

uniform size 64k

4.控制文件

一个相当小的文件,至多为64M,包含Oracle需要的其他文件的目录

数据文件init.ora告诉实例控制文件 的位置

控制文件则把数据库和联机重做日志文件的位置告诉实例

控制文件也向Oracle提供其他信息,如检查点,数据库名称,数据库创建的时间戳,归档重做日志历史等

5.重做日志文件

数据的事务日志,仅在恢复时才使用

1)联机重做日志

2)归档重做日志

cd oracle home/dbs,Oracle专家高级编程学习笔记相关推荐

  1. 【C#8.0 and .NET Core 3.0 高级编程学习笔记】

    @C#8.0 and .NET Core 3.0 高级编程学习笔记 前言 为了能精细地完成对C#语言的学习,我决定选择一本书,精读它,理解它,记录它.我想选择什么书并不是最重要的,最重要的是持之以恒的 ...

  2. Windows高级编程学习笔记(一)

    写在前面的话 之前学的Windows编程都是界面啊.网络编程啊之类的纯应用层面的东西,总是感觉而自己没有达到自己期望中的水平.什么水平呢?如果让你编写监控系统资源的工具,或者DLL注入相关软件,或者底 ...

  3. c++高级编程学习笔记4

    C++运算符重载 运算符重载概述 根据第 1 章的描述,C++中的运算符是一些类似于+.<.*和<<的符号.这些运算符可应用于内建类型,例如 int 和 double,从而实现算术操 ...

  4. c++高级编程学习笔记5

    multimap multimap 是一种允许多个元素使用同一个键的 map.和 map 一样,multimap 支持统一初始化.multimap的接口和 map 的接口几乎相同,区别在于multim ...

  5. Unix环境高级编程学习笔记(七) 多线程

    线程概述 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的Unix也支持线程的概念,但是在一个进程(process ...

  6. Windows高级编程学习笔记(二)

    第三章 进程 发现这本书的文字很简练,知识点突出,而且翻译的基本没有拗口的地方,是本好书,(^o^)/~ 下面进入正题. 关于内存映射 Windows内存管理的分页机制在微机原理课程中有提到,后面的章 ...

  7. javascript高级编程学习笔记(二)——继承

    2019独角兽企业重金招聘Python工程师标准>>> 写读书笔记的好处在于加深记忆,前一篇总结了编程中创建的对象的几种方式,以及常用的方式,这一篇总结实现继承的方式: 1.对象冒充 ...

  8. Unix环境高级编程学习笔记(一)

    第二章 文件I/O 1.文件描述符   对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数.   Unix shell使用文件描述符0表示标准输入,1表示标准输出,2表示标准出 ...

  9. 高级编程学习笔记day01(知识点篇)

    文件IO学习笔记 1. 文件描述符:所有打开的文件都通过文件描述符引用.     文件描述符0与进程的标准输入关联     文件描述符1与进程的标准输出关联     文件描述符2与进程的标准错误关联 ...

  10. Windows高级编程学习笔记(三)

    第四章 线程 知识要点 每向系统获取一个句柄,会使相应对象的引用计数加1.而GetCurrentProcess()函数返回的是一个伪句柄,也就是不增加引用计数,相当于赋值拷贝.对应于线程,有GetCu ...

最新文章

  1. C++(九)——职工信息管理系统
  2. 流言终结者:大数据工程师真的做不过35岁吗?
  3. Halcon: 畸变矫正与标定(1)
  4. 爬虫521错误(又是一次和可爱的前端vs的故事)
  5. c++ 删除文件_win7 系统电脑C盘哪些文件可以删除掉?
  6. bc -- The Linux Command-line Calculator
  7. dataframe转化为array_Pandas入门教程:如何将列表转化成数据框?
  8. Azure KUDU工具
  9. Oracle EBS之把自定义concurrent加入Pick Release Document Set(All Pick Release Documents)的几个注意点...
  10. linux进程管理概念,Linux教程之进程的概念和进程管理命令的使用
  11. Oracle1518,redhat 5.4 Oracle 10g r2
  12. 【游戏】基于matlab GUI时钟设计【含Matlab源码 1102期】
  13. ccfb类会议有哪些_CCF推荐的国际学术会议和期刊目录修订版发布
  14. 虚拟现实的伦理问题----陈教授讲座听后感
  15. 三大微分中值定理和洛必达法则、泰勒公式
  16. 外汇基础知识学习3--平仓
  17. Office Excel2010保存新文件时出现未响应或者卡死的解决办法
  18. am5728通过DM框架配置GPIO管脚
  19. python crc16-ccitt
  20. 【山外笔记-计算机网络·第7版】第10章:计算机网络重要概念

热门文章

  1. HAXM 6.0.5显示不兼容Windows
  2. android开发学习---开发一个简易的短信发送器
  3. vmware vcenter 4.1升级到5.0
  4. SQL Server 2008 存储结构之DCM、BCM
  5. Linux 重启命令
  6. NullableTypes for .NET
  7. Linux --- 常用命令
  8. ORACLE 12c RAC的常用管理命令
  9. 阿里云推出香港高防IP服务 为中国企业出海安全护航
  10. sdut3138: N!(计算n!中结尾零的个数)