- 博客(56)
- 资源 (3)
- 收藏
- 关注
原创 在视图上创建约束
只有逻辑约束(logical constraint)(即由用户声明而非 Oracle 强制的约束)可以在视图上定义。定义在视图上的约束不是为了保证业务规则的正确,而是为了识别多维数据(multidimensional data)。以下约束可以定义在视图上:主键约束(Primary Key constraint) 唯一约束(Unique constraint) 引用完整性约束(Referen
2012-04-23 06:22:19
1689
原创 oracle 还原点
一、关于还原点 在数据库的恢复中经常需要把数据库或者表等恢复到过去的某个点,比如recover database until scn,flashback table table_name to scn,这时可以使用还原点。 还原点即为scn的别名,它与创建还原点时刻的scn相对应,我们在恢复操作中使用该还原点。 还原点可以用于以下操作: 1、flashabck table
2012-04-23 06:21:44
4198
转载 oracle流
对于想要集中数据审计函数以创建通用审计过程的开发者,也许就该考虑使用Oracle流。我们要一个数据审计表,保存对数据库进行的所有修改。这个数据库范围的审计表可用于多进程,它会引发一些性能问题(这已超出本书范畴),但这些问题可通过调整对象存储参数来减轻。集中式数据审计跟踪将包含一个主表和一个附表,命名为AUDIT_TRAIL_1和AUDIT_TRAIL_2。AUDIT_TRAIL_1如下:
2012-04-12 06:31:25
705
原创 闪回数据库(flashback database)
一、配置闪回数据库 1、快闪恢复区 设置db_recovery_file_dest_size alter system set db_recovery_file_dest_size=ng --n为数值大小,g为单位 设置db_recovery_file_dest alter system set db_recovery_file_dest='/u0
2012-04-10 22:42:44
856
原创 可移植表空间
一、选择可移植表空间 要想移植表空间,该表空间必须是自包含的。 使用下列方法查看表空间是否为自包含 begin dbms_tts.transpoort_set_check('TABLESPACE_NAME',true); end; 如果没有返回错误,则表空间为自包含的。 当然如果表空间是非自包含的,也可以在导出时使用命令行参数transport_full_
2012-04-10 22:42:15
691
原创 闪回删除(flashback drop)
在oracle中删除对象时,这些对象以及他们的依赖对象并没有立即删除,而是更名之后临时呆在原地,oracle将尽可能地保存他们。直到遇见以下情况才彻底删除他们: 1、用户使用purge命令删除他们。 2、空间不足时,oracle为了回收空间自动彻底删除他们。 在以下情况,对象不经过回收站而是直接删除对象: 1、drop user username cascade -
2012-04-10 22:41:14
694
转载 oracle增量更新备份
增量更新备份Run { Recover copy of database with tag 'Orcl'; Backup incremental level 1 for recover of copy with tag 'Orcl' database; } 第一次执行 创建镜像拷贝(失败 因为还没有 tag 'Orcl' 的备份信息 ) 备份 level 1
2012-04-10 22:40:44
1487
原创 DML复合触发器
将行级和语句级触发器放在一个触发器中,即为复合触发器比如:create or replace trigger trigger_namefor insert or update on scott.deptcompound triggerv_var number(2):=1; before statement isbegindbms_output.put_line(
2012-04-10 22:40:10
1084
原创 在oracle sql语句中调用pl/sql函数应注意的问题
用户自定义的函数要想能够在sql语句中使用,必须满足下列条件: 1、函数的所有参数必须为in模式。 2、函数的参数数据类型和返回值的数据类型必须为oracle数据库可以识别的。一些专门在pl/sql中使用的数据类型时数据库不能识别的。 3、函数必须保存在数据库中,在客户端pl/sql环境中定义的函数没有办法被sql语句调用。在sql语句中使用自定义函数的限制: 1、函数
2012-04-01 21:49:00
5054
原创 有关用户外部认证的问题
一、关于普通用户的外部认证与普通用户外部认证的两个参数:os_authent_prefix和remote_os_authentos_authent_prefix设置在创建外部用户时的前缀,默认值为:ops$,即当os用户为hp时,我们可以在数据库上创建外部用户为ops$hpcreate user ops$hp identified externally;remote_os_auth
2012-04-01 21:47:46
1181
原创 数据库审计
一、审计指导方针:1、最小化审计选项,降低跟踪文件个数 2、移动审计表sys.aud$到其他表空间(默认为system表空间) 3、定期删除跟踪记录 4、避免审计跟踪记录被非法用户删除(具有delete_catalog_role角色,可删除跟踪记录)审计分类:特权用户审计 标准审计
2012-04-01 21:47:19
642
原创 包的串行化
默认情况下,包具有会话持续性(或者直到包被重新编译),包的这种特性可能会带来一些问题: 1、导致无法预料的错误,比如使用包中的游标而未关闭,这样再以后程序中打开这个游标时会出现‘游标已经打开’的错误。 2、可能占用大量内存。 使用包的串行化:把包状态的声明周期从会话减少到一个程序的调用。 如何使用包的串行化?在包规范和包体中同时使用serially_reusable。
2012-04-01 21:46:53
408
原创 创建DML触发器
创建DML触发器 create or replace trigger trigger_name before | after --指定触发器在出发时间之前还是之后触发 insert on scott.table_name
2012-03-30 18:40:23
966
原创 pl/sql中的前置声明
前置声明 在pl/sql中必须先声明一个程序,然后才能使用这个元素。但如果程序a调用程序b,而程序b又调用程序a,那么该怎么声明呢?可以使用前置声明。也即先生命两个程序的块头部分,然后在给出模块的真正定义。前置声明可以使程序在定义之前被调用。 规则:1、不能对变量和游标进行前置声明,只针对过程和函数。 2、前置声明必须位于pl/sql块的声明部分 比如:pr
2012-03-30 17:12:39
570
原创 pl/sql模块重载
模块重载 多态:语言能够定义并且选择性的使用多个相同名称的程序中的一个的能力。 静态多态:在编译时刻决定使用哪个程序。重载即为静态多态。 动态多态:在运行时刻决定使用哪个程序。 pl/sql支持在块的声明部分,包的声明部分和包体部分,对象类型的定义中对过程和函数进行重载重载的限制: 1、重载的程序的参数中至少一个来自不同的数据类型 参数的数据类型不同但只
2012-03-30 17:12:10
842
原创 pl/sql中的局部块
局部模块局部模块:在pl/sql块(匿名或者命名块)的声明部分定义的过程或者函数。这种块只能在pl/sql块的内部被调用,不能被外部块调用。并且在定义局部块时,必须位于变量、常量、游标,异常、类型、记录等之后。比如:declare procedure proc_name (date_in in date) is begin
2012-03-30 17:11:50
411
原创 oracle权限
一、系统权限: 授予系统权限 要想授予其他用户或者角色系统权限,需要满足下列条件之一: 1、具有grant any privilege权限 2、用户被授予权限时带有admin option选项 grant system_privilege to user_name [with admin option] --可以同时给用户或者角色授予多
2012-03-30 17:11:22
3158
原创 资源管理器
一、资源管理器(DRM)由三个要素组成:资源消费群(resource_consumer_group)资源计划(resource_plan)资源计划指令(resource_plan_directive) 执行与DRM有关的操作,必须具有 administer_resource_manager 系统权限。 二、未决域(pending area)DRM的三个要素都必须创建
2012-03-30 17:10:58
974
原创 函数
函数的结构: function [schema.]function_name [(parameter [, ...])] --参数列表 return return_datatype --返回数据类型 [authid {definer | current_user}] --指定使用定义者权限还是调用者权限 [dete
2012-03-30 17:09:24
341
原创 过程
一般格式 create procedure schema.proc_name [(parameter [, ...])] --参数列表 [authid {definer | current_user}] --指定是使用定义者权限模型还是调用者权限模型 is [declaration] --声明部分
2012-03-30 17:08:55
276
原创 归档模式
一、归档模式与非归档模式 当数据库处于非归档模式,日志发生切换,需要新的日志文件时,oracle将覆盖日志文件中的内容。在数据库发生灾难时,oracle只能使用备份,无法使用归档日志和联机重做日志使数据库赴会到最新状态。 当数据库处于归档模式,oracle在覆盖日志文件中的内容之前,将日志写入归档日志中予以保存。这样在数据库发生灾难时,可以使用归档日志和联机日志吧数据库恢复到最新
2012-03-28 18:18:47
448
原创 管理用户
管理用户一、默认临时和永久表空间 可以在数据库指定默认的临时表空间和默认的永久表空间,这样在没有为用户指定默认临时表空间和默认永久表空间时,使用它们作为用户的默认临时表空间和默认永久表空间。当然也可以在创建用户时指定它们或者创建用户之后更改它们。 更改数据库默认临时表空间和默认永久表空间: alter database default tablespace tbs_name;
2012-03-28 18:18:21
334
原创 概要文件
概要文件一、参数 1、资源参数 现在很少使用概要文件来限制用户对资源的使用,主要把概要文件用来实施密码策略。 cpu_per_call:事务内每个调用使用的cpu的时间 cpu_per_session:会话中使用的cpu的总时间 logical_reads_per_call:每个调用总的逻辑读取数 logical_reads_per_se
2012-03-28 18:17:10
581
原创 参数文件
一、服务器参数文件和初始化参数文件 1、服务器参数文件 名为:spfile$oracle_sid.ora,由数据库自行维护的二进制文件,一般不允许手工修改。 可以动态修改,并写入参数文件中,数据库重之后继续有效。 数据库默认使用服务器参数文件。 2、初始化参数文件 名为:init$oracle_sid.ora,是文本参数文件,可以手工修改。在动态
2012-03-28 18:16:21
734
原创 可恢复的空间分配
一、用户需要具有resumable权限 grant rsumable to user_name二、启用可恢复的空间分配 1、爱系统级启用:alter system set resumable_timeout=n --当用户的操作由于空间不足时可以挂起n秒,n秒内解决问题后操作继续进行。 2、在会话级启用 alter session enable resumable
2012-03-25 15:58:48
653
原创 数据库的启动与关闭
从SQL*PLUS中启动和关闭数据库一、启动数据库 在启动数据库时,oracle在$ORACLE_HOME/dbs(linux)或者%ORACLE_HOME%/database(windows)中按照下列顺序寻找参数文件: spfile$oracle_sid.ora spfile.ora init$oracle_sid.ora 如果想使用自己指定的参数文件启动数据
2012-03-25 15:58:24
518
原创 模块中的参数问题
一、定义参数 在模块头部定义参数 如:procedure proc_name(para_name in datatype [{:=value | default value}] [, ...]) 1、para_name为参数名 2、in 为参数模式,参数模式有in,out,in out 3、datatype为数据类型,该数据类型不受约束,也即只有数据类型的名称,不能有
2012-03-25 15:57:48
814
原创 oracle并发控制
数据库采用锁定、时间戳、基于验证的事务调度等方法进行并发控制。 锁定是悲观方法,而时间戳方法和基于验证的事务调度是乐观的方法。 锁定比乐观的方法需要更长时间的延迟,但不终止事务。乐观方法需要终止事务。 时间戳方法为每一个事务分配时间戳,并保证事务的时间戳和事务的时间表相匹配来强制实施串行化。 验证方法维护事务的一个活动记录,在提交一个事务之前,针对所有当前活动事务的更改,验
2012-03-24 21:32:17
875
原创 闪回
闪回包括:闪回查询、闪回版本查询、闪回事务查询、闪回表、闪回删除和闪回数据库 其中前四个需要使用插销数据,这里主要先介绍着四个。 如果经常使用闪回操作,则建议使用有保证的撤销保留,要不然可能会收到‘快照太旧’的错误。一、闪回查询 查询数据在过去某个时刻或者某个SCN处的一个旧版本。 要对对象闪回查询,需要用户具有对象上的flashback权限,或者具有flashback
2012-03-23 06:28:20
456
原创 自动撤销管理(AUM)
一设置AUM 设置自动撤销管理,涉及三个参数:undo_management、undo_tablespace、undo_retention 1、undo_management 设置自动撤销管理,必须设置初始化参数undo_management=auto alter system set undo_management=auto scope=spfile; 该参数也是必
2012-03-23 06:27:45
1757
原创 锁
一、oracle锁的特点 1、oracle自动施加和释放锁 2、oracle默认使用行级锁 3、oracle默认把锁的信息放在数据块中 4、oracle不支持锁的升级 5、锁在事务中使用,事务结束后oracle释放锁;如果事务撤销到保存点,则保存点之后的操作持有的锁被释放。 6、任何oracle锁模式都不影响select,反之亦然。二、锁定的对象 1、
2012-03-23 06:26:50
335
原创 并发性与隔离级别
一、并发性带来的问题 1、脏读(dirty read) 2、幻读(phantom read) 3、更新丢失(lost update) 4、不可重复读(nonrepeatable read)二、隔离级别 1、串行(serializable):不会出现任何并发性问题 2、可重复读(repeatable read):可能出现幻读 3、已提交读(read co
2012-03-23 06:25:58
836
原创 commit和rollback
一、oracle事务 oracle在第一个可执行sql语句开始时,隐式地开始一个事务,遇到以下情况时结束事务: 1、commit:整个事务的所有更改永久保存 2、rollback:撤销事务所做的更改 3、DDL语句:执行DDL语句时,oracle隐式提交之前事务所做的更改。 4、程序正常结束:oracle隐式提交 5、程序失败:oracle隐式rollback
2012-03-23 06:25:19
9078
原创 oracle 角色
1.建一个角色sql>create role role1;2.授权给角色sql>grant create any table,create procedure to role1;3.授予角色给用户sql>grant role1 to user1;4.查看角色所包含的权限sql>select * from role_sys_privs;5.创建带有口令以角色(在生效带
2012-03-23 06:20:56
377
原创 约束、同义词、序列
一、约束 1、、约束分类 (1)、非空约束(not null) 在创建表时创建:column_name data_type [constraint constraint_name] not null --只能在列级指定,不能在表级。 在更改表时创建:alter table table_name modify column_name not nul
2012-03-23 06:16:52
1387
原创 索引概述
一、创建索引的原则 检索数据不超过表中数据的10%或15%时,创建索引 相对较小的表不宜创建索引 对包含在表连接操作中的列创建索引 对在where子句中频繁使用的列创建索引 对包含在order by和group by或者涉及排序的union和distinct等其他操作中的列创建索引 有长字符组成的列不宜创建索引 被频繁更改的列不宜创建索引 对表中选择
2012-03-23 03:11:09
319
原创 特殊表
一、临时表 1、特点: 不能备份临时表 oracle不会分析临时表 可以在临时表上创建索引 可以在临时表上创建约束 创建临时表之后不会立即分配段,而是在第一次写数据之后分配 临时表对所有用户共享,但每个用户只能看到自己事务或者会话的数据 可以对临时表进行insert、update、delete操作 锁的数量少
2012-03-23 02:38:18
316
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人