学习oracle10g 043课程有段时间了,前一两个星期学习了backup/restore相关的内容,刚好公司有要求要为host服务器做一个备用机以防止数据意外丢失。于是,实战开始了。
首先介绍host服务器架构。host以oracle数据库作为底层数据存储,以公司总部开发的Santorin作为应用,主要提供给测试台架数据存储、数据访问、数据导入导出、用户权限管理和数据自动备份等服务。oracle数据库工作在archivelog模式下。本次要解决的问题是:只安装Santorin软件,而oracle数据库直接利用原host服务器上的datafile进行恢复,是否能够重建服务。
理论分析:
复制了所有的datafile,control file ,logfile还有spfile的备份相当于image copy. 因此在理论上,要进行恢复是完全可行的。
实际操作:
1、关闭数据库,将所有文件拷至相应目录(spfile除外,因为两者完全一致)。启动数据库,在进入到mount状态后,报ora-01511和ora-01516错误。查看dbwr log文件,发现所有datafile都出现报错。
2、用google搜索ora-01511错误代码,在itpub上发现“春暖花开 ORA-01157 ......
一. 用户相关
1)sqlplus 用户名/密码 //登录
2)connect 用户名/密码 //转换用户
3)sqlplus system/密码 as sysdba; //system作为sysdba登录
4)alter user 用户名 account unlock; //用户解锁
5)grant create table, create view to 用户名 //为用户赋予权限
6)drop user 用户名 //删除用户,必须是超级管理员才有权限
7)show user &nb ......
一.Select
1)select * from tablename;
2)select salary*12 from tablename; //对列运算
3)select sysdate from dual; //获取当前时间
4)select salary*12 annual_salary from tablename; //为列起别名
//为列起区分大小写或着带空格的别名
select salary*12 “annual salary” from tablename;
5)select ename || salary from emp; //连接两个列
6)select distinct deptno from emp; //去掉重复的值
Select distinct ename, job from emp; //去掉ename,job都相同的记录
7)select * from emp where ename > ‘cba’; //比较字符串条件,按ascii码
8)select * from emp where salar ......
一.常见单行函数(对每行记录进行操作)
1)lower(str) //lower()转换为小写
2)upper(str) //upper()转换为大写
3)//从str取从begin位置开始,数目为num的子字符串
//begin从1开始
substr(str, begin, num)
4)chr(65)àA //将一个数字转换为ascii相对应的值
5)ascii(‘A’)&agr ......
一.索引
1)//可以跟多个字段,表示多个字段组成的索引
Create index idx_stu_email on stu(email)
2)Drop index idx_stu_email
3)加主键约束或者唯一约束时,系统会自动加索引
4)加了索引会使读更快,但修改更慢,不要轻易建立索引
二.视图
1)视图就是一个子查询,视图越多维护越难
2)视图可以更新数据,但是很少用它更新数据
3)Create view v$_avg_sal as
select deptno, grade
from (
select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on
(t.avg_sal between s.lowsal and s.highsal)
) t1 join dept d on (t1.deptno = d.deptno);
三.序列(sequence,Oracle特有)
1)维护主键,线程安全
2)Create sequence seq;
3)Create sequence seq start with 1 increment by 1;
4)Select seq.nextval from dual;
5)Drop sequence seq;
四.DML
1)insert into tablename(col1, col2, col3) values(v ......
一.PL/SQL(procedure language)
1)Set serveroutput on; --设置结果输出到屏幕
2)--异常处理,常见异常too_many_rows,no_data_found
Declare
V_num number := 0;
Begin
V_num := 2 / v_num;
Exception
When others then
Dbms_output.put_line(‘error’);
End;
3)--声明变量
Declare
V_temp number(1);
V_count bi ......