Oracle高级培训 第5课 学习笔记

 
Oracle高级培训 第5课 学习笔记
本课笔记中的页码与《Oracle9i 数据库管理基础II Ed 1.1 Vol.2.pdf》对应
指南下载地址:
 
作者:JackYang (JackYang.sh@gmail.com)
日期:2006-10-17
 
本课包含多个实验,目前还未通过上机验证。
 
回顾上节课
不完全介质恢复,一定要在归档模式下进行,不能在非归档模式下进行。
不完全介质恢复,即使只损坏一个文件,都要把数据文件还原。
不完全介质恢复时,控制文件没有损坏,就不要用原来备份的控制文件。
 
redo log file,是ORACLE数据库的一个副本。
 
P93
基于取消的恢复
联机重做日志,在归档模式下不允许备份。
 
P94
一旦发现有联机文件丢失了,可以查看v$log_history;
归档日志序列号到47
48开始在联机重做日志文件中。
 
所有不完全介质恢复,打开数据库时都要用RESETLOGS
 
P96
假如控制文件没有丢失,还原的时候,就不用还原。
 
RECOVER database时,后面已经要加 useing backup controlfile
 
P97
误删除了一个表空间,用上节课的方法还原不行了。仅仅还原数据文件,不还原控制文件不行。必须用早期的控制文件来恢复,才能恢复表空间。
 
实验一:
实验目的:恢复被误删除的表空间
1.         E:/ora01g> sqlplus /nolog
 
2.         SQL> connect sys/ora123 as sysdba
 
3.         SQL> startup
 
4.         SQL> archive log list
 
5.         SQL> select name from v$tablespace;
 
6.         SQL> create tablespace data1 datafile ‘e:/ora01g/oradata/db1/data1.dbf’ size 2m;
 
7.         SQL> create table dept1 tablespace data1 as select * from scott.dept;
 
8.         SQL> insert into dept1(deptno.dname) values(28,’before drop’);
 
9.         SQL> create tablespace data2 datafile ‘e:/ora01g/oradata/db1/data2.dbf’ size 2m;
 
10.     SQL> create table dept2 tablespace data2 as select * from scott.dept;
 
11.     SQL> insert into dept2(deptno.dname) values(28,’before drop’);
 
12.     SQL> select * from dept1;
 
13.     SQL> select * from dept2;
 
14.     SQL> alter database begin backup;
       做一个备份
       数据库打开的状态下进行热备份,必须先执行命令alter database begin backup; 把数据文件冻结。把所有的修改不写到数据文件,而是写到redo log file。
 
15.     SQL> host copy E:/ora01g/oradata/db1/*.dbf d:/oradata/db1/hot
 
16.     SQL> alter database end backup;
      
17.     SQL> alter system archive log current;
备份结束马上做一次强行归档
 
18.     SQL> alter database backup controlfile to ‘d:/oradata/db1/hot/con1.ctl’ reuse;
       备份控制文件
       因为表空间被误删除,必须使用控制文件来恢复
       加reuse是为了覆盖备份目录下的原来文件
 
19.     SQL> drop tablespace data1 including contents;
       删除表空间的时候,表空间中只要有一个表,就必须加上including contents,否则删不掉表空间
 
20.     SQL> select * from dept1;
       查询失败,因为表空间data1已经被删除
 
21.     SQL> select * from dept2;
       查询成功,因为表空间data2未被删除
 
22.     SQL> insert into dept2(deptno,dname) values (30,’after drop’);
       删除表空间后,插入一条模拟数据
 
23.     SQL> select * from dept2;
 
24.     SQL> commit;
 
25.     SQL> alter system archive log current;
 
26.     SQL> show parameter background_dump_dest;
 
27.     SQL> show parameter user_dump_dest;
E:/ora01g/oradata/db1/udump路径下有alter_db1文件
文件中有一行drop tablespace data1 including contents表明了删除表空间data1的起始时间和结束时间。
 
28.     SQL> shutdown immediate
不完全介质恢复必须在数据库关闭情况下,把所有数据文件还原,所以先关闭数据库。
 
29.     正常操作,应该把坏的数据库备份以下,redo log file也要备份,这里省了。
 
30.     SQL> host copy d:/oradata/db1/hot/*.dbf e:/ora01g/oradata/db1
       还原所有数据文件
 
31.     SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con1.ctl
 
32.     SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con2.ctl
       两个控制文件是一样的,所以只需要备份一个。但现在必须还原出两个
 
33.     SQL> startup mount
 
34.     SQL> recover database until time ‘2006-10-12 18:55:20’ using backup controlfile;
 
       去备份目录下查看ARC归档文件存在就回车。归档文件不存在,就要CANCEL
       控制文件的路径是初始化参数文件指明的。
       using backup controlfile是告诉recover命令要恢复控制文件。
 
35.     SQL> alter database open resetlogs;
 
36.     SQL> select * from dept1;
       dept1恢复了
 
37.     SQL> select * from dept2;
       before drop纪录有,after drop纪录没有了
 
38.     SQL> select * from v$log;
       sequence number恢复到了1
 
39.     SQL> alter system
 
恢复之后,要对数据库做一次完全备份。不做完全备份,下一次数据库再出故障,就无法恢复。因为现在的backup已经不能用了。
 
 
P99
当前重做日志文件丢失
已经备份的重做日志文件丢失没有问题。
redo logo file的内容没有归档的时候丢失了。recover到某个备份的redo logo file丢失,就用CANCEL。
当前是指数据库现在正在使用的文件。
对先前备份的所有数据文件都要还原,否则没法做RECOVER操作。
 
实验二:
实验目的:当前重做日志文件丢失后的恢复操作
1.         启动ORACLE服务
 
2.         sqlplus /nolog
 
3.         SQL> connect sys/ora123@DB4 as sysdba
       网络连接
 
4.         SQL> startup
 
5.         SQL> archive log list
       确定数据库在归档模式下
 
6.         SQL> alter database begin backup;
       必须先做一个备份
 
7.         SQL> host copy e:/ora01g/oradata/db4/*.dbf d:/oradata/db4/hot
 
8.         SQL> alter database end backup;
 
9.         SQL> alter system archive log current;
       current当前正在用的redo log file
       active表示redo log file中纪录的信息,与数据库缓冲区中对应的脏数据未写入数据文件。
       inactive表示redo log file中纪录的信息,与数据库缓冲区中对应的脏数据已经写入数据文件。
 
10.     SQL> alter database backup controlfile to ‘d:/oradata/db4/hot/con1.ctl’ reuse;
       备份控制文件
 
11.     SQL> select * from v$log;
 
12.     SQL> shutdown immediate;
关闭数据库之后,删除ora01g/oradata/db4/路径下的REDO01A和REDO01B
 
13.     SQL> startup mount;
 
14.     SQL> alter database clear logfile group 1;
       REDO01A和REDO02B两个redo log file被重建,但是空的。
       重建status处于inactive状态的redologfile。
 
15.     SQL> alter database open;
 
16.     SQL> select * from v$log;
 
17.     SQL> shutdown immediate;
       关闭数据库之后,模拟故障,把当前使用的REDO03A和REDO03B删掉。
 
18.     SQL> startup mount;
 
19.     SQL> alter database clear logfile group 3;
       无法打开
 
20.     SQL> host copy d:/oradata/db4/hot/*.dbf e:/ora01g/oradata/db4
还原所有数据文件
 
21.     SQL> recover database until cancel;
不用控制文件的情况下,recover一下
       48号文件是刚才没有归档的
       所以要恢复48号文件的时候,要打CANCEL
       因为当前的日志文件没有归档,所以CANCEL
 
22.     SQL> alter database open resetlogs;
 
23.     SQL> select * from scott.dept;
 
24.     SQL> select name from v$controlfile;
 
25.     SQL> select name from v$datafile;
 
 
实验三:
实验目的:通过网络连接访问ORACLE实例
       创建scott数据库
 
2.         sqlplus /nolog
 
3.         SQL> connect scott/tiger@DB4
       显示ERROR 访问 PROFILE
 
4.         SQL> select * from dept;
       查询失败
 
5.         SQL> select * from emp;
       查询失败
 
6.         SQL> connect system/ora123
 
7.         SQL> @?/sqlplus/admin/pupbld
建立profile
 
8.         SQL> connect scott/tiger@DB4
       连接成功
 
9.         SQL> exit
退出
 
实验四:
实验目的:通过环境变量缺省连接
1.         set ORACLE_SID_DB4
 
2.         sqlplus /nolog
 
3.         connect sys/ora123 as dba
 
 
实验五:
实验目的:配置ORACLE网络连接,配置分2部分,一部分是客户端配置,一部分是服务端配置
oracle安装目录下,由network/admin下有listener.ora
network/admin/sample 路径下有一个listener.ora的sample文件,但这个文件不用。
 
可以用老师提供的listener.ora的sample文件,配置在服务端。
文件中
LISTENER是listener的名称。
ORACLE服务端,可以1个或多个listener.版本不同都可以。10g可以侦听9i请求,反之亦然。
 
从oracle9i开始SID_LIST_LISTENER是可有可无的。有这段实现了静态注册。
上面是LISTNER1,那么下面就是SID_LIST_LISTENER1
 
动态注册,只要数据库启动之后,在1分钟以后,数据库会自动到LISTENER上去注册。
 
TNSNAMES配置在ORACLE客户端
oracle安装目录下network/admin路径下的TNSNAMES文件
可以参考老师提供的sample文件
 
初始化参数文件initdb1中和网络连接有关的两行
service_names=’DB1’
instance_name=’DB1’
oracle9i之后版本一定要有这两行,才能实现动态注册。
 
另外,服务中一定要有TNSlistener服务启动。
关掉这个服务以后,SQL> connect sys/ora123@DB4 as sysdba 会显示no listener的错误
 
1.         lsnrctl
2.         lsnrctl>start
凡是静态注册,状态都是UNKNOWN。因为静态注册,数据库没启动,都可以注册。关闭用命令LSNRCTL> stop
3.         LSNRCTL> service
4.         LSNRCTL> status
5.         LSNRCTL> quit
 
oracle安装目录的network/admin目录下还有一个sqlnet.ora文件
文件中
NAMES.DIRECTORY_PATH=(TNSNAMES)
为了告诉oracle 名字解析的方法
 
> tnsping DB1
此命令用来验证是否能进行远程连接。
 
实验六:
实验目的:远程连接数据库
1.         sqlplus /no log
 
2.         SQL> connect sys/ora123@DB1 as sysdba
       显示 an idle instance表示数据库未打开,要用startup命令打开数据库
 
3.         SQL> startup
 
4.         SQL> select * from v$log;
 
远程数据库文件相关的就是三个文件,一条命令。
 
 
listener.ora和TNSNAMES.ora文件中的HOST不能填LOCALHOST或127.0.0.1,必须填IP地址或机器名,机器名不能带减号或空格。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值