通过手工管理数据库备份的方式通常是在对数据库进行文件方面的操作,这个过程需要管理员全面参与并且手工完成。与使用RMAN不同的是手工管理不再完全依赖系统定义的参数进行配置。
手工冷备步骤
在完全关闭数据库的情况下,我们可以通过拷贝数据库的数据文件,控制文件和重做日志文件来完整的备份数据库。
首先查看文件位置:
1
2
3
<code>SQL> </code><code>select</code> <code>file_name from dba_data_files;</code>
<code>SQL> </code><code>select</code> <code>name from </code><code>v</code><code>$controlfile;</code>
<code>SQL> </code><code>select</code> <code>group</code><code>#,member,status from v$logfile;</code>
安全关闭数据库:
<code>SQL> </code><code>shutdown</code> <code>immediate;</code>
然后依次创建datafile,controlfile, redofile三个备份目录,将对应文件一次拷贝到这三个目录即可。
对数据库恢复也只需要将备份的数据拷贝到原来的位置,然后启动数据库即可。
手工热备步骤
在使用联机热备功能的时候需要将数据置于归档模式.
4
5
6
7
8
<code>SQL> archive log list;</code>
<code>Database log mode Archive Mode</code>
<code>Automatic archival Enabled</code>
<code>Archive destination USE_DB_RECOVERY_FILE_DEST</code>
<code>Oldest online log sequence 27</code>
<code>Next log sequence to archive 29</code>
<code>Current log sequence 29</code>
<code>SQL></code>
显示处于开启状态。查看进程状态正常:
<code>[root@temp-</code><code>test</code> <code>~]</code><code># ps -ef|grep arc</code>
<code>oracle 8724 1 0 Nov06 ? 00:00:02 ora_arc0_orcl</code>
<code>oracle 8726 1 0 Nov06 ? 00:00:04 ora_arc1_orcl</code>
<code>oracle 8728 1 0 Nov06 ? 00:00:02 ora_arc2_orcl</code>
<code>oracle 8730 1 0 Nov06 ? 00:00:02 ora_arc3_orcl</code>
设置归档日志文件的冗余,保证数据安全:
查看归档日志相关参数:
<code>SQL> show parameter log_archive_dest;</code>
新建三个目录,分别存放三分相同的归档日志作为冗余备份:
<code>[oracle@temp-</code><code>test</code> <code>~]$ </code><code>mkdir</code> <code>-p </code><code>/data/app/backup/arc</code><code>{1..3} </code>
<code>[oracle@temp-</code><code>test</code> <code>~]$ ll </code><code>/data/app/backup/</code>
<code>total 0</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc1</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc2</code>
<code>drwxr-xr-x 2 oracle oinstall 6 Nov 7 13:44 arc3</code>
设置3个归档目录:
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_1=</code><code>'location=/data/app/backup/arc1 mandatory'</code><code>;</code>
<code>System altered.</code>
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_2=</code><code>'location=/data/app/backup/arc2 optional'</code><code>;</code>
<code>SQL> alter system </code><code>set</code> <code>log_archive_dest_3=</code><code>'location=/data/app/backup/arc3'</code><code>;</code>
查看设置信息:
<code>SQL> show parameter log_archive;</code>
mandatory表示强制日志归档的目录,要求日志数据必须归档成功后才可以切换,optional是可选的归档不成功也可以切换日志,如果optional目录损坏,不影响日志归档。
执行日志切换,归档文件会保存到指定的目录中:
<code>SQL> alter system switch logfile;</code>
生成三份相同的归档文件:
<code>[oracle@temp-</code><code>test</code> <code>backup]$ tree </code><code>/data/app/backup/</code>
<code>/data/app/backup/</code>
<code>├── arc1</code>
<code>│ └── 1_29_959021937.dbf</code>
<code>├── arc2</code>
<code>└── arc3</code>
<code> </code><code>└── 1_29_959021937.dbf</code>
设置最少必须归档成功的日志数量,必须成功两份:
<code>SQL> alter system </code><code>set</code> <code>log_archive_min_succeed_dest=2;</code>
<code>SQL> show parameter log_archive_min_succeed_Dest;</code>
<code>NAME TYPE VALUE</code>
<code>------------------------------------ ----------- ------------------------------</code>
<code>log_archive_min_succeed_dest integer 2</code>
由于总共只有三个冗余文件,如果设置的数量大于3会报错。
备份数据,查看表空间对应的数据文件:
9
10
<code>SQL> col file_name </code><code>for</code> <code>a47</code>
<code>SQL> col tablespace_name </code><code>for</code> <code>a10</code>
<code>SQL> </code><code>select</code> <code>file_id,file_name,tablespace_name from dba_data_files;</code>
<code> </code><code>FILE_ID FILE_NAME TABLESPACE</code>
<code>---------- ----------------------------------------------- ----------</code>
<code> </code><code>4 </code><code>/data/app/oracle/oradata/orcl/users01</code><code>.dbf USERS</code>
<code> </code><code>3 </code><code>/data/app/oracle/oradata/orcl/undotbs01</code><code>.dbf UNDOTBS1</code>
<code> </code><code>2 </code><code>/data/app/oracle/oradata/orcl/sysaux01</code><code>.dbf SYSAUX</code>
<code> </code><code>1 </code><code>/data/app/oracle/oradata/orcl/system01</code><code>.dbf SYSTEM</code>
<code> </code><code>5 </code><code>/data/app/oracle/oradata/orcl/example01</code><code>.dbf EXAMPLE</code>
这里我们备份USER表,ID为4,将表置于备份模式:
<code>SQL> alter tablespace </code><code>users</code> <code>begin backup;</code>
<code>Tablespace altered.</code>
查看备份状态,ID为4的user表显示为active:
<code>SQL> </code><code>select</code> <code>* </code><code>from</code> <code>v$backup;</code>
<code> </code><code>FILE# STATUS CHANGE# </code><code>TIME</code>
<code>---------- ------------------ ---------- ---------</code>
<code> </code><code>1 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>2 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>3 </code><code>NOT</code> <code>ACTIVE 0</code>
<code> </code><code>4 ACTIVE 1529624 07-NOV-17</code>
<code> </code><code>5 </code><code>NOT</code> <code>ACTIVE 0</code>
然后直接使用系统的cp命令,拷贝对应目录下的数据文件,到备份目录即可。然后结束备份模式:
<code>SQL> alter tablespace </code><code>users</code> <code>end backup;</code>
<code>SQL> </code><code>select</code> <code>* from </code><code>v</code><code>$backup;</code>
<code> </code><code>FILE</code><code># STATUS CHANGE# TIME</code>
<code> </code><code>1 NOT ACTIVE 0</code>
<code> </code><code>2 NOT ACTIVE 0</code>
<code> </code><code>3 NOT ACTIVE 0</code>
<code> </code><code>4 NOT ACTIVE 1529624 07-NOV-17</code>
<code> </code><code>5 NOT ACTIVE 0</code>
将当前重做日志信息写入归档日志文件:
11
<code>SQL> alter system archive log current;</code>
<code># 一段时间后,检查点恢复一致</code>
<code>SQL> </code><code>select</code> <code>checkpoint_change</code><code>#, file# from v$datafile;</code>
<code>CHECKPOINT_CHANGE</code><code>#FILE#</code>
<code>------------------ ----------</code>
<code> </code><code>1530603 1</code>
<code> </code><code>1530603 2</code>
<code> </code><code>1530603 3</code>
<code> </code><code>1530603 4</code>
<code> </code><code>1530603 5</code>
本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1979626