您的位置:首页 > 数据库 > Oracle

day14_oracle数据库备份

2016-03-21 21:31 148 查看
SQL> shutdown immediateSQL> startup mount
查看归档模式SQL> archive log list
设置为归档模式SQL> alter database archivelog;SQL> alter database open;
查看归档进程[oracle@sq ~]$ ps -ef |grep arc
查看归档路径SQL> show parameter DB_RECOVERY_FILE_DEST
SQL> alter system switch logfile;(切换日志时会产生归档文件,进入归档路径下查看)
--------------------------------------------更改归档日志目录SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog01' scope=both;
SQL> alter system set log_archive_dest_2='location=/home/oracle/archivelog02' scope=both;
系统cpu ,i/o 资源充足情况下,增加归档进程提高性能.查看参数 (一共有10个进程,看情况自行增加)SQL> show parameter archive
--------------------------------------------归档路径中 日志格式为dbf,改变格式SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
%s: 日志序列号:
%S: 日志序列号(带有前导)
%t: 重做线程编号.
%T: 重做线程编号(带有前导)
%a: 活动ID号
%d: 数据库ID号
%r RESETLOGS的ID值.

SQL> startup force(查看归档路径变为arc后缀)
==============================================完全数据库脱机冷备份
拷贝出控制文件,数据文件,日志文件[oracle@sq ~]$ mkdir db_bak

SQL> select 'cp '||member||' /home/oracle/db_bak' from v$logfile t 2 union all 3 select 'cp '||file_name||' /home/oracle/db_bak' from dba_data_files 4 union all 5 select 'cp '||name||' /home/oracle/db_bak' from v$controlfile;(生成拷贝命令,把生成的命令都执行一边)
==================================================部分数据库联机备份备份表空间(查看表空间)SQL> select TABLESPACE_NAME from dba_tablespaces;
1.SQL> alter tablespace users begin backup;
[oracle@sq ~]$ cp /u01/app/oracle/oradata/orcl/users01.dbf /home/oracle/db_bak12.备份完毕后结束SQL> alter tablespace users end backup;
3.[oracle@sq orcl]$ rm -rf users01.dbf
4.SQL> startup force;ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
5.把备份的文件拷贝回来[oracle@sq db_bak1]$ cp users01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
6.离线文件SQL> alter database datafile 4 offline;
7.恢复文件SQL> recover datafile 4;SQL> alter database datafile 4 online;
8.SQL> alter database open;
查看状态SQL> select FILE_NAME,FILE_ID,STATUS from dba_data_files
查看备份SQL> select * from v$backup;=====================================================全库联机备份
1.整库声明备份SQL> alter database begin backup;SQL> select * from v$backup;结果所有文件 都是备份状态
2.把数据文件拷贝出来[oracle@sq ~]$ mkdir db_bak2[oracle@sq orcl]$ cp *.dbf /home/oracle/db_bak2/
3.控制文件也可能损害,如何把控制文件也备份出来呢SQL> oradebug setmypid;SQL> alter database backup controlfile to trace;
SQL> oradebug tracefile_name;/u01/app/oracle/admin/orcl/udump/orcl_ora_11743.trc
里面有创建控制文件命令CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292LOGFILE GROUP 1 '/oracle/app/oradata/TEST/redo01.log' SIZE 50M, GROUP 2 '/oracle/app/oradata/TEST/redo02.log' SIZE 50M, GROUP 3 '/oracle/app/oradata/TEST/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE '/oracle/app/oradata/TEST/system01.dbf', '/oracle/app/oradata/TEST/undotbs01.dbf', '/oracle/app/oradata/TEST/sysaux01.dbf', '/oracle/app/oradata/TEST/users01.dbf'CHARACTER SET AL32UTF8;

(reuse是建表空间时重新使用已存在的文件,如未指定reuse,那么如果要建的文件已存在,则会报错。
noresetlogs 恢复的时候,把原来redo里的信息不更新,即新的数据库的SCN号和原来的SCN号是连续的,这个一般用于完全恢复resetlogs就是会把redo里原来的信息会重置,相当于一个新的数据库的建立)
4.删除[oracle@sq orcl]$ rm -rf 控制文件
5.SQL> startup force;ORA-00205: error in identifying control file, check alert log for more info
6.执行上面的创建控制文件命令7.SQL> alter database open;(报错)
8.SQL> recover database;SQL> alter database open;(成功)==================================================================================备份日志文件的高可靠(日志镜像)SQL> show parameter archive(查看备份日志通道)
[oracle@sq ~]$ mkdir archivelog1[oracle@sq ~]$ mkdir archivelog2
SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog1';
SQL> alter system set log_archive_dest_2='location=/home/oracle/archivelog2';

SQL> show parameter archiveSQL> alter system switch logfile;(切换日志)
进入 archivelog1 archivelog2目录会看到 2个一样的文件
[oracle@sq archivelog1]$ ps -ef |grep ora_(两个归档进程)oracle 19962 1 0 06:28 ? 00:00:00 ora_arc0_orcloracle 19964 1 0 06:28 ? 00:00:00 ora_arc1_orcl

SQL> show parameter archive (两个进程)log_archive_max_processes integer 2
SQL> alter system set log_archive_max_processes=3;(改变进程数)

[oracle@sq archivelog1]$ ps -ef |grep ora_(结果3个)

SQL> alter system set log_archive_dest_2='';(清除通道)===========================

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: