Oracle用户管理方式下备份数据和复制数据库
首先要明确的是,Oracle数据库的备份可以分为逻辑备份和物理备份。
逻辑备份的是通过数据导出对数据进行备份,主要方式有老式的IMP/EXP和数据泵灯方式。适合变化较少的数据库,而对于高可用性数据库,由于这种方式备份的数据只能恢复到备份的时间点,所以并不适用。但由于逻辑备份具有平台无关性,所以更常见的是用来数据迁移及数据移动;
物理备份是通过复制数据文件、参数文件等数据库的物理文件来进行备份。物理备份可以分为冷备份和热备份。冷备份需要在关闭数据库后进行备份,目前在高可用的生产环境中,这种方式使用较少。而热备份可以在系统运行的情况下通过备份数据文件及归档日志就可以恢复,因此使用的范围更广泛。
热备份可以分为用户管理方式下的热备份(user-managed backup and recovery)和oracle管理(RMAN)的热备份(Recovery MANager-RMAN),要注意的是,数据库要进行热备份必须运行在归档模式下。
一、用户管理方式下的备份:
首先,备份数据文件:
1)查询数据文件有哪些:
SQL> select name from v$datafile;
2)将数据库置于备份模式下:
SQL> alter database begin backup;
3)备份数据文件:
SQL> host copy D:\ORACLE\ORCDATA\TIOD\SYSTEM01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\SYSAUX01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\UNDOTBS01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\USERS01.DBF C:\oracle\backup;
SQL> host copy E:\ORACLE\ORCL\ODS\HH_TBS.DBF C:\oracle\backup;
4)结束数据文件备份并归档日志:
SQL> alter database end backup;
SQL> alter system archive log current;
第二,备份控制文件,此处使用备份到跟踪文件的方式:
1)将建立控制文件的命令信息记录到trace文件中:
SQL> alter database backup controlfile to trace;
2)确定跟踪文件位置和名称:
SQL> select a.spid from v$process a,v$session b where a.addr=b.PADDR and b.USERNAME='SYS'
SQL> show parameter user_dump_dest;
跟踪文件命名为<SID>_ora_<SPID>.trc。
3)打开vidi_ora_1260.trc,确定建立控制文件内容;
CREATE CONTROLFILE REUSE DATABASE "TIOD" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\ORCDATA\TIOD\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\ORACLE\ORCDATA\TIOD\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\ORACLE\ORCDATA\TIOD\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORCDATA\TIOD\SYSTEM01.DBF',
'D:\ORACLE\ORCDATA\TIOD\SYSAUX01.DBF',
'D:\ORACLE\ORCDATA\TIOD\UNDOTBS01.DBF',
'D:\ORACLE\ORCDATA\TIOD\USERS01.DBF',
'E:\ORACLE\ORCL\ODS\HH_TBS.DBF'
CHARACTER SET ZHS16GBK
;
第三、备份归档日志:
确定需要备份的归档日志:
SQL> select name from v$archived_log where dest_id=1 and first_time>=sysdate-1;
使用copy命令备份到备份文件夹即可。
第四、备份参数文件:
SQL> CREATE PFILE='C:\oracle\backup\initelse.ora' from spfile;