1. 以管理员角色登录oracle数据库

2. 创建表空间、用户、用户授权
参考博文:
-
创建表空间
create tablespace 表空间名称 datafile 存放表空间地址 #一般放在 "oracle安装目录\oradata\orcl\文件名.dbf" size 1024M #表空间初始大小 autoextend on #打开/关闭自动扩展功能 “on/off” next 5M #每次增加大小 maxsize 表空间最大存储限制
-
创建用户并指定表空间
create user zhangsan #用户名 identified by root #密码 default tablespace 表空间名称 #表空间是上面创建的 temporary tablespace TEMP #临时表空间默认 TEMP profile default;
-
ora-65096:公用用户名或角色名无效
解决:oracle有些版本创建用户时需要在用户名前添加
c##
或C##
-
查看所有表空间名称语句:
select name from v$tablespace;
-
查看用户列表、删除用户命令:
select username from dba_users; #查看用户命令 drop user USERNAME cascade; #删除用户
-
-
给表空间授权 导入dmp文件需要dba权限
grant dba to zhangsan;
3. 导入dmp文件(单个)
imp 用户名/密码@orcl file=dmp文件 full=y ignore=y
#orcl是服务名,一般都为orcl
#导入dmp文件不能自己指定表名称
#当已有同名表文件存在时,ignore=y导致新数据追加在原同名表文件后面
4. 利用shell脚本批量导入dmp文件
-
windows运行shell脚本需要安装
git bash
应用,直接搜索应用一路next安装即可,安装完开始菜单图标如下: -
编写shell文件,遍历文件夹下所有dmp文件并导入数据库
(简单写法,需要保证文件夹下所有文件均为目录文件或dmp文件)
# !/bin/bash function import_dmp(){ for file in 'ls $1' #注意此处是两个反引号,表示运行系统命令 do if [ -d $1"/"$file ] #注意此处之间空格一定要加,否则会报错 then #判断是否为目录文件,若是则递归遍历 import_dmp $1"/"$file else echo $1"/"$file #输出到控制台,相当于printf imp $2 file=$1"/"$file full=y ignore=y } import_dmp $1 $2
-
运行上面编写的shell文件
./test.sh dmp文件夹路径 用户名/密码@orcl #orcl是数据库服务名 一般是orcl,有可能安装时自己设成了别的
5. Oracle报错ORA-01653:表xx无法通过8192(在表空间xx_data中)扩展
参考博文:https://segmentfault.com/a/1190000021991722
-
原因
- 查看是否磁盘已满
- 表空间已达到32G(或其他较大值)(即达到了种种限制下的本机单个空间最大值),即使设置了自动扩展和maxsize unlimited也不能继续增大表空间
-
解决方法:
alter tablespace 表空间名称 add datafile '新的表空间地址' size 1024M autoextend on next 1024M maxsize unlimited;