格式: create tablespace 表空间名 datafile '数据文件名' size 表空间大小 栗子:create tablespace data_test datafile 'd:oracleoradata estdata_1.dbf' size 2000M; 解释: 表空间名:自己定义,如果是迁库的话,需与之前的表空间命名一样 数据文件名:这个是生成存储数据的dbf文件在服务器存储的全路径,包含文件名称,这个随意命名 表空间大小:2000M 表是 2000兆
格式: create user 用户名 identified by 密码 default tablespace 表空间表; 栗子:create user study identified by study default tablespace data_test;
grant connect,resource to study; --表示把 connect,resource权限授予study用户 grant dba to study; --表示把 dba权限授予给 study 解释:其中connect是赋予连接数据库的权限,resource是赋予用户只可以创建实体但是没有创建数据结构的权限,dba是赋予用户所有权限,这个地方如果不赋dba权限,会导致某些操作权限级别不够,报错;
在上面,我们已建好了用户 study 我们现在进入该用户 sqlplusw study/study@test 然后就可以在用户study中创建数据表了 这里就不再列举如何创建表数据的sql了,网上一搜一大堆,因为我是迁库,直接导入在之前数据亏服务器导出的dmp文件即可
格式:imp 用户名/密码@实例名 file=dmp文件路径 full=y; 栗子:imp study/study@orcl file="c:/data/temp.dmp" full=y; 可能会出现的错误:导入的dmp文件太大,数据过多,数据库初始化2000M不够用,原因是因为之前没有赋予自动扩充的功能; 查询当前数据库中表空间SEC_D是否为自动扩展: sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test'; TABLESPACE_NAME FILE_NAME AUT ----------------- ----------------------------------------- --- DATA_TEST /u01/app/oracle/oradata/orcl/data_1.dbf NO 你会发现:NO,未开启自动扩充 sec@orcl> alter database datafile '/u01/app/oracle/oradata/orcl/data_1.dbf' autoextend on; Database altered. 确认是否已经修改成功 sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test'; TABLESPACE_NAME FILE_NAME AUT ----------------- ----------------------------------------- --- data_test /u01/app/oracle/oradata/orcl/data_1.dbf YES
以system用户登录,查找需要删除的用户: --查找用户 select * from dba_users; --查找工作空间的路径 select * from dba_data_files; --删除用户 drop user 用户名称 cascade; --删除表空间 drop tablespace 表空间名称 including contents and datafiles cascade constraint; 栗子:删除用户名成为study,表空间名称为data_test --删除用户,及级联关系也删除掉 drop user study cascade; --删除表空间,及对应的表空间文件也删除掉 drop tablespace data_test including contents and datafiles cascade constraint;
SQL> drop user study cascade; drop user study cascade * ERROR at line 1: ORA-01940: cannot drop a user that is currently connected
字面翻译是该用户有连接,不能删除,我把我自己连接的Oracle Develop客户端断开了连接,再次执行,还是报相同的错误,因为除了我们自己连接,还有其他远程客户端连接。该如何解决该问题,成功删除该用户呢?
先查询study用户的连接状况。
SQL> select username,sid,serial# from v$session where username='study'; USERNAME SID SERIAL# ------------------------------ ---------- ---------- study 429 7 study 499 9 2 rows selected.
然后把相关的session连接删掉。
alter system kill session'429,7'; alter system kill session'499,9';
这样再次执行删除study用户就可以删除成功了!
SQL> drop user study cascade; User dropped.