数据库版本
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
数据库名
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string DB196
这是正确的 公司要求的路径
@TORCL1:/oradata/DB196\/ls -l
total 2854480
-rw-r----- 1 oracle oinstall 7847936 Jan 9 13:26 control01.ctl
-rw-r----- 1 oracle oinstall 7847936 Jan 9 13:26 control02.ctl
-rw-r--r-- 1 oracle oinstall 782 Jan 9 09:56 createctlf.sql
-rw-r----- 1 oracle oinstall 52429312 Jan 9 13:08 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Jan 9 13:08 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Jan 9 13:26 redo03.log
-rw-r----- 1 oracle oinstall 629153792 Jan 9 13:25 sysaux01.dbf
-rw-r----- 1 oracle oinstall 1073750016 Jan 9 13:25 system01.dbf
-rw-r----- 1 oracle oinstall 71311360 Jan 8 11:32 temp01.dbf
-rw-r----- 1 oracle oinstall 896540672 Jan 9 13:24 undotbs01.dbf
-rw-r----- 1 oracle oinstall 134225920 Jan 9 13:08 users01.dbf
@TORCL1:/oradata/DB196\/pwd
/oradata/DB196
我上手的路径却在 /oracle/oradata2/DB196 下面
我要做的工作就是把/oracle/oradata2/DB196
移动到 根目录 /oradata/DB196
原库RMAN备份
设定参数:
RMAN:/ CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/oradata/backup/controlfile%F.ctnl';
RMAN:/ CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/oracle/oradata/backup/full%t.bak';
数据库rman 全备
rman>backup database plus archivelog delete input;
备份产生的三个文件
-rw-r----- 1 oracle oinstall 7143424 Jan 28 18:05 controlfilec-2719028776-20100128-01.ctnl
-rw-r----- 1 oracle oinstall 41074688 Jan 28 18:03 full709495428.bak
-rw-r----- 1 oracle oinstall 763379712 Jan 28 18:05 full709495432.bak
-rw-r----- 1 oracle oinstall 17920 Jan 28 18:05 full709495518.bak
备份完成后,将当前的日志进行归档
RMAN> sql 'alter system archive log current';
sql statement: alter system archive log current
shutdown immediate
移动DB196这个文件夹到根目录的oradata/DB196
啥话也不说 先开告警日志
cd /oracle/product/diag/rdbms/db196/DB196/trace/
tail -100f aalert_DB196.log
startup nomount 这个状态下跟控制文件没任何关系
另外克隆一个窗口
cd /oracle/product/db11gr2/dbs
ls
01otddvu_1_1 hc_DB196.dat initDB196.ora lkDB196 snapcf_DB196.f
02otde5f_1_1 hc_DBUA0.dat init.ora orapwDB196 spfileDB196.ora.bak
找到了这些文件 首先干掉 initDB196.ora 因为这个里面存放的控制文件路径 是原来的路径,干掉后就是干干净净的
然后切换到SQL的窗口
create pfie from spfile; 因为DBCA创建数据库 生成的文件是 spfileDB196.ora
然候切换回来 ls -l
查看一下 新的initDB196.ora 就有了
cat initDB196.ora
发现里面的 路径还是之前的路径
DB196.__db_cache_size=922746880
DB196.__java_pool_size=16777216
DB196.__large_pool_size=16777216
DB196.__db_cache_size=922746880
DB196.__java_pool_size=16777216
DB196.__large_pool_size=16777216
DB196.__oracle_base='/oracle/product'#ORACLE_BASE set from environment
DB196.__pga_aggregate_target=536870912
DB196.__sga_target=3154116608
DB196.__shared_io_pool_size=0
DB196.__shared_pool_size=2147483648
DB196.__streams_pool_size=16777216
*._b_tree_bitmap_plans=FALSE
*.audit_file_dest='/oracle/product/admin/DB196/adump'
*.audit_trail='NONE'
*.compatible='11.2.0.0.0'
*.control_files='/oracle/oradata2/DB196/control01.ctl','/oracle/oradata2/DB196/control02.ctl' 因为我的路径变了所以这里的路径也要变
*.db_block_size=8192
*.db_domain='CCIC'
*.db_name='DB196'
*.db_recovery_file_dest_size=4294967296
*.diagnostic_dest='/oracle/product'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=DB196XDB)'
*.log_archive_dest_1='location=/oracle/oradata/archlog'
*.open_cursors=300
*.pga_aggregate_target=536870912
*.processes=1500
*.remote_login_passwordfile='NONE'
*.session_cached_cursors=250
*.sessions=1655
*.sga_target=200m,200m,3000m
*.shared_pool_size=2147483648
*.undo_tablespace='UNDOTBS1'
*.workarea_size_policy='AUTO'
"initDB196.ora" 31L, 1067C written
/oracle/oradata2/DB196/control01.ctl','/oracle/oradata2/DB196/control02.ctl'
改为 ordata/DB196/control01.ctl ordata/DB196/control02.ctl
改完了 保存
查看一下文件
@TORCL1:/oracle/product/db11gr2/dbs\/ls
01otddvu_1_1 hc_DB196.dat initDB196.ora lkDB196 snapcf_DB196.f
02otde5f_1_1 hc_DBUA0.dat init.ora orapwDB196 spfileDB196.ora
拷贝一个spfileDB196.ora.bak 把这个spfileDB196.ora干掉
@TORCL1:/oracle/product/db11gr2/dbs\/cp spfileDB196.ora spfileDB196.ora.bak
@TORCL1:/oracle/product/db11gr2/dbs\/rm -rf spfileDB196.ora
@TORCL1:/oracle/product/db11gr2/dbs\/ls
01otddvu_1_1 hc_DB196.dat initDB196.ora lkDB196 snapcf_DB196.f
02otde5f_1_1 hc_DBUA0.dat init.ora orapwDB196 spfileDB196.ora.bak
把这个文件 spfileDB196.ora 让它不能用,因为数据库启动默认选择这个文件,这个文件不能用或者删除 系统会
找 initDB196.ora来代替,那么不要删除 变成spfileDB196.ora.bak 这样就可以了 数据库尽量不要删除文件大忌会
现在系统还是在nomount状态下 现在来做 恢复控制文件
create controlfile reuse database DB196 noresetlogs archivelog
Logfile group 1 '/oracle/oradata2/DB196/redo01.log',
group 2 '/oracle/oradata2/DB196/redo02.log',
group 3 '/oracle/oradata2/DB196/redo03.log'
datafile '/oracle/oradata2/DB196/system01.dbf',
'/oracle/oradata2/DB196/sysaux01.dbf',
'/oracle/oradata2/DB196/users01.dbf',
'/oracle/oradata2/DB196/undotbs01.dbf'
CHARACTER SET UTF8 (这里要看你自己的字符集是什么) 可以去告警日志里查看 我的应该是ZHS16GBK 所以我又重新 重写了一次控制文件
;
Control file created.
然后shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 3140026368 bytes
Fixed Size 2217464 bytes
Variable Size 2197817864 bytes
Database Buffers 922746880 bytes
Redo Buffers 17244160 bytes
Database mounted.
Database opened.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29366855/viewspace-1068914/ ,如需转载,请注明出处,否则将追究法律责任。