- ---------- Oracle rman 备份与恢复 ------
- -- rman 自动备份脚本 2011/7/23 14:32:55
- rman target / log=/oracle/bk_rman/rmanbackup.log <<!
- # -- as compressed backupset 压缩备份
- # -- filesperset 2 用多少个线程;---好像翻译名字不对;
- backup as compressed backupset filesperset 2 database format "/oracle/bk_rman/%u";
- backup archivelog all format "/oracle/bk_rman/%u.bk";
- delete noprompt obsolete;
- !
-
-
-
- -- 玩恢复;2011/7/23 14:38:36
- -- 做业务
- col NAME for a50
- select FILE#, name from V$datafile;
- update scott.emp set sal=sal+1;
- commit;
- alter system switch logfile;
-
-
- -- rman 恢复到新的位置 2011/7/23 15:15:48
- -- 假如 源文件 为 去哪
- -- 到哪去
- -- 源文件
- -- 源文件
- -- 到哪去
- -- 去 rman 中执行;
- RUN
- {
- ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
- SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
- SET NEWNAME FOR DATAFILE "/oracle/oradata/orcl_new/users01.dbf"
- TO "/oracle/oradata/users01.QQ";
- RESTORE DATAFILE "/oracle/oradata/orcl_new/users01.dbf";
- SWITCH DATAFILE "/oracle/oradata/orcl_new/users01.dbf";
- RECOVER DATAFILE "/oracle/oradata/users01.QQ";
- SQL "ALTER TABLESPACE users ONLINE";
- }
-
-
-
- ------- rman 远程服务器使用 rman 备份的数据库 恢复到本地 实验2011/7/23 20:55:23 -----------
- ------- begin --------
- -- 首先 把 rman 备份拷贝到本地; scp... /tmp/rman_bk
- 1.无配置启动
- 1)rman target /
- 在日志中找出pfile文件参数;并写出initxxx.ora中;
- 2)sqlplus 中 startup nomount;
- 2.找控制文件, 从拷贝回来的备份文件中;
- 找到从备份文件中找出存储控制文件的那个备份文件,特性是,小,时间靠后;
- pfile中指定controfile位置 -- 参考 最后的pfile 文件格式; initXXX.ora
- sqlplus
- startup nomount force
- 3.-- 恢复控制文件 文件是根据 2 步骤找出来的;
- rman
- restore controlfile from "/tmp/rman_bk/0kmi5ov2"
- 4.登记到catalog
- -- sqlplus 中
- startup force mount
- -- rman 中, 校验 copy 与backup 文件
- crosscheck copy;
- crosscheck backup;
-
- -- 查看恢复ctlF中记录的copy(archivelog), backup(rman的备份)信息
- list copy ;
- list backup;
-
- -- 清空恢复的文件中的copy(archivelog), backup(rman的备份) 记录
- delete noprompt expired copy;
- delete noprompt expired backup;
-
- -- 登记备份的文件到 controlfile中;
- catalog start with "/tmp/rman_bk";
-
- -- 恢复 spfile --> 查看在哪个备份文件中;
- list backup of spfile;
- restore spfile;
-
- ---------- 将数据文件恢复到新的路径 -- 控制文件从存储了各个数据文件的存放地址,所以改恢复路经;-------------
- -- 1.组合成要恢复的路经设置语句;
- select "set newname for datafile """||name||""" to ""/oracle/oradata/orcl/"|| substr(name,7)||""";" from v$datafile;
-
- -- 2. rman中执行恢复 set newname .... 来自于 1.的输出结果
- run
- {
- set newname for datafile "/o254/system01.dbf" to "/oracle/oradata/orcl/system01.dbf";
- set newname for datafile "/o254/undotbs01.dbf" to "/oracle/oradata/orcl/undotbs01.dbf";
- set newname for datafile "/o254/sysaux01.dbf" to "/oracle/oradata/orcl/sysaux01.dbf";
- set newname for datafile "/o254/users01.dbf" to "/oracle/oradata/orcl/users01.dbf";
- set newname for datafile "/o254/example01.dbf" to "/oracle/oradata/orcl/example01.dbf";
- restore database;
- switch datafile all;
- recover database;
- }
- /* 出现如下错误,正常--- 因为log文件位置不对;
- RMAN-06054: media recovery requesting unknown log: thread 1 seq 9 lowscn 1531825
- */
-
- -- 3. 在sqlplus中修改日志文件路经 因 controlfile 文件中存储了 日志文件的路经( rman 备份的那个 controlfile ),所以要替换成新的路经;
- select "alter database rename file """||member||""" to """|| replace(member,"/o254/","/oracle/oradata/orcl/")||""";" from v$logfile;
- -- 得出如下修改命令 --> 修改 controlfile 存储日志文件的地址;
- alter database rename file "/o254/redo03.log" to "/oracle/oradata/orcl/redo03.log";
- alter database rename file "/o254/redo02.log" to "/oracle/oradata/orcl/redo02.log";
- alter database rename file "/o254/redo01.log" to "/oracle/oradata/orcl/redo01.log";
-
- -- 启动 DB 用 resetlog方式;
- alter database open resetlog;
-
- ----- end ---------
-
-
-
-
- ----------------- 临时表空间的文件恢复后不能用的解决方法 ---------------------
- -- 查看临时表空间信息;
- select file#, NAME, status, CREATION_TIME from v$tempfile;
-
- -- 临时表空间 增加文件;
- alter tablespace temp add tempfile "/oracle/oradata/orcl/temp02.dbf"
- size 50m
- maxsize 100m
- autoextend on;
-
- -- 让临时表空间数据文件下线, 并删除之
- alter database tempfile "/oracle/oradata/orcl/temp.dbf" offline;
- alter database tempfile "/oracle/oradata/orcl/temp.dbf" drop ;
-
- -- 查询出表空间创建的 DDL语句;
- set long 99999
- set pagesize 9999
- SELECT DBMS_METADATA.GET_DDL("TABLESPACE", TS.TABLESPACE_NAME) from dba_tablespaces ts;
- ---------------- end --------------------------------------------------------
-
-
-
-
-
-
- ---- pfile 文件 样例 initXXX.ora------------------------
- __shared_pool_size = 113246208
- __large_pool_size = 4194304
- __java_pool_size = 4194304
- __streams_pool_size = 0
- sga_target = 285212672
- pga_aggregate_target = 94371840
-
- db_block_size = 8192
- __db_cache_size = 159383552 # 152M
- compatible = 10.2.0.1.0
- control_files = /oracle/oradata/orcl/control01.ctl, /oracle/oradata/orcl/control02.ctl, /oracle/oradata/orcl/control03.ctl
- # archive file save path
- log_archive_dest_1 = "location=/oracle/arc"
- log_archive_format = %s_%t_%r.arc
- db_file_multiblock_read_count= 16
- db_recovery_file_dest = /oracle/flash_recovery_area
- db_recovery_file_dest_size= 2147483648
- undo_management = AUTO
- undo_tablespace = UNDOTBS1
- remote_login_passwordfile= EXCLUSIVE
- job_queue_processes = 10
- background_dump_dest = /oracle/admin/orcl/bdump
- user_dump_dest = /oracle/admin/orcl/udump
- core_dump_dest = /oracle/admin/orcl/cdump
- audit_file_dest = /oracle/admin/orcl/adump
- db_name = orcl
- open_cursors = 300
Oracle数据库增加样例数据 scott用户与相关的表Oracle如何使用DBMS_METADATA.GET_DDL获取表,表空间,用户,视图等的DDL语句相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)