天天看点

ORACLE迁移数据,导库

Oracle倒库思想:

1、背景介绍:

同事导出的oracle数据:dmp文件,准备将导入的文件,导入到一个新建的数据库中;(window电脑下)

导入之前应该先了解,两个数据库之间的版本、字符集编码、调整至一致,本次使用impdp导入:(版本没有影响导库)

暂时不知同事 怎么导出的dmp文件,不过使用了impdp命令试了下,导入成功了!!!!

2、如何调整字符集(前期导入发下,有表数据没有插入成功,报了很多同样的错,查询表的结构有了

但是没有数据,百度后发现,字符集问题)

2.1.cmd

2.2.输入set ORACLE_SID=你想进入的数据库的那个sid

2.3.输入 sqlplus /nolog

2.4.将数据库启动到RESTRICTED模式下做字符集更改: 

SQL> conn /as sysdba 

SQL> shutdown immediate; 

SQL> startup mount 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

SQL> alter database open; 

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;  

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: 

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

SQL> select * from v$nls_parameters;    --查看当前使用的字符集

重启检查是否更改完成: 

SQL> shutdown immediate; 

SQL> startup 

SQL> select * from v$nls_parameters;   --查看当前使用的字符集

3、本次重新创建一个数据库实例 导库

-- 使用 oracle管理工具 创建一个新的 数据库实例  (自行百度)

-- 使用system用户登录  切换sys用户

--来创建表空间,等信息

--创建表空间(考虑数据超级大 26G,一个表空间最多32G,需要增加表空间)

create tablespace 表空间名称

datafile 'E:\app\admin\oradata\****\表空间名称01.dbf' size 10000M

autoextend on next 1024M maxsize unlimited   --每次扩展1024M,无限制扩展

EXTENT MANAGEMENT local  autoallocate

segment space management auto;

--  在增加表空间  (主要  本次要导入的dmp文件 有26G,需要增加表空间)

ALTER TABLESPACE 表空间名称 ADD DATAFILE 'E:\app\admin\oradata\***\用户名02.dbf'

    SIZE 5000M AUTOEXTEND ON NEXT 1024M maxsize unlimited;

--创建用户名和密码,分配表空间

create user 用户名 identified by 密码default tablespace 表空间名称 temporary tablespace temp;

--授权test,千万别手残加单引号'test'  加了不报错但是登录不上提示用户名密码错误

grant connect,resource,dba to 用户名;

--//导入dmp到自己创建的表空间,

在第一次cmd进来的用户窗口下

我此次把文件放在:E:\app\admin\admin\***\dpdump  目录下

---执行导库命令 

impdp 用户名/密码@数据库实例名称 dumpfile=dmp文件名称.dmp

4、怎么删除表空间:如果导错:

    怎么删除用户:

--此数据库中有哪些用户

select * from dba_users; 

查询用户的sid serial

select saddr,sid,serial#,paddr,username,status from v$session where  username = '用户名';

--杀死他

alter system kill session '5,262';

--删除用户

DROP USER 用户名 CASCADE;

---------------------------

删除表空间

-- 查询表空间信息

select default_tablespace, temporary_tablespace, d.username  

from dba_users d;

-- 查看用户的表空间信息路径

select file_name from dba_data_files where tablespace_name = '用户名';

--------------------

删除表空间和文件:

drop tablespace 表空间名称 including contents and datafiles;

---其他信息

查询当前数据库实例名:

select instance_name from v$instance;

查询当前数据库名:

select name from v$database;

select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system

select * from all_users;  查看你能管理的所有用户!

select * from user_users; 查看当前用户信息 !

--------------------

4、多个数据库实例 怎么使用

windows下安装了多个oracle服务后,系统默认会设置最后一次安装的数据库实例,

要切换实例登录sqlplus,在CMD窗口下,先修改ORACLE_SID的值(set ORACLE_SID=xxxx,

该修改仅对当前CMD窗口有效),

接着用同一CMD窗口访问数据库即可。

cmd先执行:

set ORACLE_SID=实例名称

在连接数据库使用:

5、参考原文信息链接

oracle 修改字符集 修改为ZHS16GBK

https://blog.csdn.net/qq_22472921/article/details/82020646

是甲方的信息部做数据迁移的时候出错导致的。

https://blog.csdn.net/qq_28722455/article/details/81298452

物理删除DBF文件导致数据库不能正常使用的解决方法

https://blog.csdn.net/qq_31082427/article/details/84067395

oracle 删除表空间

https://blog.csdn.net/qq_42774325/article/details/81913252