ORACLE学习心得

时间:2024.5.9

Oracle RAC 学习心得

1. 概念

RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。

在Oracle9i之前,RAC的名称是OPS (Oracle parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC采用了Cache Fusion(高速缓存合并)技术。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache fusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。

2. 优缺点

优点:

Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。 (1)多节点负载均衡;

(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成

的影响最小化; (3)通过并行执行技术提高事务响应时间----通常用于数据分析系

统;

(4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系

统;

(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大

型机,同时节约相应维护成本;

(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。 缺点:

(1)相对单机,管理更复杂,要求更高;

(2)在系统规划设计较差时性能甚至不如单节点;

(3)可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般

按照CPU个数收费)。

3. Rac 特点

每一个节点的linstance都有自己的SGA

每一个节点的linstance都有自己的background process

每一个节点的linstance都有自己的redo logs

每一个节点的linstance都有自己的undo表空间

所有节点都共享一份datafiles和controlfiles

4. Rac 组件

逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cachel

5. UNDO和REDO读书笔记

1) redo是什么?oracle的redo是如何工作的

redo是重做日志文件,是oracle数据库的日志文件.oracle的重做日志有两种:在线重做日志以及归档重做日志。

在线重做日志:主要用于由于数据库主机掉电等原因导致实例失败,此时oracle采用在线重做日志在数据库启动时将数据库恢复到断电之前的时间点上。

归档重做日志:主要用于介质失败,比如:磁盘受损。此时需要使用对磁盘上的数据备份的归挡重做日志文件将该磁盘上的数据恢复到该归档文件数据所在的时间点上,然后再使用在线重做日志文件将适合的时间点上。

归档重做日志文件实质是被添满的旧的在线重做日志的副本。归档重做日志文件是数据库的历史数据。

在线重做日志在每个数据库中至少有两个重做日志组,每个日志组中至少有一个重做日志文件,这些在线重做日志组是循环使用的,

当日志组1被写到最后时,然后自动切换到日志组2;当日志组2也被写满时,再切换到日志组1。

2) undo是什么?oracle的undo是如何工作的

undo与redo相反,redo是恢复数据,用于在事务失败时重放事务,undo是撤消一条语句或者一组语句的作用。undo是存储在数据库内部的段或者表空间中(undo如果是手动管理,则使用undo段来管理;如果undo使用AUM管理UNDO,则undo使用表空间来自动管理)。

注意:在undo并不是物理的恢复到执行语句之前或者事务之前的样子,只是逻辑的恢复到原来的样子,所有修改只是逻辑的取消,但是数据结构和数据块在回滚之后也大不相同。原因是在多用户系统中,有很多事务是并发进行的,当一个事务修改一个数据并且被回滚,但是该数据在该用户对该数据做过修改之后也有被其他用户修改,这个时候如果是对该事务修改的数据块回滚到原来数据的物理样子,就有可能将后来的事务所做的修改给覆盖掉。所以回滚不是

一个简单的物理的恢复,而是逻辑恢复。

3) undo和redo是如何协作工作的

4)

6.


第二篇:ORACLE学习总结


007-01:

Select总结;

一.

1. select语句不区分大小写;

2. select可以跨行。关键字不可以简写,也不可以跨行

3. from可以使用缩进的方式。以增加程序的可读性。

4. isqlplus基于WEB方式,是一种工具。其中的关键字可以简写如:connect可以简写成

conn。

5. 缺省栏位居中,大写

6. sqlplus日期和字符居左。数字栏位居右。

二.

1.加减乘除:

运算优先级是* / + -。

2.null:

是一种不确定的状态,空白。不是空格,既不等于0也不是空值。

如果和其他值做运算。结果都是null。

三.

1.指定栏位的别名:

1.select en ename from scott.emp;

2.select en as ename from scott.emp

3.select en as “ENAME ” from scott.emp (为di了保证大小写。用双引号)

2.连接符:

1.用“||”:

Select ename || ? ?|| dname from scott.emp

2.literral:

Select last_name || ? is a ? || job_id as “Employee Detail” from employee;

3.去掉重复结果:

Select distinct ename from scott.emp

007-02:

一.

1.where条件:

必须写在from语句 之后。

2.where条件中如果引入字符串和日期型数据的话,需要注意:1.这些值必须用单引号

2.单引号里的字符串是区分大小写的。3.日期数据的缺省格式是区分大小写的。

3.比较条件:

Select * from scott.emp where sals >comm.;

2.between 10 and 50意思就是大于10小于等于50而不是大于10等于50

3.in 代表一个离散的取值而不是一个连续的取值。 是一个点一个点的。In (, ,)

4.like 字符模式的匹配。匹配单个字符--

5.is null 表达式是否为空。

4.逻辑关键字:

优先级由高到底:not and or 取反:在相应关键字之前加一个not

运算表达式的优先级:

5.排序:order by 语句:

1.Oracle中缺省是升序asc,降序是desc

2. 用某个栏位的别名进行排序:

Select last_name,department_id,sqlary from employee order by department_id ,salary desc; 其中desc影响的表达式只是紧跟着它的那个字段。也就是说只对salary起作用。

department_id。Department_id是默认的排序方式。也就是升序。

007-103:

函数:

单行函数:函数可以嵌套。包括字符函数。数据。日期函数。转换函数。通用函数。 字符函数:实现字符处理的函数。

字符大小写的函数:

1. lower全部转换小写格式

2. upper全部转换为大写格式

3. initcap:第一个字母大写。其他的都小写。

字符操作的函数:

1. concat:实现连接,和||一样

||:select au_lname|| ??||au_fname from authors;

Concat:

Select concat(au_lname,au_fname) from authors;

2. substr:实现从左往右substr(字节,+-1,n)从左往右从1到5。C/1/-1把一改成-1

若是正数从左往右。负数的话就是从右往左取。Run执行

3. instr: instr(字段,字母)。判断该字母是否包含在该字段中。

Select instr(au_lname ,?g?) from authors;

查看字母G是否包含在au_lname中

结果显示是第5行。第六个字母。

4. lpad:lpad(salary,10,?*?)从左边填充10个长度。不够的话就填充相应的*

5. rpad(salary,10,?*?)同lpad。

6. trim:

数字函数:

1. round:四舍五入的函数。Round(45.926,2) 结果:45.93,round(45.926,-1),指的

是小数点的左边保留多少位。Round(45.926,-1)结果:50 round(45.926,-2)结果:0

2. trunc:截取 trunc(45.926,2) 结果:45.92,将45.926后的6直接去掉,保留2位小数。

3. mod:求模 mod(1600,300) 结果:100

日期型函数处理:

1. 日期函数的缺省是日月年。月为三位

2. sysdate:系统日期:

select (sysdate-ord_date)/7 from dual;

3. months_between:比较两个日期之间现在间隔了多少个月份,

months_between(‘01-sep-95’,‘11-jan-94’) 结果是:19.6774194

意思就是:

4. add_months:在前一个日期型数据之前的天加几个月得到一个新的日期值、

add_months(?11-jan-94?,6)结果是:11-jul-94

94年的一月份加上六个月就是94年的7月份

5. next_day:指定的日期的下一个日期:next_day(?01-sep-95?,?FRIDAY?)结果是:08-sep-95

意思就是:指定当前日期的下一个星期五是什么时候

6. last_day:指定日期的最后一天。Last_day(‘01-feb-95’)结果是28-feb-95

意思就是:95年2月的最后一天是哪一天。

7. round:四舍五入:sysdate是25-jul-95

round(sysdate,?Month?) 结果是01-aug-95

意思就是:25大于日期的一半

round(sysdate,?year?)结果是:01-jan-96

8. trunc:截取:trunc(sysdate,?month?)结果是01-jul-95

9. 从日期加或者减一个数,结果是一个日期值?

10. 两个日期相减,得到两个日期之间的天数?

11. 用小时数除以24,可以加小时到日期上

转换函数:

1. varchar2 or char 转换成number:

2. varchar2 or char 转换成date:

3. number 转换成varchar2

4. date 转换成varchar2:

转换图:

Character 通过 to_number转换成number

Number 通过to_char 转换成character

Character 通过to_date 转换成 date

Datet通过to_char转换成character

日期格式的模式:format_model

1. HH24:MI:SS:AM :15:45:32 PM

2. DD “OF” MONTH:12 of October

3. ddspth:fourteenth

例子:select last_name TO_CHAR(hire_date,?fmDD MONTH YYYY?) as HIREDATE employee

4.

9:

0:

$:转换成美元符号,select to_char(qty,?$999.99? ) from sals;

L:转换成本地货币符号,select to_char(qty,?L999.99? ) from sals;

.:对千位符

,:

4. to_number(char,?format_model?):

5. to_date(char,?format_model?):

6. select to_char(ord_date,?dd-mon-yyyy?) from sals;

通用函数:

1. nvl(表达式一,表达式二):传递字符串是否为空。为空就显示第二个字符串。

Nvl(commission_pct,0)如果commission_pct为空。得到的是0

Nvl(hire_date,?01-JAN-97?)如果hire_date为空。得到的是01-JAN-97

nvl(job_id,?No job yet?)如果job_id为空,得到的是No job yet

2. nvl2(表一,表二,表三) from

3. nullif(表一,表二)

4. coalesce(表一,表二,,,,)

条件表达式:

1. case语句:

select ename,job,sal,case when empno='7369' then sal*1000000

when empno= '7521' then sal*200000

else sal

end from emp;

2.

007-104:

多表处理:通过SQL实现相等或者不等。

1. 多表连接:笛卡尔积,没有给连接条件。任意两行都是相互匹配的。

Select table1.column,table2.column from table1,table2 where table1.column=table2.column; 若同名。就要用栏位别名。

Select t1.stor_id,t1.stor_name,t2.qyt

from stors t1,sals t2

where t1.stor_id=t2.stor_id and t1.stor_name like ?W%?;

2. 多表连接并且出现出现同名栏位的情况下应该怎么区分column:

规则:表名+字段名,为了简化。引入别名的方式。

Select e.employee_id,e.last_name,e.department_id,

d.department_id,d.location_id

from employee e,department d

where e.department_id=d.department_id;

注意:若连接N张表,连接的条件至少是N-1个。

3. outer joins:外连接:

1. 右连接:

select table1.columb,table2.column

from table1,table2

where table1.column(+)=table2,column;()

2.左连接:

Select table1.column,table2.column

From table1,table2

Where table1.column=table2.column(+);

4. self joins:自连接 :一定要用表的别名。

Select t1.su_lname,t1.au_fname,t2.su_fname

From authors t1,authors t2

Where t1.state=t2.state

注意:重复记录:把自己 排除在外:input and t1.au_id<>t2.au_id L run

Sql99国际标准语法:

Select table1.column,tabe2.column

From table1

Cross join table2

Natural join table2

Join table2 using (column_name)

Join table2 on (table.column_name=table2.column_name)

Left/right/full/outer join table2 on (table.column_name=table2.column_name)

5. natural joins:有多个同名的字段对他进行连接:

用using,joins不能实现表的别名。、

6. 三张表的连接至少有两个连接条件、

007-201:

分组求和:

聚合函数:

Select [column] group function from table where condtion group by column order by column Select sum(qty) from sales;

Avg:求平均:

Count:统计:

Max:最大值

Min:最小值

Stddev:

Sum:求和

Variance:

非整张表:

分组求和:

1. select avg(nvl(commission _pct,0)) from employee

2. group by 子句:分组求平均工资:

select department_id,avg(salary) from employee group by department_id;

出现的select中的字段。要么出现的聚合函数的字段里。要么出现的group by语句中,不然会报错。

在where条件中引用聚合函数。

部门工资大于8000:

Select department_id,avg(salary) from employees where avg(salary)>8000

3. Where 条件是相对于select语句的,而对group by的结果集机型过滤的所用的是having

子句的。

4.having子句:先分组求和。然后对分组求和的结果进行过滤。

Select stor_id,ord_num,sum(qty) from sales

Group by stor_id,ord_num

Having sum(qty)>50

多行函数:

1. 聚合函数

2. group by子句:

3. having子句

007-202:

查询:

1. 多行子查询和多行子查询:

Select * from sales where qty >(select avg(qty) from sales)

子查询就是用括号括起来的查询

标准执行只执行一次。子查询和外查询要有关联

Select select_list from table where expr operator (select select _list from table)

子查询的结果作为外查询的条件传递出去的。

1. 子查询一定要放在括号里面。

2. 一定要放在比较运算符的右边。

3. 引用子查询的时候不可以引用order by 子句

4. 根据子查询返回的单行:做为一个表达式出现在任何地方,若返回多行则不能进行比

较。返回一组结果而不是一个结果的时候。

2.单行子查询返回一行(单值)。可以出现的表达式任何地方。

在having子句中也可以引用子查询。

假定子查询返回多行,可以用:in,any,all.

Select from group by having ziduan in(select

否定的是not in,not any,not all.

除非特别需要,否则一般只用join来用做子查询

3.返回空的结果集。

007-203:

1.启动isqlplus工具

007-204:

数据操纵:

1. 每个dml的语法:

Insert into:

Modify:

Remove:

2. 为了保证事务的完整性:

3. insert into:

insert into table [(column[,column…])] values (values[,values]);

一次只能插入一条记录。

Values括号后面的字段需用单引号。

没有指定相应的name,就用缺省。

Null可以做为填充空值的关键字来引用。

往表里添加函数的时候,可以用格式化来填写。

Insert into sales_reps(id,name,salary,commission_pct)

Select employee_id,last_name,salary,commission_pct

From employee

Where job_id like ?%REP%?

Insert into test1 select * from authors where su_id like ?2%?

4.:update:

语法:Update table set column=values[,column=values,….]

[where condition];

注意:根据where条件的不同。可以一次修改一行也可以修改多行记录。

Uodate 条件中如果不加where条件,那么就是对整张表的条件进行改变。

子查询:

Update employee

Set job_id = (select job_id

From employee

Where employee_id=205),

Salary = (select salary

From employee

Where employee id = 205)

Where employee_id = 114;

注意:子查询返回的结果必须是唯一的。

4. delete记录:

delete [from] table [where condition];

如果不给delete加where条件的话就是对整张表删除。

以另外一张表的条件做条件:

Delete from employee where department_id = (select department_id from departments where department_name like ?%public%?)

删除数据也会考虑数据完整性的问题。

当主键在另一个表中的时候为了保证数据的完整性是不可以删除数据的。

158xxxxxxxx、135xxxxxxxx、131xxxxxxxx

5. merge合并语句:

语法:

Merge into table_name table_alias

Using(table/view/sub_query) alias

On (join condition)

When marched then

Update set

Coll = col_vall,

Col2 = col2_val

When not matched then

Insert into(column_list)

Values (column_values);

139xxxxxxxx梁

007-301:

创建表:

创建表所修改的数据类型。

2. 表名:

标准命名方式:

1. 开头必须是字母

2. 长度必须在1—30之间

3. 必须包含大小写字母,下划线,0-9的数字、到了符号和#号。

4. 不可以引用关键字或者是保留字

非标准的命名方式:

1. 若不满足以上标准命名方式的话就引用双引号create table “test-1”

2.创建表:

1,权限

2.default约束:往表里填新词。在对应的条件上没有显示值、要么返回是常量。要么返回系统值。

Select table [schema.] table (column datatype [default expr] [,…])

2. 数据字典视图:

三类:

1. 可以查看所有对象信息的:以dba_开始的一类

2. 当前用户可以访问的数据对象的信息的:以all_开始的一类

3. 只可以看到自己的这一类的信息的:以users_开始的一类

数据类型的认识:

1. 数据类型和日期类型:

子查询:需要保存select结果集

Desc 查询表结构

2. varchar,char ,number(p,s)

date

long

clob

raw and long raw:图像

blob:二进制大的数据类型

3. 两张表之间成批的拷贝:

Create table [(column,column)] as subquery(子查询)

4. 修改表结构:

添加:Alter table table add (column datetype [DEFAULT expr]) [,column

datetye]

修改:Alter table modify (column datetype [DEFAULT expr]) [,column datetype] 删除:Alter table table drop (column).必须加一个column

5. 写回滚信息:Alter table table set unused(column)

Or

Alter table table set unused column column

删除:alter table table drop unused column,删除表中没有用到的column

6. 对表重命名:

Rename 旧表名 to 新表名

7. 清除一张表:

Truncate table 表名

高效的清空表,没有做日志记录。清空了就找不回来了。

8. 添加注释:

Comment on table tablename is ? 注释内容 ?;

在数据库里可以查找到的注释:

All_col_comments

User_col_comments

All_tab_comments

User_tab_comments

007-302:

保证逻辑规则的完整。

关于constraints 的定义

1. not null

2. unique

3. primary key

4. poreign key

5. check

定义约束条件时:

1. 给约束条件命名。

约束条件是作为表结构的一部分存在的。

待看。

007-303:

在oracle中创建视图:

1. 视图本身是一个逻辑结构。本身不包含任何数据。

2.视图的各种操作。是一个命了名的select语句。

3.select 中不能出现:

1.order by

2.不能出现伪劣

3.视图就相当与一个眼镜

4.语法:

Create or replace view 11.

更多相关推荐:
ae学习心得

1在合成窗口的右上角有一个叫做工作区这个里面会显示一些字体这个字体表示的就是当前窗口的显示名称是那种形式的窗口另外就是自己新建的窗口的名字也会出现在这里面如果你觉得可以改变的画你就可以进行改变另外也可以对于新建...

AE学习心得

AfterEffect学习心得AfterEffect简称称AE是adobe公司开发的一个视频剪辑及设计软件AdobeAfterEffects是制作动态影像设计不可或缺的辅助工具是视频后期合成处理的专业非线性编辑...

AE CS5.5 特效学习心得

AECS55特效学习心得1Generate14ColorGradient四色渐变这个效果可以加4个颜色比ramp多两个颜色添加效果在最后面可以添加层模式2AdvancedLightning高级闪电这个效果可以做...

新人实习自学心得:AE上岗篇(软件)

新人实习自学心得:AE上岗篇(软件)20xx-02-1900:36:19|分类:默认分类|字号订阅前一阵突然忙的厉害,总想起一个走掉的前辈说的,广告么,就是忙一阵闲一阵。在这个行业里工作了几年,我觉得好象是突然…

after effectsAE学习经验谈

AE学习经验谈今天就来和大家说说如何学习AE以及学习AE的一些方法在很多群里很多论坛里发现很多朋友在学习AE的过程中都有一个很严重的问题同时也包括我自己今天学会了过几天又忘了没有好的学习方法几个月下来还是在园地...

视频制作学习心得

视频制作学习心得视频制作学习心得一视频制作学习心得学无止境作为两委的干事更应该树立活到老学到老的学习态度视频制作和ppt制作一样是两委干事必须具备的一项基本技能只有学好视频制作才能更好地完成自己分内的工作才能更...

学习CS程序设计的心得体会

一、只有通过大量的实践才能不断的培养编程感觉b编程是有感觉的,就好象英语阅读一样,是有语感的d每天都要编写代码,不断培养编程感觉e没有实践的理论是空虚的理论f没有理论的实践是盲目的实践g实践是检验真理的唯一标准…

openWRT学习心得

openwrt学习OPENWRT学习总结目录Openwrt编译及烧写3Buildtex3Buildinganimage3DownloadOpenWrt3Thedirectorystructure3tools和t...

EMBA阶段总结论文-情境领导在管理中的实践应用

全国医药行业工商管理硕士EMBA研修班毕业总结情境领导在管理中的实践应用姓名全国医药行业工商管理硕士EMBA研修班20xx年6月第1页共16页目录1组织简介2对现有状况问题及原因的描述3研究与分析a文献b企业实...

企业家读EMBA究竟收获了什么?

企业家读EMBA究竟收获了什么只有高层管理者掌握现代管理知识整个企业的管理现代化才会由上而下地全面推行老总一个人读了EMBA这相当于整个单位的人都读了EMBA因为企业主要决策人掌握了先进的管理理念以后他所带给企...

形象礼仪个人学习心得体会

形象礼仪个人学习心得体会学了这门课程我了解到人的形象如同一个店铺的门面一个人的个人形象的好坏直接决定着你人际交往的成败个人形象是通过自己的努力不断地充实和提高自身的道德修养通过他人而反映出来的生活中我们常常听到...

学习代建荣心得体会

学习代建荣心得体会郑存龙通过学习代建荣的先进事迹后我深受感动代建荣是昆明市五华区新萌学校体育教师从事智障体育教学19年在学校的培养下不断钻研业务知识探讨特教规律克服学生病因复杂运动能力极其低下教材内容满足不了学...

ae学习心得(10篇)