Oracle 学习笔记 (七)
一、数据库的启动
启动数据库的三个阶段: nomount, mount,open
mount 阶段:.
1.读参数文件
2.分配内存
3.启动后台进程
4.初始化部分v$视图
mount 阶段:
读参数文件中的控制文件 --> 校验控制文件的正确性 --> 将控制文件的内容加载到内存
mount 是挂载的意思,将一个没有实际意义的实例挂载到任意数据库。控制文件包含: 数据文件和日志文件
Open 阶段:
读取控制文件中的数据文件 ---> 验证数据文件的一致性,(如果不一致,使用日志文件将数据文件恢复到一致状态)--> 数据库 open 后,普通用户才能访问数据库
二、数据库的停止
Shutdown NORMAL
- 新的会话不接受
- 等待非活动的会话结束
- 等待事物结束
- 产生检查点
- 停止数据库
Shutdown TRANSACTIONAL
- 新的会话不接受
- 不等待非活动的会话结束
- 等待事物结束
- 产生检查点
- 停止数据库
Shutdown immediate
- 新的会话不接受
- 不等待非活动的会话结束
- 不等待事物结束
- 产生检查点
- 停止数据库
Shutdown abort
- 新的会话不接受
- 不等待非活动的会话结束
- 不等待事物结束
- 不产生检查点
- 停止数据库
一致性 shutdown,产生检测点
- Shutdown NORMAL
- Shutdown TRANSACTIONAL
- Shutdown IMMEDIATE
- 数据库再次启动的时候不要恢复
不一致性 shutdown,不产生检测点
- Shutdown abort
- Startup force
- Instance 崩溃(停电)
- 数据库再次启动的时候需要恢复,自动的,透明的
conn sys/sys as sysdba
Shutdown abort;
Startup nomount;
select instance_name,status from v$instance;
alter database mount; -- 切换到 mount
alter database open -- 打开数据库 Open
三、oracel 数据库的创建
一般通过板库创建,板库位置: %oracle_home%\assistants\dbca\templates 目录下
数据字典的创建
在创建数据库时,数据字典是自动创建的,数据字典的位置:%oracle_home%\rdbms\admin\catalog.sql v$ 的字典是数据库在启动时初始化的
数据库字典的使用
- 数据库自己使用字典获取信息
- 数据库自动维护
- 查看字典获取数据库的相关信息
查看oracel 安装的实例(数据库)
select instance_name from v$instance;
四、 触发器
触发器的类型
- 行级触发器 FOR EACH ROW: 受影响的每一行都会执行触发器
- 语句触发器 :默认的模式,一句话才执行一次触发器
何时触发
- BEFORE 在条件运行前触发
- AFTER 在条件执行后触发
- INSTEAD OF 替代触发,作用在视图上
触发器的创建
CREATE or replace TRIGGER 触发器名
AFTER delete or update of 字段 ON 表名
FOR EACH ROW
BEGIN
IF(UPDATING AND :old.字段名 != :new.字段名)
THEN UPDATE E
SET 字段=:new.字段名
where 字段=:old.字段名
END IF;
IF deleting THEN
delete e where 字段= :new.字段名;
end it;
END;
/
查看 触发器的状态
select trigger_name,status from user_triggers;
禁用触发器
alter trigger 触发器名 disable;
禁用某个表上的所有触发器
alter table 表名 disable all triggers;
删除触发器
drop trigger 触发器
五、函数
- 函数是有名称的 pl/sql 块是
- 函数有返回值
- 存储在服务器端
CREATE OR REPLACE FUNCTION 函数名
(v_id IN emp.empno%TYPE)
RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/
查看函数
select object_name,object_type from user_objects;
查看原程序
select text from user_source;
调用函数
select 函数名(7839) from dual;
删除函数
DROP FUNCTION 函数名;
建立索引用的函数
要使基于函数的索引被使用要先收集统计信息DETERMINISTIC(确定性)要在函数的定义中指明(意思为输入的值相同时函数的返回值也相同,如随机数发生函数,日期函数就不符合)函数中不能含有集合函数Or 运算时不会使用函数索引
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
六、存储过程
- 存储在服务器端
- 编译好的
- 可以在程序中调用
- 完成一定的功能。
- 可以没有返回值,也可以有多个返回值
创建存储过程
CREATE OR REPLACE PROCEDURE 存储过程名
(参数)
is
BEGIN
-- DML 语句
commit;
End 存储过程名;
/
验证原程序
select text from user_source where name='存储过程名';
单独运行
EXECUTE 存储过程名(参数)
BEGIN
存储过程名(参数)
end;
/
Oracle 学习笔记 (七)的更多相关文章
- Oracle学习笔记七 锁
锁的概念 锁是数据库用来控制共享资源并发访问的机制. 锁用于保护正在被修改的数据 直到提交或回滚了事务之后,其他用户才可以更新数据 对数据的并发控制,保证一致性.完整性.
- Oracle学习笔记(七)
九.高级查询(分组,子查询)查询升级版: 需要用到三张表员工表: desc emp EMPNO 员工号 ENAME 员工姓名 JOB 员工职位 MGR 老板员工号 HIREDATE 员工入职日期 SA ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
随机推荐
- 201621123075作业07-Java GUI编程
1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源 ...
- CCF关于公开NOIP复赛选手程序的通告
为使参加NOIP复赛的选手能了解和保存其竞赛时编制的程序,并相互监督,CCF责成各省特派员在复赛后公开选手程序. 公布方式:以提高组和普及组分别为单位,通过网站或邮件等方式公开.以每个选手可以看到本省 ...
- linux 中mv命令
mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本.不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了.来看一下 mv 命令在日常操作中的一些例子. ...
- spoj mgame
题解: f[i][j]表示先后手最大差 g[i][j]表示在最大差的时候是否有后手没得走 代码: #include<bits/stdc++.h> using namespace std; ...
- Java语法基础学习DayTwelve(泛型)
一.泛型(Generic)在集合中的使用 1.作用 (1)解决元素存储的安全问题 (2)解决获取数据元素时,需要类型强转的问题 2.代码案例 //在集合没有使用泛型的情况下 List list = n ...
- TensorFlow 神经网络相关函数
TensorFlow 激活函数 激活操作提供用于神经网络的不同类型的非线性.这些包括平滑的非线性(sigmoid,tanh,elu,softplus,和softsign),连续的,但不是到处可微函数( ...
- 复现 360 Unicorn Team 黑科技之 HackNFC
看了2条360 Unicorn Team的微博后,感觉蛮有趣的,打算复现一下 谷歌了下相关资料,在HACKADAY找到了介绍文章 还有2篇北邮工学硕士的论文,欢迎有兴趣的朋友和我一起交流~ 联系方式在 ...
- 用IDEA时,类/方法提示"class/method **** is never used"
https://segmentfault.com/q/1010000005996275?_ea=978306 清理下缓存试下.在 File -> Invalidate Caches 下,会重启 ...
- JS实现数组的相减操作
/** * 数组相减的方法 * @param {Array} a * @param {Array} b */ function arrSubtraction(a, b) { if (!a || !b ...
- 4.App非功能测试总结
移动app测试的另一重要方面是移动app的非功能需求.移动app在推出市场或进行进一步开发前,移动测试员有许多需要测试的问题. 早期开发阶段要进行的第一个测试应该是实用性测试.通常是由alpha用户或 ...