源库Oracle环境检查
开启归档
sqlplus / as sysdba 首先关闭数据库 shutdown immediate; 打开mount状态 startup mount; 更改数据库为归档模式 alter database archivelog; 打开数据库 alter database open; 再次检查 archive log list; |
查看构造的表和数据
SELECT table_name FROM user_tables; SELECT index_name FROM user_indexes; SELECT view_name FROM user_views; |
备份准备
创建存放备份文件目录
#源库和目标库都创建此目录 mkdir /u01/backup 为目录赋予用户权限 chown -R oracle:oinstall /u01/backup chmod 775 /u01/backup |
全库备份
进入sqlplus sqlplus / as sysdba alter system switch logfile; 使用RMAN: rman target / 备份数据文件 RMAN> backup database format '/u01/backup/data_%U.dbf'; 备份控制文件 RMAN> backup current controlfile format '/u01/backup/control_%f.dbf'; 查看 |
拷贝参数文件
准备工作
在源库中查看参数文件路径 SQL> show parameter spfile #在目标库中查看是否有源库参数文件的路径,没有则需创建 cd /u01/app/oracle/product/19.3.0/db_1/dbs ls 目标库如果有参数文件,删掉目标库的参数文件 首先关闭数据库 shu immediate 然后在dbs目录下删除参数文件 cd /u01/app/oracle/product/19.3.0/db_1/dbs rm -rf init.ora |
拷贝文件
源库复制参数文件到目标库 cd $ORACLE_HOME/dbs scp init.ora oracle@192.168.145.184:/u01/app/oracle/product/19.3.0/db_1/dbs scp spfileoracle.ora oracle@192.168.145.184:/u01/app/oracle/product/19.3.0/db_1/dbs 目标库查看 |
修改参数及环境变量
确认文件路径
SQL> select name from v$datafile; 在目标库查看参数文件init.ora cat init.ora |
创建路径
目标库创建文件 #如果存在路径则不用创建 mkdir -p /u01/app/oracle/admin/oracle/adump mkdir -p /u01/app/oracle/flash_recovery_area |
删除原文件
cd /u01/app/oradata rm -rf * |
更改环境变量
#如果目标库跟源库一致则不用 查看源库环境变量 cat .bash_profile 修改目标库环境变量跟源库一致 vim .bash_profile source .bash_profile cat .bash_profile |
复制归档文件
查看归档文件路径
select name from v$archived_log order by 1; |
拷贝归档文件
cd /u01/app/oracle/product/19.3.0/db_1/dbs ll 将这归档文件拷贝过去 scp arch1_1* c-2037386630-20240408-0* 192.168.145.184:/u01/app/oracle/product/19.3.0/db_1/dbs |
拷贝备份文件
cd /u01/backup scp * oracle@192.168.145.184:/u01/backup |
备份恢复
恢复文件
在目标库中的操作,开启数据库到nomount状态 sqlplus / as sysdba SQL> startup nomount 打开RMAN开始恢复 rman target / 恢复控制文件 RMAN> restore controlfile from '/u01/backup/control_0.dbf'; 恢复数据文件 RMAN> sql 'alter database mount'; RMAN> restore database; |
归档日志
检查归档日志
RMAN> crosscheck archivelog all; |
将归档日志catalog
RMAN> catalog archivelog '/u01/app/oracle/flash_recovery_area/arch1_18_1164309192.dbf'; |
修复数据库
RMAN> recover database; 此时发现报错,则通过以下命令执行 RMAN> recover database until sequence 20; |
RESETLOGS启库
RMAN> sql 'alter database open RESETLOGS'; |
确认数据库
查看状态
SQL> select status from v$instance; |
查看测试表
SQL> select table_name from user_tables; |
数据迁移完成。