Oracle迁移记录

 背景说明

自建机房中的所有服务全部迁移至阿里云服务器,重中之重-Oracle数据库迁移,包括之前所有老数据都需要迁移到阿里云服务器中。本文假设阿里云服务器已成功安装Oracle进行迁移说明。

准备工作

登录旧数据库服务器,以下命令供参考~

导出目录

这里所有操作都在旧Oracle数据库服务器上进行,建立directory目的用于旧数据库资料导出,oracle导出必须先行建立directory,相当于为物理路径取一个别名。

切换到Oracle用户下(包含环境变量)

su – oracle

创建目录

mkdir -pv /zone/bak

owner,group设为Oracle

chown -R oracle:oinstall /zone/bak/

进入SQLPLUS控制台

sqlplus /nolog

以dba身份登录SQLPLUS控制台

 

conn / as sysdba
conn system/hanley //功能同上

创建目录,存备份文件,须保证/zone/bak在OS中物理路径存在

 

create or replace directory db_bak as /zone/bak

目录授权为读写

grant read,write on directory db_bak to public

创建用户

当前操作均在阿里云新数据库服务器中进行,若源数据包括多用户,需按如下步骤建立所有用户及对应表空间,为方便后续导入,新库资料建立完全比照旧库进行,尽量保持一致。

创建表空间

 

create tablespace mtbs_01 logging datafile '/zone/oracle_bak/mtbs_data_01' size 10G autoextend on next 10m maxsize 20G extent management local;

创建临时表空间

 

create temporary tablespace mtbs_temp tempfile '/zone/oracle_bak/temp0.dbf'  size 50m  autoextend on  next 50m maxsize 1G  extent management local;

创建用户并指定表空间

 

create user hanley identified by 123456  default tablespace mtbs_01  temporary tablespace mtbs_temp;

为新用户授权

grant connect,resource,dba to hanley;

表空间新增数据文件,若源数据大于40G则需为表空间建立多个数据文件

 

alter tablespace mtbs_01 add datafile '/zone/oracle_bak/mtbs_data_02' size 1G autoextend on next 100m maxsize 2G;

修改表空间.数据文件大小,注意原则上设置的值要比设置前的值要大

 

alter database datafile '/zone/oracle_bak/mtbs_data_02'  resize 2g;

导入目录

参考“导出目录”,在新服务器.阿里云上建立directory(为迁移方便, directory最好与“导出目录”保持一致,但不是必须一定要这么做),后续自旧数据库下载的数据文件将上传到此目录,以便进行数据迁移(导入新数据库)。

数据迁移

开始导出

这里所有操作均在旧数据库服务器上进行,需要注意expdp 并不是SQL 命令,它属于$Oracle_home/bin 下的命令,建议在oracle账户下进行。

按用户导出所有对象数据,包括表及其表数据

数据量比较大时,可指定压缩参数COMPRESSION=(ALL,DATA_ONLY)

 

expdp who/enjarwhodb@testdb schemas=who dumpfile=who.dmp directory=db_bak

导出整个数据库实例,需要system或拥有dba权限的账户,一般不建议全部导出

 

expdp system/hanley@testdb directory=db_bak dumpfile=full.dmp full=y;

按用户导出并排除部分表

 

expdp hub/hub123qwe@testdb directory=db_bak dumpfile=demo.dmp schemas=hub exclude=table:"in('HUB_SMS_LOG')" logfile=demo.log owner=hub

开始导入

这里所有操作均在新数据库服务器上进行,开始之前需将上一步导出的文件上传到当前新数据库服务器上,并确保新数据库上表空间及对应用户已存在。

按用户导入

 

impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log

全库导入,不推荐

 

impdb system/CI123who@testdb directory=dump_dir dumpfile=full.dmp full=y;

源库与目标库instance不一致,scheam不一致情况

 

impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log
remap_schema=源用户名:目标用户名 remap_tablespace=源表空间:目标表空间

导入指定表表空间

 

impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;

帮助命令

表空间相关

按用户查询表空间

 

select username,default_tablespace,temporary_tablespace from dba_users where username='WHO';

查询表空间-数据文件

 

select tablespace_name,file_id,bytes/1024/1024 as file_size,file_name from dba_data_files 
order by file_id;

查询临时表空间

 

select tablespace_name,tablespace_size,allocated_space,free_space/1024/1024 as "free size(m)" from dba_temp_free_space;

EXPDP,IMPDP参数

https://www.cnblogs.com/champaign/p/7681288.html

连接相关

不连接数据库instance以sysdba进入控制台

 

sqlplus / as sysdba

无日志方式连接sqlplus,且不连接Instance,进入后使用conn连接

 

sqlplus /nolog

在sqlplus中使用conn连接数据库

 

conn username/password
conn username/password@localhost/orcl

启动相关

oracle身份登入数据库服务器

 

su – oracle

数据库监听[查看、启动、停止]

 

lsnrctl stat|start|stop

instance启动

 

conn /as sysdba
startup

instance关闭

 

shutdown immediate

进程会话相关

数据库目前的进程数

 

select count(*) from v$process;

进程数上限

 

select value from v$parameter where name = 'processes';

数据库目前的会话数

 

select count(*) from v$session;

修改processes和sessions值

 

alter system set processes=1000 scope=spfile;
alter system set sessions=1000 scope=spfile;

重置用户密码

进入sqlplus控制台修改密码

 

sqlplus /nolog
connect  /  as  sysdba
alter   user  system identified  by  新密码;

 

作者:Hanley 链接:https://www.jianshu.com/p/9b4e0493a14c 来源:简书

 

posted @ 2021-07-02 11:10  雪竹子  阅读(120)  评论(0编辑  收藏  举报