oracle 10g 数据库sql

--查询表空间,大小及剩余使用情况
select a.tablespace_name,total,free,total-free 已使用 from 
( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
  where tablespace_name = 'RESOURSE2011'
    group by tablespace_name ) a, 
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
  where tablespace_name = 'RESOURSE2011' 
   group by tablespace_name ) b
where a.tablespace_name=b.tablespace_name
order by a.tablespace_name
--查看表空间文件
select * from dba_data_files where tablespace_name like 'RESOURSE2011';
--设置表空间自动增长
alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JOINTJOY\USERS01.DBF' autoextend on next 2048M maxsize unlimited;
--更改制定数据库文件大小
ALTER DATABASE
DATAFILE 4
RESIZE  10183M;
--查看所有表
select * from all_tables t where t.tablespace_name = 'USERS' and owner = 'MEMBER2011' and t.table_name = 'MEM_ORDER_SETMEAL' 
select * from all_tables t where t.tablespace_name = 'MEMBER2011' and owner = 'MEMBER2010'
select * from all_users
select * from dba_users u where u.username = 'RESOURSE2011'
--授权
grant dba to member2011
--查看所有表空间
select * from dba_tablespaces
select * from user_tablespaces;

--.查看用户系统权限
select * from dba_sys_privs dsp where grantee = 'MEMBER' AND PRIVILEGE LIKE '%TABLESPACE%' ORDER BY PRIVILEGE
select * from user_sys_privs;

GRANT ALTER TABLESPACE TO MEMBER2011;

--查看用户对象权限
select * from dba_tab_privs where TABLE_NAME = 'MEM_ORDER_SETMEAL'
SELECT * FROM USER_TAB_PRIVS
--查看当前用户连接
select * from v$session_connect_info
--查看用户的表空间的限额 
********************************************************************************************
 select * from dba_ts_quotas;
 select * from user_ts_quotas;
 
 --回收表空间限额控制
 alter user MEMBER2011 quota 0 on MEMBER2010;
  ALTER USER MEMBER2011 QUOTA UNLIMITED  ON MEMBER2010;
 
 select tablespace_name,bytes from dba_data_files
  where tablespace_name = 'RESOURSE2011'
  
  select tablespace_name,sum(bytes) free from dba_free_space
  where tablespace_name = 'MEMBER2010' 
   group by tablespace_name
  
  表空间的大小与用户的配额大小是两种不同的概念。表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小
把表空间文件增大,还是出现这个问题,用户在使用表空间的同时使用空间的限额,如果超出限制,就算有空的地方,也不会让用户使用。
遇到ORA-01536错误,首先要查看用户的表空间的限额
   select * from dba_ts_quotas;
   select * from user_ts_quotas;
max_bytes字段-1是代表没有限制,其它值多少就是多少.
dba_ts_quotas :描述所有用户表空间的限额
user_ts_quotas :描述当前用户表空间的限额。
如果查询结果中max_bytes字段不为-1,修改为无限制或者指定的大小。
不对用户做表空间限额控制:
    GRANT UNLIMITED TABLESPACE TOuser;
这种方式是全局性的。  或者
    alter useruserquota unlimited onuser_tablespace;
 这种方式是针对特定的表空间的.
回收表空间限额控制:
    revoke unlimited tablespace fromuser;
或者
    alter useruserquota 0 onuser_tablespace;
  
*******************************************************************************************

--创建表空间和用户
脚本1:
CREATE TABLESPACE "GLIS8_INDEX" 
    LOGGING 
    DATAFILE 'D:\ORACLE\ORADATA\GLIS\GLIS8_INDEX.ora' SIZE 5M 
    AUTOEXTEND 
    ON NEXT  1024K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL 
/
CREATE TABLESPACE "GLIS8_TABLE" 
    DATAFILE 'D:\ORACLE\ORADATA\GLIS\GLIS8_TABLE.ora' SIZE 5M 
    AUTOEXTEND 
    ON NEXT  1024K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL 
/
CREATE TABLESPACE "GLIS8_MAINTABLE" 
    LOGGING 
    DATAFILE 'D:\ORACLE\ORADATA\GLIS\GLIS8_MAINTABLE.ora' SIZE 5M 
    AUTOEXTEND 
    ON NEXT  1024K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL 
/
COMMIT;
脚本2:
drop user usrglis CASCADE;
CREATE USER "USRGLIS"  PROFILE "DEFAULT" IDENTIFIED BY "usrglis" 
    DEFAULT 
    TABLESPACE "GLIS8_TABLE" TEMPORARY 
    TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "USRGLIS";
GRANT "RESOURCE" TO "USRGLIS";
COMMIT;

猜你喜欢

转载自hnychenl.iteye.com/blog/1473558