Oracle数据库创建表空间及用户-阿里云开发者社区

开发者社区> 沉默术士> 正文

Oracle数据库创建表空间及用户

简介:
+关注继续查看
 摘要:
/*createtablespacesystemv
datafile'/opt/oracle/oradata/ibm/systemv01.dbf'size10m
autoextendon;*/
/*droptablespacesystemv
includingcontentsanddatafiles;*/
createuser"SYSTEMV"
identifiedby"123456"defaulttablespace"SYSTEMV"
accountunlock;
grantcreateanydirectory,unlimitedtablespace,connect,resourceto"SYSTEMV";
/*dropusersystemvcascade;*/
/*connectsystemv/123456@192.168.254.99/ibm*/
  正文:
  步骤一:删除用户及其所有对象
  drop user "aaaa" cascade
  步骤二:创建表空间,并设置相关属性,先查询出一般的数据库文件都存放在哪里。
  SQL> select * from v$dbfile;
  FILE#        NAME
  --------------------------------------------------------------------------------
  4                /mc/oracle/oradata/mc/users01.dbf
  --创建表空间,并指定数据文件的位置(必须去除多余空格才能执行)
  CREATE TABLESPACE AAAA
  DATAFILE '/mc/oracle/oradata/mc/AAAA.dbf' SIZE 50M
  extent management local autoallocate
  --更改数据文件增长方式为自动增长
  alter database
  DATAFILE '/mc/oracle/oradata/mc/AAAA.dbf'
  autoextend on
  注意:上面的粗体字部分必须全部为大写;否则sqlplus将无法登陆,导数据也会出问题;如果这里大写了,将来登录用户名小写也是没问题的!
  $ sqlplus "aaaa/aaaa";$ sqlplus "AAAA/aaaa" 以上两个都可以登录!
  步骤三:授予用户适当权限
  GRANT CREATE ANY DIRECTORY TO "AAAA"
  GRANT UNLIMITED TABLESPACE TO "AAAA"
  GRANT "CONNECT" TO "AAAA"
  GRANT "RESOURCE" TO "AAAA"
  或者
  GRANT CREATE ANY DIRECTORY, UNLIMITED TABLESPACE, CONNECT, RESOURCE TO "AAAA" 查看创建好的用户
select * from dba_users
select * from dba_tablespaces
  创建临时表空间【tempfile参数必须有】
create temporary tablespace zfmi_temp
tempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间【datafile参数必须有 】
create tablespace zfmi
logging
datafile 'D:\oracle\oradata\zfmi\zfmi.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local;
//删除用户以及用户所有的对象
drop user zfmi cascade;
//cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数
//删除表空间
  前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除
drop tablespace zfmi including contents and datafiles cascade onstraints;
//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数
//including datafiles 删除表空间中的数据文件
//cascade constraints 同时删除tablespace中表的外键参照
//如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。 可使用如下方法恢复(此方法已经在oracle9i中验证通过):
下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称。
$ sqlplus /nolog
SQL> conn / as sysdba;
     如果数据库已经启动,则需要先执行下面这行:
SQL> shutdown abort
SQL> startup mount
SQL> alter database datafile 'filename' offline drop;
SQL> alter database open;
SQL> drop tablespace tablespace_name including contents;
//创建用户并指定表空间【identified by 参数必须有】
create user zfmi identified by zfmi
default tablespace zfmi temporary tablespace zfmi_temp;
//授予message用户DBA角色的所有权限
GRANT DBA TO zfmi;
//给用户授予权限
grant connect,resource to zfmi; (db2:指定所有权限)
-------------------------------------------------------------------华丽的分割线----------------------------------------------------------------------
--理解 recover datafile,表空间offline如果有immediate参数(此时将脏数据保存在system的延迟回退段中),那么下次online前必须recover。
alter tablespace zbb offline immediate
SQL> recover datafile 13;
alter tablespace zbb online
=========================================
--给表空间增加新的数据文件
alter tablespace zbtbs
add datafile '/disk2/oracle/oradata/zbtbs02.dbf' size 10M reuse
=========================================
--重新指定数据文件的大小
alter database
datafile '/disk2/oracle/oradata/zbtbs02.dbf'
resize 100M
=========================================
  查看表空间的online或offline情况
  select * from v$datafile
最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
oracl使用DataBase Configuration Assistant创建、删除数据库
原文:oracl使用DataBase Configuration Assistant创建、删除数据库可以使用DataBase Configuration Assistant来创建一个心得数据库。Database Configuration Assistant简称是DBCA,是创建、配置以及管理数据库的一个工具。
1219 0
oracle、mysql、sybase和sqlserver复制表结构和数据
Sql Server(sybase): 1.复制表结构: 新建表student2,并且结构同表syn_xj_student一致。Sql语句如下: select * into syn_xj_student2 from syn_xj_student where 1=2 2.复制表数据,并...
664 0
C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.  包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.
2241 0
oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
查看当前用户的缺省表空间   SQL>select username,default_tablespace from user_users;   查看当前用户的角色   SQL>select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL>select * from user_sys_privs;       
1226 0
ORACLE已建表能否创建分区
Oracle数据库里面,如果已经创建了一个表,创建时没有给表进行分区,现在由于性能等方面原因需要对该表创建分区。能否直接把一个未分区的表修改成分区表呢(即能否通过ALTER语句把该表修改成分区表呢)?答案是不能,至少目前版本不能。
756 0
+关注
5518
文章
253
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载