sys和system这是2个默认的具有非常高的管理权限的用户,其中sys是最高管理员用户,system次之,权限不如sys大。
我们下来对oracle登录做个简单的了解
sys用户是最高管理员用户,那我们就用这个sys用户登录oracle:
sqlplus / as sysdba
sqlplus:oracle登录命令
as sysdba:因为sys是最高管理员,所以需要加这句话。
但我们使用sys用户登录到了oracle数据库,是这样的
生产环境下我们是不会用sys和system两个账户操作数据库的,因为这两个用户权限太大,非常危险,所以我们需要创建用户来操作oracle数据,既然这样,我们就直接创建表空间,再来创建对应的账户来管理这个表空间
#查看oracle数据存放路径 select name from v$datafile; #创建表空间 create tablespace TEST #表空间名TEST logging datafile 'd:\ORACLE\DATA\TEST.DBF' #数据存放物理位置 size 2000m #表空间大小 autoextend on #表空间自增长 next 50m maxsize 20480m #布阶50m,最大尺寸20G extent management local;
查看表空间大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;
如果后期发现表空间不足,扩展表空间命令
alter database datafile 'd:\ORACLE\DATA\TEST.DBF' resize 40000m
除了上述增加表空间的方法还有一种方法是增加表空间文件来达到增加空间的目的
alter tablespace 表空间名称 add datafile '新的数据文件地址' size 数据文件大小
关闭表空间自增长命令
alter database datafile 'd:\ORACLE\DATA\TEST.DBF' autoextend off;
接着我们再创建账户指派到这个表空间
#账户merci密码admin create user merci identified by admin default tablespace TEST;
接着我们给此账户授权
grant dba to merci
接着我们试试用新的账户登录下吧
connect merci/admin #退出以后连接方式是 sqlplus merci/admin
最后附上查询表空间使用率的sql语句,方便以后查询使用
第一种:
SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", ( total - free ) "表空间使用大小", Round(( total - free ) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, Sum(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a, (SELECT tablespace_name, Sum(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name
返回结果如图
第二种:
SELECT TABLESPACE_NAME "表空间", To_char(Round(BYTES / 1024, 2), '99990.00') || '' "实有", To_char(Round(FREE / 1024, 2), '99990.00') || 'G' "现有", To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00') || 'G' "使用", To_char(Round(10000 * USED / BYTES) / 100, '99990.00') || '%' "比例" FROM (SELECT A.TABLESPACE_NAME TABLESPACE_NAME, Floor(A.BYTES / ( 1024 * 1024 )) BYTES, Floor(B.FREE / ( 1024 * 1024 )) FREE, Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USED FROM (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME) --WHERE TABLESPACE_NAME LIKE 'CDR%' --这一句用于指定表空间名称 ORDER BY Floor(10000 * USED / BYTES) DESC;