Linux 下创建用户表空间.md

linux下创建oracle用户表空间

操作步骤如下:

  1. 登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
  2. 以sysdba方式来打开sqlplus,命令如下: sqlplus "/as sysdba"
  3. 查看我们常规将用户表空间放置位置:执行如下sql:select name from v$datafile;上边的sql一般就将你的用户表空间文件位置查出来了
  4. 创建用户表空间:CREATE TABLESPACE NOTIFYDB DATAFILE '/oracle/oradata/test/notifydb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  5. 创建用户,指定密码和上边创建的用户表空间:CREATE USER hc_notify IDENTIFIED BY hc_password DEFAULT TABLESPACE NOTIFYDB;
  6. 赋予权限
grant connect,resource to hc_notify;
grant unlimited tablespace to hc_notify;
grant create database link to hc_notify;
grant select any sequence,create materialized view to hc_notify;
GRANT create any table TO jack;
GRANT resource,dba TO jack;
GRANT select any table TO jack;
  1. 经过以上操作,我们就可以使用hc_notify/hc_password登录指定的实例,创建我们自己的表了

创建临时表空间:

create temporary tablespace test_temp tempfile 'F:\app\think\oradata\orcl\test_temp01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;

创建表空间:

create tablespace test_data logging datafile 'F:\app\think\oradata\orcl\test_data01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;

创建用户:

create user jack identified by jack default tablespace test_data temporary tablespace test_temp;

为用户赋予权限:

GRANT create any table TO jack;
GRANT resource,dba TO jack;
GRANT select any table TO jack;

这种问题,一看就是当前连接用户没有对sys用户下的表v$session,v$sesstat,v$statname的select权限
解决此问题的方式就是授权:
以sysdba身份登录

grant select on v_$statname to username;
grant select on v_$sesstat to username;
grant select on v_$session to username;
grant select on v_$mystat to username;

第一个是授予所有table有create权限,第三是授予所有table有select权限.
第二个就是赋予DBA的权限,这才是最重要的,其实只要第二就可以了.

删除用户表空间的步骤:

Alter tablespace 表空间名称 offline;
Drop tablespace 表空间名称;(表空间无有数据时用)

或者
drop tablespace 表空间名称 including contents;(表空间下有数据时候用)
temporary tablespace是oracle里临时表空间,临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当oracle里需要用到sort的时候,而pga又没有足够大的时候,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,但是我们需要重建temporary tablespace,直接是不能drop默认的临时表空间的,不过我们可以通过以下方法来做。

查看目前的temporary tablespace

select name from v$tempfile;

你可能感兴趣的:(Linux 下创建用户表空间.md)