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,需要增加表空间)
/*
新增一个数据文件到表空间,数据文件可以放到同一个系统目录下,方便管理。
数据文件初始大小为1024M,自动扩展,最大不限制,也就是最大是32G
*/
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 删除表空间