第十章 【备份】与【恢复】 (二) --物理备份

本文详细记录了在 Oracle XE 上进行物理备份的过程,包括创建表空间、表,备份数据库文件(数据文件、日志文件、控制文件),模拟故障场景,以及恢复数据的步骤。

 

在ORACLE的免费学习版本XE上进行物理备份实验。

 

[root@host5 ~]# su  -  oracle
[oracle@host5 ~]# sqlplus /nolog

SQL> connect / as sysdba
Connected.
如果数据库还没开启,则

SQL> startup

数据库开启。

 

1.创建测试表空间 user_data 和数据文件 userdata1.dbf

SQL> create tablespace user_data datafile 'userdata1.dbf' size 100M ;

Tablespace created.
 

2.创建测试表 userinfo

SQL> create table userinfo
   (
   id number(6,0),
   username varchar2(20) 
   );

Table created.


查看一下表的信息:

SQL> col name for a30
SQL> set line 100
SQL> desc userinfo
 Name                               Null?                      Type
 ----------------------------------------------------- -------- ------------------------------------
 ID                                                                     NUMBER(6)
 USERNAM                                                     VARCHAR2(20)

插入数据:
SQL> insert into userinfo(id,usernam) values (1,'tom');

1 row created.
 

SQL> select * from userinfo  ;

    ID USERNAM
---------- --------------------
     1 tom
 

~~~~~~~~~~~~~~~~~~~~~~~~~~

开始备份。

以下三类文件要备份:

 查询数据库一共有多少个数据文件:

SQL> select * from dba_data_files;

/u01/app/oracle/oradata/XE/users.dbf
/u01/app/oracle/oradata/XE/sysaux.dbf
/u01/app/oracle/oradata/XE/undotbs1.dbf

/u01/app/oracle/oradata/XE/system.dbf

(数据文件在这里)
/u01/app/oracle/product/11.2.0/xe/dbs/userdata1.dbf

日志文件

select * from v$logfile;

/u01/app/oracle/fast_recovery_area/XE/onlinelog/o1_mf_2_fn3zc0sl_.log
/u01/app/oracle/fast_recovery_area/XE/onlinelog/o1_mf_1_fn3zbz7v_.log

控制文件

select * From v$controlfile;

/u01/app/oracle/oradata/XE/control.dbf

~~~~~~~~~~

3.

备份之前必须要关闭数据库,这也是第一次关闭数据库:

SQL> shutdown immediate

SQL> quit

4.

文件全部拷贝到一个新的空的文件夹/u01/mybak

[root@host5 ~]# cd /u01/
[root@host5 u01]# ls
app
[root@host5 u01]# 
[root@host5 u01]# mkdir mybak
[root@host5 u01]# 
[root@host5 u01]# cd mybak/

[root@host5 mybak]$ pwd
/u01/mybak
 

把上面查出来的数据文件,日志文件,控制文件用操作系统的复制命令,粘贴到备份目录下。

[root@host5 u01]# cd /u01/mybak/

[root@host5 mybak]# cp /u01/app/oracle/product/11.2.0/xe/dbs/userdata1.dbf   .                     # 注意空格后面有个点. !!!指的是把前面的文件复制到当前这个目录!!!           

[root@host5 mybak]# cp /u01/app/oracle/fast_recovery_area/XE/onlinelog/*   .                    #  *代表onlinelog目录下的所有(两个)文件

[root@host5 mybak]# cp /u01/app/oracle/oradata/XE/control.dbf  .                     #这个是控制文件

[root@host5 mybak]# cp /u01/app/oracle/oradata/XE/users.dbf    .    
[root@host5 mybak]# cp /u01/app/oracle/oradata/XE/sysaux.dbf    .    
[root@host5 mybak]# cp /u01/app/oracle/oradata/XE/undotbs1.dbf   .    

[root@host5 mybak]# cp /u01/app/oracle/oradata/XE/system.dbf   .    

[root@host5 mybak]# ls
control.dbf            o1_mf_2_fn3zc0sl_.log  system.dbf    userdata1.dbf
o1_mf_1_fn3zbz7v_.log  sysaux.dbf             undotbs1.dbf  users.dbf
这八个文件都已经复制好了。其实在/u01/app/oracle/oradata/XE 下面还有一个temp.dbf ,不过既然select * from dba_data_files 只找到5个文件,我就没有管这个临时文件。

5.

拷贝完成之后,我们要模拟数据库故障。怎么模拟呢?删除重要数据,模拟出故障的情况。

先使用oracle用户,启动数据库

 

[root@host5 ~]# su  -  oracle
[oracle@host5 ~]# sqlplus /nolog

SQL> connect / as sysdba
Connected.

SQL> startup

数据库开启。

 

进入数据库删除重要数据,模拟出故障的情况。

SQL> truncate table userinfo

Table truncated.

6.

开始恢复。别忘了关闭数据库!!第二次关闭数据库。

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> quit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

先删除旧的八个文件。
[oracle@host5 ~]$ 
[oracle@host5 ~]$ su - root

[root@host5 ~]# cd /u01/app/oracle/oradata/XE

[root@host5 XE]# rm control.dbf 
rm:是否删除普通文件 "control.dbf"?y
[root@host5 XE]# rm u*
rm:是否删除普通文件 "undotbs1.dbf"?y
rm:是否删除普通文件 "users.dbf"?y
[root@host5 XE]# rm s*
rm:是否删除普通文件 "sysaux.dbf"?y
rm:是否删除普通文件 "system.dbf"?y

[root@host5 XE]# cd /u01/app/oracle/fast_recovery_area/XE/onlinelog
[root@host5 onlinelog]# ls
o1_mf_1_fn3zbz7v_.log  o1_mf_2_fn3zc0sl_.log
[root@host5 onlinelog]# rm *
rm:是否删除普通文件 "o1_mf_1_fn3zbz7v_.log"?y
rm:是否删除普通文件 "o1_mf_2_fn3zc0sl_.log"?y

[root@host5 mybak]# cd /u01/app/oracle/product/11.2.0/xe/dbs/
[root@host5 dbs]# rm userdata1.dbf 
rm:是否删除普通文件 "userdata1.dbf"?y

7.

把备份的文件拷贝到原来目录。

[root@host5 mybak]# cp o1_mf_*    /u01/app/oracle/fast_recovery_area/XE/onlinelog/

[root@host5 mybak]# ls /u01/app/oracle/fast_recovery_area/XE/onlinelog/
o1_mf_1_fn3zbz7v_.log  o1_mf_2_fn3zc0sl_.log

[root@host5 mybak]# cp control.dbf          /u01/app/oracle/oradata/XE/

[root@host5 mybak]# cp users.dbf            /u01/app/oracle/oradata/XE/
[root@host5 mybak]# cp system.dbf         /u01/app/oracle/oradata/XE/
[root@host5 mybak]# cp undotbs1.dbf     /u01/app/oracle/oradata/XE/
[root@host5 mybak]# cp sysaux.dbf         /u01/app/oracle/oradata/XE/

[root@host5 mybak]# cp userdata1.dbf   /u01/app/oracle/product/11.2.0/xe/dbs/

8.

在开启数据库进行验证之前,还有一件事!!要将刚才的所有八个文件的用户和用户组改成oracle 与dba!!!!

具体可以看一下我们一直没有动的temp.dbf 文件的信息,

[root@host5 mybak]# cd  /u01/app/oracle/oradata/XE/

[root@host5 XE]$ ls -ld temp.dbf 
-rw-r-----. 1 oracle dba 20979712 8月  20 22:00 temp.dbf

因此:

[root@host5 ~]# cd /u01/app/oracle/oradata/XE
[root@host5 XE]# chown oracle:dba control.dbf 
[root@host5 XE]# chown oracle:dba sysaux.dbf 
[root@host5 XE]# chown oracle:dba system.dbf 
[root@host5 XE]# chown oracle:dba undotbs1.dbf 
[root@host5 XE]# chown oracle:dba users.dbf 
[root@host5 XE]# 
[root@host5 XE]# cd /u01/app/oracle/product/11.2.0/xe/dbs/
[root@host5 dbs]# ls
hc_XE.dat  init.ora  lkXE  orapwXE  spfileXE.ora  userdata1.dbf
[root@host5 dbs]# chown oracle:dba userdata1.dbf 
[root@host5 dbs]# 
[root@host5 dbs]# ls -ld hc_XE.dat 
-rw-rw----. 1 oracle dba 1544 8月  20 22:53 hc_XE.dat
[root@host5 dbs]# 
[root@host5 dbs]# cd /u01/app/oracle/fast_recovery_area/XE/onlinelog
[root@host5 onlinelog]# chown oracle:dba o1_mf_1_fn3zbz7v_.log 
[root@host5 onlinelog]# chown oracle:dba o1_mf_2_fn3zc0sl_.log 
[root@host5 onlinelog]# 
[root@host5 onlinelog]# exit

9.

开启数据库,验证数据是否还在!!!

[oracle@host5 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on Mon Aug 20 22:56:43 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> 
SQL> connect / as sysdba 
Connected to an idle instance.
SQL> 
SQL> startup
ORACLE instance started.

Total System Global Area  413372416 bytes
Fixed Size            2227040 bytes
Variable Size          301991072 bytes
Database Buffers      104857600 bytes
Redo Buffers            4296704 bytes
Database mounted.
Database opened.
SQL> 
SQL> select * from userinfo;

    ID USERNAM
---------- --------------------
     1 tom

数据已经恢复。

完毕。

 

~~~~~~~~~~~~~~~~~

这里不用看。

没有把文件的root权限改成oracle:dba,开启数据库会出现什么情况??
SQL> startup
ORACLE instance started.

Total System Global Area  413372416 bytes
Fixed Size            2227040 bytes
Variable Size          301991072 bytes
Database Buffers      104857600 bytes
Redo Buffers            4296704 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> 
SQL> select * from userinfo
  2  ;
select * from userinfo
              *
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
SQL> 
SQL> quit


 

 

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值