1.1.1 EIBS数据库迁移
一.EIBS原数据库
A、原数据库参数文件准备
Ø 原参数文件路径: $ORACLE_HOME/dbs/
Ø 需要迁移的文件、目录
参数文件:$ORACLE_HOME/dbs/initeibs.ora
口令文件:
监听文件:$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/listener.ora
以上文件复制到新数据库中后提前修改相应的数据库定义
B、新数据库环境准备
1)、修改相应数据库参数配置
按照标准定义,修改控制文件路径以及归档日志文件路径,同时注意文件中修改”dest”关键字的路径。
2)、 手工创建步骤“16”中的几个*dump目录以及db_recovery_file_dest目录
二.EIBS数据库文件迁移准备
原数据库文件路径 /oraeibs/eibs
FTP传输后的文件路径: /backup/oradta_bak/eibs/
需要迁移的文件、目录
A、文件:
/oraeibs/eibs/*
B、目录:
/oraeibs/eibs/archivelog/*
三.宕原EIBS数据库
A、停原EIBS数据库。
B、检查数据库是否停完全。
四.复制文件到新EIBS数据库
步骤2中所列文件和目录复制到新数据库服务器上的路径为/backup/oradata_bak/eibs/
/backup/oradata_bak/eibs/archivelog/
五.新EIBS数据库恢复
A、检查新数据库的相关环境变量,并设定ORACLE_SID
B、按照新定义的数据库构架,拷贝文件到指定目录:
1)、参数文件拷贝
拷贝修改后initeibs.ora $ORACLE_HOME/dbs/.
2)、监听器配置文件以及TNS配置文件拷贝
拷贝修改后tnsnames.ora $ORACLE_HOME/network/admin/.
拷贝修改后listener.ora $ORACLE_HOME/network/admin/.
3)、所有的数据文件拷贝【依据标准结构】
拷贝/backup/oradata_bak/eibs/*.dbf到/oradata/eibs/data/.
拷贝/backup/oradata_bak/eibs/archivelog/*.*到/oradata/eibs/arch/.
4)、拷贝所有的redo日志文件路径到指定路径【依据标准结构】
5)、拷贝控制文件到指定的目录
6)、拷贝归档日志到指定的目录
7)、使用新pfile创建spfile文件
8)、启动数据库到mount状态 并修改所有数据库文件的注册路径到新路径
9)、更改redo文件注册路径
10)、重组新的临时表空间数据文件
11)、检查临时文件是否添加成功,启动数据库
12)、启动监听,并检查监听端口状态
13)、完整正常步骤重启数据库,并检查alert日志
14)、测试sqlplus正常连接到eibs数据库
15)、增加redo日志成员组,并检查redo成员的状态。
---------------------------------------------------------------------------------------------
以下是操作步骤
1. 该方案实施风险小,对数据库原数据没有影响。
2. 该方案是采用数据库冷迁移方式【将数据库文件直接拷贝到新库】,然后重新构架数据库的方式迁移数据库。
3. 该方案将控制文件、redo文件存放在多个文件系统,避免因为单一文件系统损坏而带来的数据丢失隐患。【按照新的数据库构架实施】
前提条件:
1. 目标库已经安装好oracle软件,系统相关的环境参数以及ORACLE_HOME等环境变量已经设定。
2. 目标库的目录设定已经是标准化设定,具体请看文件 “空间规划”sheet页面的数据库部分,lv名以及文件系统名已经标准化。
3. 正式实施时需要关闭连接原数据库的所有应用。
提前检查步骤:(该步骤必须在迁移之前完成)
具体步骤:
原数据库上操作:
1. oracle用户登录系统
su – oracle
2. 设定oracle sid环境,假设SID=eibs
export ORACLE_SID=eibs
3. 检查已经没有应用的普通用户连上来
Sqlplus '/as sysdba'
select username,count(*) from v$session group by username;
没有普通用户的下连接数说明数据库现在没有其他用户连上来。
4. 创建一个pfile参数文件。创建的文件默认是放置在$ORACLE_HOME/dbs/,文件名默认是init{SID}.ora,
create pfile from spfile;
5. 检查数据文件路径以及状态,记录下数据文件路径。
col file_name for a32
select FILE_NAME,TABLESPACE_NAME,STATUS from dba_data_files;
FILE_NAME TABLESPACE_NAME STATUS
-------------------------------- ------------------------------ ---------
/oraeibs/eibs/users01.dbf USERS AVAILABLE
/oraeibs/eibs/sysaux01.dbf SYSAUX AVAILABLE
/oraeibs/eibs/system01.dbf SYSTEM AVAILABLE
/oraeibs/eibs/rman01.dbf RMAN AVAILABLE
/oraeibs/eibs/coebankdata01.dbf COEBANKDATA AVAILABLE
/oraeibs/eibs/coebankdata02.dbf COEBANKDATA AVAILABLE
/oraeibs/eibs/coebankindx01.dbf COEBANKINDX AVAILABLE
/oraeibs/eibs/imebankdata01.dbf IMEBANKDATA AVAILABLE
/oraeibs/eibs/imebankindx01.dbf IMEBANKINDX AVAILABLE
/oraeibs/eibs/undotbs2.dbf UNDOTBS2 AVAILABLE
6. 检查临时表空间文件路径,记录下数据文件路径以及文件大小
SQL> select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;
FILE_NAME TABLESPACE_NAME STATUS
-------------------------------- ------------------------------ ---------
/oraeibs/eibs/temp01.dbf TEMP AVAILABLE
7. 检查redo日志文件路径,记录下文件路径等信息。
col member for a32
select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------- ---
3 ONLINE /oraeibs/eibs/redo03.log NO
2 ONLINE /oraeibs/eibs/redo02.log NO
1 ONLINE /oraeibs/eibs/redo01.log NO
8. 检查控制文件路径,记录下文件路径等信息。
col name for a32
select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------- --- ---------- --------------
/oraeibs/eibs/control01.ctl NO 16384 416
/oraeibs/eibs/control02.ctl NO 16384 416
/oraeibs/eibs/control03.ctl NO 16384 416
以下9,10步骤在新数据库上操作
9. 配置其他oracle启动实例的参数(已经完成)
vi /etc/oratab
里面增加一行【格式是: SID:$ORACLE_HOME:N 】
eibs:/oracle/app/oracle/product/10g:N
添加密码文件
orapwd file=/oracle/app/oracle/product/10g/dbs/orapweibs password=oracle entries=10
10. 检查监听文件,主要是监听IP,如果跟现在数据库服务器ip匹配,可启动监听。((已经完成))
lsnrctl start
lsnrctl status
11.记录SCN最大改变号
select last_redo_change# from v$thread;
准备工作结束
================================================================================================
迁移数据文件开始
================================================================================================
(11,12步骤为文件传输步骤)
11. 关闭数据库
SQL>shutdown immediate
SQL>quit
$ps -ef|grep oracle (检查数据库进程是否停止干净)
12. 依据步骤“4”、“5”、“7”、“8”得到的文件信息,拷贝到目标数据库。
注:步骤“6”Temp临时表空间数据文件不用拷贝,但是需要记录文件路径以及大小,表空间名这些信息备用
将$ORACLE_HOME/network/admin下的listener.ora以及tnsnames.ora拷贝到目标数据库[监听文件以及tns文件]
1) 拷贝文件:(已经完成)
A、数据文件
B、参数配置文件:$ORALCE_HOME/dbs/initeibs.ora (已经完成)
C、口令文件:
D、监听文件: $ORALCE_HOME/network/admin/listener.ora (已经完成)
$ORALCE_HOME/network/admin/tnsnames.ora (已经完成)
2) 传输后拷贝文件均放置到/backup/eibs目录
原服务器数据文件原位置:/oraeibs/eibs/
原服务器归档数据文件原位置:/oraeibs/eibs/archivelog/
新数据文件位置:
/oradata/eibs/data
/oradata/eibs/redoA
/oradata/eibs/redoB
/oradata/eibs/arch
===========================================================================================
迁移数据文件结束
===========================================================================================
恢复步骤开始
===========================================================================================
--目标数据库操作。
13. oracle用户登录
su – oracle
14. 检查系统环境,看参数是否设定(已经完成)
ulimit –a
15. 检查环境变量,看ORACLE_HOME是否设定(已经完成)
env|grep ORACLE
16. 设定ORACLE SID
export ORACLE_SID=eibs
17. 按照新定义的数据库构架,拷贝文件到指定目录:(已经完成)
A、参数文件拷贝
cp /orabackup/eibs/initeibs.ora $ORACLE_HOME/dbs/.
cp /orabackup/eibs/tnsnames.ora $ORACLE_HOME/network/admin/.
cp /orabackup/eibs/listener.ora $ORACLE_HOME/network/admin/.
B、监听器配置文件以及TNS配置文件拷贝(已经完成)
cp /orabackup/eibs/tnsnames.ora $ORACLE_HOME/network/admin/.
cp /orabackup/eibs/listener.ora $ORACLE_HOME/network/admin/.
C、所有的数据文件拷贝【依据标准结构】
cp /backup/eibs/*.dbf /oradata/eibs/data/.
(注意归档文件的位置)
D、所有的redo日志文件路径拷贝【依据标准结构】
cp /orabackup/eibs/redo01.log /oradata/eibs/redoA/redo01A.log
cp /orabackup/eibs/redo02.log /oradata/eibs/redoA/redo02A.log
cp /orabackup/eibs/redo03.log /oradata/eibs/redoA/redo03A.log
E、控制文件拷贝
cp /orabackup/eibs/control01.ctl /oradata/eibs/data/control01.ctl
cp /orabackup/eibs/control02.ctl /oradata/eibs/redoA/control02.ctl
cp /backup/eibs/control03.ctl /oradata/eibs/redoB/control03.ctl
F、归档日志拷贝
cp /orabackup/eibs/archivelog/* /oradata/eibs/arch
18. 按照标准定义,修改控制文件路径以及归档日志文件路径,同时注意文件中修改”dest”关键字的路径。(已经完成)
A、修改控制文件控制文件路径
*.control_files='/oradata/eibs/data/control01.ctl','/oradata/eibs/redoA/control02.ctl','/oradata/eibs/redoA/control03.ctl'
dest关键字的路径:
*.audit_file_dest='/oracle/app/oracle/admin/eibs/adump'
*.background_dump_dest='/oracle/app/oracle/admin/eibs/bdump'
*.core_dump_dest='/oracle/app/oracle/admin/eibs/cdump'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest_1='LOCATION=/oradata/eibs/arch' ------归档日志路径
*.user_dump_dest='/oracle/app/oracle/admin/eibs/udump'
(已经完成)
19. 手工创建步骤“16”中的几个*dump目录以及db_recovery_file_dest目录
mkdir -p /oracle/app/oracle/admin/eibs/adump
mkdir -p /oracle/app/oracle/admin/eibs/bdump
mkdir -p /oracle/app/oracle/admin/eibs/cdump
mkdir -p /oracle/app/oracle/admin/eibs/udump
mkdir -p /oracle/app/oracle/flash_recovery_area
(已经完成)
20. 创建spfile
sqlplus '/as sysdba'
startup nomount pfile='/oracle/app/oracle/product/10g/dbs/initeibs.ora'
create spfile from pfile='/oracle/app/oracle/product/10g/dbs/initeibs.ora'
shutdown immediate
21. 启动数据库到mount状态 并修改所有数据库文件的路径到新路径
startup mount
alter database rename file '/oraeibs/eibs/system01.dbf' to '/oradata/eibs/data/system01.dbf';
alter database rename file '/oraeibs/eibs/sysaux01.dbf' to '/oradata/eibs/data/sysaux01.dbf';
alter database rename file '/oraeibs/eibs/users01.dbf' to '/oradata/eibs/data/users01.dbf';
alter database rename file '/oraeibs/eibs/rman01.dbf' to '/oradata/eibs/data/rman01.dbf';
alter database rename file '/oraeibs/eibs/undotbs2.dbf' to '/oradata/eibs/data/undotbs2.dbf';
alter database rename file '/oraeibs/eibs/coebankdata01.dbf' to '/oradata/eibs/data/coebankdata01.dbf';
alter database rename file '/oraeibs/eibs/coebankdata02.dbf' to '/oradata/eibs/data/coebankdata02.dbf';
alter database rename file '/oraeibs/eibs/coebankindx01.dbf' to '/oradata/eibs/data/coebankindx01.dbf';
alter database rename file '/oraeibs/eibs/imebankdata01.dbf' to '/oradata/eibs/data/imebankdata01.dbf';
alter database rename file '/oraeibs/eibs/imebankindx01.dbf' to '/oradata/eibs/data/imebankindx01.dbf';
22. 更改redo文件注册路径
alter database rename file '/oraeibs/eibs/redo01.log' to '/oradata/eibs/redoA/redo01A.log';
alter database rename file '/oraeibs/eibs/redo02.log' to '/oradata/eibs/redoA/redo02A.log';
alter database rename file '/oraeibs/eibs/redo03.log' to '/oradata/eibs/redoA/redo03A.log';
…………所有redo文件路径更改……………………..
23. 重组新的临时表空间数据文件。
--在新路径下为临时表空间增加一个新文件。确定临时文件大小
alter database open;
alter tablespace temp add tempfile '/oradata/eibs/data/temp01.dbf ' size 500m;
--删除老的临时文件注册路径
Shutdown immediate
Startup mount
Alter database tempfile '/oraeibs/eibs/temp01.dbf' drop;
Alter database open;
(此时数据库已经可以正常启动)
24. 检查监听端口状态
netstat -an|grep 152
25.正常启动数据库一次
shutdown immediate;
startup ;
lsnrctl start
lsnrctl status
26. 依据新的数据库结构定义,给每组redo增加一个新成员。
alter database add logfile member '/oradata/eibs/redoB/redo01B.log' to group 1;
alter database add logfile member '/oradata/eibs/redoB/redo02B.log' to group 2;
alter database add logfile member '/oradata/eibs/redoB/redo03B.log' to group 3;
27.手动切换archivelog,让增加的成员生效
select * from v$logfile; --此时有增加的日志成员是INVALID状态,因为新增加的日志成员没有使用,当归档切换时会该面其状态。
ALTER SYSTEM ARCHIVE LOG CURRENT;
---------------------------------------------------------------------------
27. 通过tnsname验证数据库是否可以连接,并且测试运行情况。
Sqlplus sys/oracle@eibs as sysdba
Select name from v$database;
返回数据库SID_NAME,说明数据库启动正常。
28.rman相关修改
rman catalog rman/rman target /
crosscheck archivelog all;
delete expired archivelog all;
exit
rman target /
crosscheck archivelog all;
delete expired archivelog all;
exit
28. 数据库迁移成功,联系应用连接使用。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/759027/viewspace-740507/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/759027/viewspace-740507/