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
导出整个数据库实例,需要system或拥有dba权限的账户,一般不建议全部导出
expdp system/hanley
按用户导出并排除部分表
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
源库与目标库instance不一致,scheam不一致情况
impdp hub/hanley@who directory=db_bak dumpfile=hub.dmp logfile=x.log
remap_schema=源用户名:目标用户名 remap_tablespace=源表空间:目标表空间
导入指定表表空间
impdp system/manager
帮助命令
表空间相关
按用户查询表空间
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
启动相关
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 来源:简书
喜欢请赞赏一下啦^_^
微信赞赏
支付宝赞赏