oracle基础
①、进入数据库命令:>sqlplus "/as sysdba"
②、查看数据库的动态实例表命令:SQL>select status form v$instance;
③、关闭数据库的命令:SQL:shutdown immediate
④、重启动数据库stratup
⑤当前数据库名称show parameter db_name
⑥查询用户是否是锁定 select username,account_status from dba_users where username='SCOTT' 显示EXPIRED & LOCKED 表示该用户到期和锁住
⑦如何知道dba_users表中都有哪些列?desc user_tables;
7.1如果对SCOTT用户进行解锁alter user 数据库用户名 account unlock;
7.2 验证 SCOTT用户是否激活 select usernmae,accout_status from dba_users where username='SCOTT' 显示EXPIRED ,该用户原来密码登录并重新更改密码,即可解除到期状态。
7.3使用SCOTT用户登录数据库,并设置密码
7.3.1在数据库中却换用户
用户连接方法 conn 用户名/密码 conn scott/tiger
提示设置新密码 设置为cat
再查看SCOTT 用户状态 select username,accout_status from dba_users where username='SCOTT' 显示OPEN
使用SCOTT用户登录 sqlplus scott/cat
查看当前用户 show user
⑧查询,插入,更新,删除SQL语句
8.1登录SCOTT用户 sqlplus scott/cat
8.2查询SCOTT用户有哪些表 select table_name from user_tables;
8.3查询DEPT表中有哪些部门 select * from dept;
8.4 查询DEPT表中有哪些列 desc dept;
8.5在DEPT表中增加一列Development部门 insert into dept (deptno,dname,loc) values (50,'Development','BeiJing');
输入commit;提交
8.6将研发部门工作地址更新为上海 update dept set loc='shanghai' where deptno=50;
输入commit 提交
8.7删除Developmant 部门 delete from dept where deptno=50;
输入commit提交
⑨查询每个员工的编号,名字,薪水
9.1、select empno,ename,sal from emp;
9.2、调整查询结果表的列次序 select ename,sal,empno from emp; 英文默认是左对齐,而数字默认是右对齐。
⑩查询员工的入职时间
select ename,hiredate from emp;
10.1、设置查询数据的时间格式 alter session set nls_date_format='YYYY-MM-DD';
10.2、查询员工到目前工作年限
如果查询当前数据库时间? select sysdate from dual;
使用当前时间减去员工入职时间即可以得到员工工作年限 select ename,round ((sysdate-hiredate)/365,0) from emp;
round(X,Y)是oracle数据库的一个四舍五入函数,X表示这个数需要进行四舍五入,Y表示哪位数进行四舍五入,如果Y=0,表示在个位数进行四舍五入,Y=2表示在小数点后2两位进行四舍五入。
10.3、按照工作年限排序查询员工姓名和年数
10.3.1、查询员工入职时间 select ename,hiredate from emp order by hiredate;
order by 是SQL语句中排序的关键字,后面跟排列的列名。默认是按升序排列,即数字从小到大。
10.3.2、根据入职时间求出工作年限 select ename ,round((sysdate-hriedate)/365,0) from emp order by 2;
order by 2 表示第二列排序 ,默认是升序。
10.3.3 查询出每个员工的工作年限,按年数倒序排列数据
select ename,round((sysdate-hriedate)/365,0) from emp order by round((sysdate-hriedate)/365,0) desc;
desc表示排列使用降序来输出数据,即从大到小进行排列。
10.3.4 变成中文列名,本土化查询语句
select ename as "姓名" round((sysdate-hriedate)/365,0) as "工作(年)" from emp order by "工作(年)" desc;
10.3.5 临时多给员工1500元奖金
(1)先查看每一个员工的工资 select ename,sal from emp order by sal;
(2)查询的到的工资加上1500元奖金即为这个月的工资 select ename,sal+1500 from emp order by sal;
(3)对查询员工薪水进行文字说明,这样更容易理解
slect ename || '员工本月基本工资为:¥' || (sal+1500) as '公司员工本月工资表' from emp order by sal;
|| 表示Oracle 连接符,可以把查询处理数据和其他字符串连接起来。
10.3.6 查看哪些部门没有安排员工
(1)查看哪些部门没有安排员工 select ename,dateno from emp;
(2)如何把查询中结果只显示唯一值,过滤重复数据? select distinct dateno from emp;
distinct 是去掉重复数据的SQL关键字。
10.3.7 按照薪水排列查询工资少于2000的员工
查询工资少于2000员工并按薪水排列顺序。select ename ,sal from emp where sal<2000 order by sal;
10.3.8、查看薪水在某个区间的员工 。select ename,sal from emp where sal between 1500 and 2500 order by sal;
10.3.9、查看销售部门拿保底工资的有多少人。select empno,ename,job,sal from emp where jbo='SALESMAN' and sal =1250;
10.3.10、查看没有奖金且工资或者工资少于1500的员工。select empno,ename,job,sal,comm from emp where comm is null or sal<=1500;
例如:员工的工资加提成,哪个员工的工资最少的。
select empno,ename,job,sal,comm,sal+nvl(comm,0) from emp where comm is null or sal<=1500 order by nvl(comm,0);
nvl(X,Y)是数据库的一个内部函数,表示如果X有值,则返回X的值,如果X值为null,则默认为Y。这里就是comm(提成)代替为X,“0”代替为Y。
10.3.11、查看名字开头为"M"的员工 select ename,job,sal from emp where ename like 'M%';
10.3.12、查找销售人员、分析师 、管理人员的数据 select ename,job from emp where job in ('SALESMAN','ANALYST','MANAGER');
10.3.13、统计每个岗位有多少个员工 select job,count(*) from emp group by job;
group by 是Oracle 中的分组函数
count(*)是统计数量的一个函数,这里是统计公司每个岗位有多少人。
为了直观看数据,可以按照数量进行排序
select job,count(*) from emp group by job order by count(*);
3.11统计每个部门有多少个员工
select deptno,count(*) from emp group by deptno;
并按照部门排序
select deptno,count(*) from emp group by deptno order by deptno;
3.12 统计公司本月总共需要支付多少薪水
select sum(sal)+sum(nvl(comm,0)) from emp;
sum是Oracle数据库一个内部函数,即所数值之和。
3.13统计公司员工的平均工资
select round(avg(sal,2)) from emp;
avg是Oracle数据库平均值函数。
3.14统计公司员工最高,最低工资及相差多少
select max(sal),min(sal),max(sal)-min(sal) from emp;
max为Oracle的最大值函数,min为Oracle的最小值函数。
3.15 查找哪些岗位的平均工资高于2500元
select job,avg(sal) from emp having avg(sal) > 2500 group by job;
having在使用group by 分组时候,如有条件限制需要使用having,而不能使用where 。即在group by 中所对应的条件限制having .
第五章
5.4 创建表
create table Items(
ItemNO number(2) constraint PK_Items primary key;
ItemName varchar2(20) not null;
)
constraint :定义表约束所必需的关键字,后面跟约束名。
primary key:主键约束的关键字
5.5 如何创建带有外键的表
create table Business(
Busino number(2) constraint PK_Business primary key,
BusiName varchar2(22) not null,
ItemNO number(2) ,constraint FK_Business foreign key(ItemNO) references Items (ItemNO),
StartTime date;
)
foreige key ......references.....:这个是创建外键必需用SQL语句关键字,并且该列需要和另外一个表的主键对应起来。
to_date():是Oracle的一个内部函数,可以把字符串转换成时间格式。
)
5.6 如何设置表中列值的条件和唯一值
unique:这个是唯一约束的关键字,表示该列的值具有唯一性。
constraint.....check....:这个是条件约束的关键字,插入,更改的数据需要符合这些条件才能将数据提交到数据库中。
date:这个是Oracle数据库中的表列数据类型,时间类型。
number(7,2)表示只能是7位数,可以保持2位小数。
5.7 将一张表的数据复制到另外一张表
create table 表1 as select * from 原表;
5.8如何在PL/SQl Developer 中快速删除表
drop table 表;
5.10 如何快速将表中的数据快速导入到新表中
insert into business(busino,businame,itemno,starttime) select * from business_copy;
5.12 如何使用PL/SQl Developer修改表结构
alter table items add (manager varchar2(6));
第六章 如何新增,修改,删除用户以及如何授权
6.1如果使用PL/SQl Develope创建数据库用户
create user lisi identified by lisi;
create user :是创建数据库用户的关键字,后面跟用户名称,
identified by :是设置数据库用户密码的关键字。
6.2如何对刚刚重建用户授权
把连接数据库权限授权给lisi用户
grant connect to lisi;
grant:授权关键字
connect:Oracle数据库一个默认角色,只有连接数据库的权限。
如何将scott用户的表授权给lisi 用户
grant select on emp to lisi;
6.3如何回收数据库用户的权限
revoke select on emp from lisi;
6.4把表的增、删、改权限授权给用户和修改密码
grant select ,install, update ,delect on emp to lisi;
select * from scott.emp;
回收表的增、删、改权限授权
revoke select ,install, update ,delect on emp from lisi;
修改用户密码
alter user lisi identified by li123;
6.5如果删除数据库用户
drop user lisi;
drop user lisi cascade;(这将会删除与李泗用户关联的表)
6.6 数据库的权限和角色
查看用户本身拥有的权限
select * from session_privs;
session_privs是Oracle数据库的字典表,字典表其实是Oracle内部的表
查看用户本身拥有的角色
select * from user_role_privs;
查看CONNECT角色有哪些权限
select * from dba_sys_privs where grantee='CONNECT';
6.7如何给一个开发人员创建数据库用户并授权
创建一个数据库用户并授权
create user wangwu identified by wangwu;
对wangwu用户授予角色
grant connect ,resorce to wangwu;
第七章 数据库有哪些重要对象
7.1:查看数据库有哪些对象组成
数据库最重要的的对象------表
查看DEPT表的具体结构
7.2 :数据库对象----视图
要求查看每个部门的平均工资,把数据库中的两个表联合起来查询
创建一个求每个部门的平均工资的视图
create view avgsal
as
select d.dname as "部门名称", round(avg(e.sal),2) as "平均工资" , count(*) "员工人数"
from emp e, dept d
where e.dpet.no=d.deptno
group by d.dname;
使用视图查询每个部门的平均工资
select * from avgsal;
如何查看用户有多少个视图
select * from user_view
7.3数据库对象----序列
序列(Sequence)是数据库对象之一,利用它可以生成唯一的整数。序列可以避免了由于不同数值造成的换乱。
create sequence bookID
Start with 1
Increment by 1
Maxvalue 99999999999
nocache
nocycle
上面创建了序列从1开始,然后下一个增加1,而最大9999999999,数值不可以循环使
输入图书inert into book(bookid,bookname) values (bookID.Nextval,'小学数学课本');
序列的Nextval表示序列的下一个值,Currval表示序列的当前值。可以通过虚表dual查看。
虚表dual是oracle数据库和数据字典一起自动创建一个表
查看bookid序列的当前值
select bookid.currval from dual;
查看bookid序列的下一个值
select bookid.nextval from dual;
7.4数据库对象----函数
使用函数把小写转换为大写
select upper(avcsdfsdfs) from dual;
创建一个通过员工ID获取其薪水的SQL语句函数
create or replace function get_empsal(emp_no in number)
return unmber
is emp_sal number(7,2);
begin
select sal
into emp_sal
from emp
where empno=emp_no;
return(emp_sal);
end;
解释:
create or replace function这个是创建或者已经存在的函数,函数名为get_empsal,挂号中的emp_no为输入员工的工号,输入类型类number(数字类型)
return unmber :该函数定义函数返回一个数组类型的值
is emp_sal number(7,2):定义参数emp_sal ,该数值类型为number
begin:为函数的程序段开始
select ......return......:这是函数的程序段,
end:结束函数的sql程序段,以begin对应
如何通过函数获取员工薪水
select get_empsal(7566) from dual;
7.5 数据库函数------存储过程
创建一个根据员工删除员工信息的存储过程
create or replace procedure DelEmpno(empid in number) is
begin
delete from emp where emp.empno=empid;
commit;
end DelEmpno;
解释:create or replace procedure是创建存储过程的关键字
empid in number :empid为DelEmpno 存储过程的参数,该参数的数据类型为数值。
begin......end.....:是存储过程的开始和结束关键字
如何执行刚刚创建的存储过程
execute DelEmpno(7566);
execute是执行存储过程的关键字。
7.6 数据库对象-----索引
索引(index)是对数据库表中一列或者多列的值进行排序的一种结构。索引可以加快数据库的查询速度。
创建一个存储过程,用来循环往test_index表中插入数据。
create or replace procedure insert_data
is
temp varchar2(20) := 'Insert Data';
begin
for i in i..100000000 loop
insert into test_index(id,name) values(i,temp);
end loop;
commit;
end ;
如何执行insert_data存储过程?
execute insert_data;
在没有索引情况下,查询ID为9999是所需要时间很长。
创建表的索引
create index id_test_index on test_index(id);
7.7数据库对象------同义词
同义词(Synonym)是现有对象的一个别名。
确认scott 用户是否具有创建同义词的权限
select * from session_privs where privilege like '%SYNONYM';
给scott用户赋予创建同义词权限
grant create any synonym to scott;
创建一个表的同义词。
create synonym sg for salgrade;
通过同义词sg 可以查询表salgrade数据,即salgrade 表的一个别名是sg 。
Oracle数据库中函数和存储过程有什么区别?
①函数必须有返回值,存储过程没有返回值。
②函数可以单独执行,存储过程必须通过execute执行。
③函数可以嵌入SQL中执行,而过程不能。
其实我们可以将比较复杂的查询写成函数,然后到存储过程中调用这些函数。
第八章 数据库启动的不同状态
8.1 关闭数据的4个不同的命令
查看数据库当前的状态
(1)查看“OracleSericeORLC”服务是否是开启状态。
(2)可以在控制台输入命令 >sqlplus "/as sysda"
另外安装了多个数据库,则需要在登录数据库之前设oralce数据库的环境变量,
set ORALCE_SID=ORCL 表示设置实名为ORCL
再输入命令 >sqlplus "/as sysda"
(3)登录数据库后查看数据库的状态
sql>select instance_name,status from v$instance;
实例(instance):包括数据库的内存结构和一组后台进程。像所谓数据库集群,则是一个数据库,有多个实例构成。
如何关闭数据库?
SQL>shutdown immediate
关闭数据库4个命令
shutdown immediate :不允许新的连接,不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。启动是不需要对数据库进行实例恢复,最常用方式
shutdown abort:不允许新的连接,不等待会话结束、不等待事务结束、做一个检查点并没有关闭数据文件。启动是需要对数据库进行实例恢复
shutdown transactional:不允许新的连接,不等待会话结束、等待事务结束、做一个检查点并没有关闭数据文件。启动是不需要对数据库进行实例恢复
shutdown normal:不允许新的连接,等待会话结束、等待事务结束、做一个检查点并没有关闭数据文件。启动是不需要对数据库进行实例恢复
8.2启动数据库到nomount状态
把数据库启动到nomount状态
SQL>startup nomount
然后再查看数据库实例的状态
SQL>select instance_name,status from v$instance;
这个nomount状态一般在维护数据库时候需要用到,比如对数据库重要参数的修改,恢复数据库的控制文件及数据时候都需要用到这个状态。
如何查看初始化文件(spfile或pfile)的内容呢?
首先找到数据库初始化文件的位置
SQL>show parameter spfile
根据spfile文件创建pfile文件
SQL>create pfile='D:\LearnOracle\pfile.ora' from spfile;
用记事本打开LearnOracle\pfile.ora文件,可以查看哪些数据库重要参数,包括数据库名,各内存分配大小,连接进程数(processes)等
如何使用初始化文件pfile来启动数据库
(1)关闭数据库
SQL>shutdown immediate
(2)使用pfile文件启动数据库到nomount文件
SQL>startup nomount pfile='D:\LearnOracle\pfile.ora'
8.3数据库的mount状态
数据库的mount转态中,Oracle进程会读取到控制文件中的参数。mount状态在数据库恢复数据时需要用到,而数据库在配置数据库的备库(Dataguard)时候,数据库的备库是处于mount状态。
从数据库的nomount更改为mount状态
SQL>alter database mount;
查看数据库实例是什么状态?
SQL>select instance_name,status from v$instance;
查看控制文件具体位置
SQL>select name from v$controlfile;
如何查看控制文件内容?
可以使用Oralce的命令把控制文件的内容显示在Trace(跟踪)中,
alter database backup controlfile to trace as 'D:\LearnOracle\ct1.trc';
然后用记事本打开LearnOracle\ct1.trc文件
8.4数据库的open转态
数据库的open状态表示数据库是正常运行,
如何更改数据库到open状态?
把数据库的mount状态更改为open状态
SQL>alter database open;
如何查看数据库的数据文件位置?
SQL>select name from v$datafile;
如何查看数据库的重做日志位置?
SQL>select name from v$logfile;
8.5数据库的密码文件
windows中Oracle数据库中,密码文件一般位于$ORACLE_HOME/database/目录下面,文件名一般为PWDorcl.ora(orcl为数据库名),linux系统中一般位于$ORACLE_HOME/dbs/目录下,文件名一般为orapworcl(orcl为数据库名)。
改密码文件的作用是允许数据的sysdba,sysoper用户通过口令来远程登录
如何查看数据库是否允许远程登录?
SQL>show parmenter remote_login_passwordfile
EXCLUSIVE 表示允许远程连接,NONE表示不允许远程连接。
如何设置禁止数据库用户远程登录数据库?
SQL>alter system set remote_login_passwordfile = none scope=spfile;
需要重启数据库才能生效
SQL>startup force;
8.6查询和说明表空间
如何查看数据库表空间名、存储单位、转态、类型、是否记录日志?
通过sys用户连接数据库
select tablespace_name as "表空间名称" ,
block_size /1024 as "数据库存储大小单位(KB)",
status as "表空间的状态",
contents as "表空间的类型",
logging '‘是否有日志记录"
from dba_tablespaces;
8.7查询及说明数据文件
如何查询数据文件的表空间、大小、是否扩展、最大值?
select t.tablespace_name as "表空间名称" ,
t.file_name as "数据文件路径",
t.bytes /1024 /1024 as "数据文件大小(MB)",
t.autoextensible as "数据文件是否自动扩展",
t.maxbytes /1024/1024 as "数据文件最大(MB)"
from dba_data_files t;
8.8查询及说明重做日志
如何查询重做日志的位置、转态、大小、类型?
select * from v$logfile;
第九章 linux 常用命令
查看linux版本
#uname -r 或者#uname -a
查询linux 系统发行版本
#cat /ect/redhat -release
查看linux 具体版本号
#cat /proc/version
启动或关闭FTP服务
#service vsftpd start
#service vsftpd stop
查看linux 磁盘大小
#df -lh
查看linux 内存大小
#free
查看CPU个数
#ls/proc/acpi/processor
查看CPU相关信息
#cat /proc/cpuinfo
却换到某个目录下
却换到home 目录
#cd /home
".." 表示返回到上一级目录
查看某个目录下所有文件
#ls
#ls -l:查看文件详细信息
查看目录当前绝对路径
#pwd
9.4 如果让windows 和虚拟机中的linux 系统通信
查看IP地址命令
#ifconfig
9.5 telnet 命令
打开telent 服务
#service xinetd restart
关闭Telnet命令
#service xinetd stop
启动Telnet命令
#service xinetd start
重启Telnet命令
#service xinetd restart
如何确定linux 系统的Telnet是否打开?
#chkconfig --list|grep telnet
如果输出结果是krb5-telnet 为off状态,表示处于关闭状态。需要打开krb5-telnet服务
#chkconfig krb5-telnet on
从外面连接telnet服务,还需要关闭防火墙
#service iptables stop
9.6 linux 系统vi编辑器
如何解决linux 系统显示的乱码?
在窗口输入命令
#vi /etc/vimrc
第10 章 如果在linux 系统安装oralce 数据库
10.7创建安装oracle的用户及组
解压Oracle软件安装包命令
#unzip 10201_database_linux32.zip
创建安装oracle 的用户及组
创建linux 的oinstall 组
#groupadd oinstall
接着创建linux 的dba组
#groupadd dba
创建linux 系统的oracle用户并设置该用户属于oinstall ,dab 组
#useradd -m -g oinstall -G dba oracle
确认一下oralce用户属性
#id oracle
设置oracle用户密码
#passwd oracle
10.8 创建安装oracle数据库所需要目录
#mkdir -p /u01/app/oracle
把/u01/app/oracle目录设置属性属于oracle 用户和oinstall组
#chown -R oracle.oinstall /u01/app/oracle
把/u01/app/oracle目录设置成oracle用户可读写的状态
#chown -R 775 /u01/app/oracle
10.9 设置oracle用户的环境变量
使用vi编辑/home/oralce/.bash_profile
10.14验证oralce是否安装成功
却换到oralce用户
#su - oralce
输入下面命令进入oracle 数据库中
$sqlplus "/as sysdba"
在oracle数据库的命令窗口输入SQL语句
SQL>select instance_name,status from v$instance;
实例显示为open,表示可以访问状态
查看数据库的监听转态
$lsnrctl status
第11章 异构环境Oracle数据库迁移
11.1 exprot和import是什么
export:从数据库中导出数据到dump文件中
improt:从dump文件导入数据到数据库中
11.2在windows的数据库中给开发人员新建一个用户及其表空间已测试新项目
查看数据库数据文件表dba_data_file的结构
SQL>desc dba_data_file
查看数据库的数据文件位置,已便确定创建表空间的数据文件
SQL>col file_name for a50
a50:表示50个字符大小
创建一个表空间
SQL>create tablespace bank_tbs datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL bank_data02.dbk'
size 5M autoextend on maxsize 10G
autoextend on 表示:数据随着数据量的增加自动扩大
创建该项目需要的数据库用户
SQL>create user bankuser identified by bankpwd default tablespce bank_tbs;
default tablespce:表示改用户使用默认的表空间,
对数据库用户进行授权
SQL>grant connect,resource to bankuser;
使用刚刚创建用户登录数据库
SQL>sqlplus bankuser/bankpwd@orcl
可以进行创建表、插入数据
查看表所属的表空间
SQL>table_name,tablespce_name from user_tables;
11.4使用export导出数据
>exp bankuser/bankpwd@orcl file=D:\LearnOracle\bankuser.dmp log =D:\LearnOracle\bankuser.org
file :指定导出的文件所在位置,
11.5使用improt 导入数据
把数据导入Linux 的Oralce数据库中
>imp bankuser/bankpwd@LinuxOMS fromuser=bankuser touser =bankuser file =D:\LearnOracle\bankuser.dmp log=D:\LearnOracle\bankuser.org
验证刚刚导入数据
SQL>select table_name from user_tables;
11.7使用expdp、impdp迁移数据
数据泵可以看做exp、imp升级版
用法:
在数据库中创建导出数据的目录。
SQL>careate or replace directory expdp_dir as '/home/oracle/expdp_dir';
把目录授权给bankuser用户
SQL>grant read,write on directory expdp_dir to bankuser;
接着需要在linux 系统中创建一个目录
$pwd
$mkdir expdp_dir
$chmod 777 expdp_dir
查看权限 $ls -l
在linux 系统中使用expdp导出数据
$ expdp bankuser/bankpwd driectory=expdp_dir dumpfile=bankuserLinux.dmp logfile=bankuserLinux.log
第十二章 不影响数据库运行如何快速恢复删除的表及其数据
12.1 Oracle 10g 中的Flashback是什么
Flashbakc(闪回)可以简化用户的数据恢复,不用从逻辑备份和物理备份中恢复过来。
Flashback支持的恢复级别包括下列几种
事务闪回:对表进行了insert update delete 操作,已经commit ,发现错误,需要恢复达到某个commit操作之前的数据,则需要撤销刚才的某个操作。
行级闪回:对表的insert update datete 操作,需要恢复到某个时间点,
表级闪回:错误的drop table 操作,需要表和表中的数据
数据库级闪回:错误的对整个数据库导入很多表数据,需要将数据库恢复到过去的时间点。
事务(Transaction);比如对表做了insert 操作,然后进行了commit成功之后就算完成一个事务。
查看用户bankuser是否具有闪回权限
SQL>select * from session_privs where privilege like 'FLASHBACK%'
对bankuser 用户赋值权限
SQL>grant flashback any table to bankuser;
12.2 如何恢复刚刚删除一条数据
例如:删除EMP表的数据
delect from emp where ename='FOED';
要恢复刚刚删除数据
使用sys用户及其密码通过连接数据库
12.5 在windows中备份linux系统数据库的数据
写一个备份脚本
exp bankuser/bankpwd@ORCL_192.168.0.199
file=D:\LearOracle\BackBankuser\Monday.dmp
log=D:\LearOralce\BackBankuser\Moday.log
然后使用windows系统的任务计划定制时间调用这个脚本
第13章 如何备份数据库
13.1备份需求和RMAN备份
RMAN的增量备份(差量备份)这样备份和恢复都比较简单,所暂用的空间比较小。
13.2查看相关备份的环境
查询数据版本SQL>select * from v$version
查看数据库名SQL>show parmeter db_name
查看数据库是否为归档转态SQL>archive log list
数据库的RMAN备份必须在Oracle的归档模式下才能进行。
例:更改数据库的非归档模式改成归档模式
(1)进入数据库,关闭数据库
SQL>shutdown immediate
(2)启动数据库到mount状态
SQL>startup monut
(3)接着改变数据库归档模式
SQL>alter database archivelog;
打开数据库SQL>alter database open;
验证是否是归档模式SQL>archive log list;
13.4 设置RMAN备份环境参数及自动备份控制文件
查看RMAN备份的环境
$rman target/
查看RMAN中所以参加配置
RMAN>show all
启动控制文件的自动备份
最简单的全库备份
RMAN>backup database;
查看备份的相关信息
RMAN>list backup;
查看备份总体信息
RMAN>list backup summary;
13.5 编写备份脚本
第十四章 如何恢复数据库
查看该数据库是否有备份
RMAN>list backup summary;
还原Oralce数据库文件
RMAN>restore database;