Oracle整目录数据库迁移

系统配置

用户SHELL限制

修改/etc/security/limits.conf文件,添加如下内容:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

内核参数控制

修改/etc/sysctl.conf文件,添加如下内容:

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

用户及用户组处理

创建用户和用户组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle # 设置密码

赋数据库目录权限

chown -R oracle:oinstall /mnt/oracle

用户环境变量

编辑/home/oracle/.bashrc或者/home/oracle/.bash_profile,添加如下内容:

export ORACLE_BASE=/mnt/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib
# 数据库SID
export ORACLE_SID=ORCL

监听启动

lsnrctl start

数据库配置

切换到oracle用户执行,su - oracle

重建spfile

TIP

修改pfile内的路径为正确路径,对应目录文件ORACLE_HOME/dbs/init.ora

sqlplus / as sysdba
SQL> startup nomount;
SQL> create spfile from pfile='/mnt/oracle/app/product/11.2.0/dbhome_1/dbs/init.ora';
SQL> exit;

数据库文件移动

如果迁移后的文件路径与原数据库一致,则可以跳过此步骤

先查询出数据库文件和日志文件的路径,然后修改为新的路径。

sqlplus / as sysdba
SQL> startup nomount;
SQL> select name from v$dbfile;
SQL> select member from v$logfile;
SQL> alter database rename file '/opt/oracle/app/oradata/orcl/redo01.log' to '/mnt/oracle/app/oradata/orcl/redo01.log';
SQL> exit;

启动数据库

sqlplus / as sysdba
SQL> startup;
SQL> exit;

迁移完成后的检查

查看数据库状态

sqlplus / as sysdba
SQL> select status from v$instance;

查看监听状态

lsnrctl status

查看归档日志模式

sqlplus / as sysdba
SQL> archive log list;

查看数据文件和重做日志文件路径

sqlplus / as sysdba
SQL> select name from v$datafile;
SQL> select member from v$logfile;

查看归档日志文件

find /mnt/oracle/app/flash_recovery_area -name '*.arc'

查看ASM实例(如果有使用ASM)

sqlplus / as sysasm
SQL> show parameter instance;