GuangchaoSun's Blog

Oracle新建表空间及用户

oracle 基本命令:

启动数据库服务和监听器

1
2
net start OracleXETNSListener
net start OracleServiceXE

登录,修改密码

1
2
sqlplus / as sysdba
alter user sys identified by password;

reference:

1
2
3
4
select username from dba_users; #查询所有用户
drop user <user_name> cascade; #删除用户
select tablespace_name, status from dba_tablespaces; #查看表空间及状态
drop tablespace <tablespace_name> including contents and datafiles; #删除表空间

前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除

如何导入dmp文件

创建临时表空间和表空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> create temporary tablespace user_temp
2 tempfile 'D:\oracle_table_space\sgc_temp.dbf'
3 size 50m
4 autoextend on
5 next 50m maxsize 2048m
6 extent management local;
表空间已创建。
SQL> create tablespace user_data
2 logging
3 datafile 'D:\oracle_table_space\sgc_data.dbf'
4 size 50m
5 autoextend on
6 next 50m maxsize 2048m
7 extent management local;
表空间已创建。

创建用户并指定表空间和默认表空间,给用户授予权限

1
2
3
4
5
6
7
8
SQL> create user sunguangchao identified by sunguangchao
2 default tablespace user_data
3 temporary tablespace user_temp;
用户已创建。
SQL> grant connect, resource, dba to sunguangchao;
授权成功。

查了一下临时表空间的定义:

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间,可自动释放;而表空间中存储表数据、函数、过程、序列等。是随数据库永久存在的。

具体的操作流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
C:\WINDOWS\system32>set ORACLE_SID = webagent
C:\WINDOWS\system32>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 11月 2 09:27:58 2017
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> create bigfile tablespace CC_BASE logging datafile 'CC_BASE.dbf' size 100m autoextend on next 50m maxsize 32768m extent management local;
表空间已创建。
SQL> create bigfile tablespace CC_IBASE logging datafile 'CC_IBASE.dbf' size 100m autoextend on next 50m maxsize 32768m extent management local;
表空间已创建。
SQL> create bigfile temporary tablespace CC_BASE_TMP tempfile 'CC_BASE_TMP.dbf' size 100m autoextend on next 50m maxsize 32768m extent management local;
表空间已创建。
SQL> create user webagent identified by "webagent" default tablespace CC_BASE temporary tablespace CC_BASE_TMP;
用户已创建。
SQL> grant connect, resource, dba to webagent;
授权成功。

问题:

1
imp webagent/webagent@XE file="D:\oracle_table_space\ccdb.dmp" fromuser=webagent touser=webagnet

后来导入的时候发现上面这句SQL语句是有问题的,死活都导不进去,而且报错如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Import: Release 10.2.0.1.0 - Production on 星期四 11月 2 14:23:55 2017
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
经由常规路径由 EXPORT:V10.02.00 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)
导出客户机使用 US7ASCII 字符集 (可能的字符集转换)
IMP-00008: 导出文件中出现无法识别的语句:
. 正在将 WEBAGENT 的对象导入到 WEBAGNET
IMP-00003: 遇到 ORACLE 错误 1435
ORA-01435: 用户不存在
成功终止导入, 但出现警告。

网上搜资料后改了一下:

1
C:\WINDOWS\system32>imp webagent/webagent@XE file="D:\oracle_table_space\ccdb.dmp" full=y

full=y是导出整个文件的意思

其余的参数设置如下:

关键字 说明 默认
USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 导出指定的所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 导出指定的表名列表
COMPRESS 是否压缩导出的文件 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象(ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 导出指定的表空间列表

reference:

1
2
3
4
5
6
7
8
9
10
11
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL>

或者用另一种方法:

用管理员权限打开cmd,然后找到你想导入的dmp文件所在的目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
C:\WINDOWS\system32>d:
D:\>cd oracle_table_space
D:\oracle_table_space>dir
驱动器 D 中的卷是 LENOVO
卷的序列号是 4454-E767
D:\oracle_table_space 的目录
2017/11/02 09:44 <DIR> .
2017/11/02 09:44 <DIR> ..
2017/11/02 10:21 97,017,856 ccdb.dmp
2017/11/02 08:12 52,436,992 SGC_DATA.DBF
2017/11/01 10:04 52,436,992 SGC_TEMP.DBF
3 个文件 201,891,840 字节
2 个目录 289,902,190,592 可用字节
D:\oracle_table_space>imp webagent/webagent full=y file=ccdb.dmp