zoukankan      html  css  js  c++  java
  • 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 来源:简书

     

    喜欢请赞赏一下啦^_^

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    javascript事件委托和jQuery事件绑定on、off 和one
    转:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    网游加速器原理、技术与实现
    自动化测试等级
    游戏测试工具
    JMeter
    Python高级编程
    测试提高项目的方法
    python mysqldb
    Python中的操作符重载
  • 原文地址:https://www.cnblogs.com/lkj371/p/14962423.html
Copyright © 2011-2022 走看看