1.oracle字典表常用查询
--查询当前用户拥有的所有表 select * from user_tables --查询当前用户可以访问的所有表 select * from all_tables --查询所有方案的所有表,需要有dba权限 select * from dba_tables; --查询所有的角色 select * from dba_roles; --查询所有的用户 select * from dba_users; --查询所有的系统权限 select * from system_privilege_map --查询所有的对象权限 select * from table_privilege_map; --查询一个角色拥有的系统权限 select * from dba_sys_privs where grantee = 'DBA' select * from role_sys_privs where role = 'DBA' --查询一个角色拥有的对象权限 select * from dba_tab_privs where grantee = 'DBA' select * from role_tab_privs where role = 'DBA' --查询一个用户是什么角色 select t1.* from dba_role_privs t1 WHERE T1.grantee = 'SCOTT' --查询当前用户可以访问的所有数据字典视图 select * from dict where comments like '%grant%' --显示当前数据库的全称 select * from global_name;
2.oracle表空间
oracle中的逻辑机构包括表空间、段、区和块。
表空间有以下作用:
a.控制数据库占用的磁盘空间
b.dba可以将不同数据类型部署到不同位置,有利于提高i/o性能,同时有利于备份和恢复等管理操作。
创建、修改、删除表空间的操作如下:
--创建表空间,需要具有create tablespace的系统权限 --uniform 指定区的大小,size上限为500m,但是可以扩展 create tablespace myspace datafile 'd:\myspace.dbf' size 2m uniform size 128k; --使用表空间 create table mypart(deptno number(2),dname varchar2(14),loc varchar2(13)) tablespace myspace; --改变表空间状态,进行系统维护或者数据维护时,可能需要改变表空间的状态 --使表空间脱机(offline),联机(online),只读(read only) alter tablespace myspace offline; --根据表空间名查询表空间下的表 select * from all_tables t where t.tablespace_name = 'MYSPACE'; --根据表名查询表空间名 select table_name,t.tablespace_name from all_tables t where t.table_name = 'EMP'; -------------------扩展表空间 --插入一条数据,用以验证表空间不足,执行一次就够 insert into mypart(deptno,dname,loc) values(22,'啦啦','北京'); --重复插入数据,一直执行,直到报错 insert into mypart select * from mypart; -----------扩展表空间有3中方法 --a.增加数据文件 alter tablespace myspace add datafile 'd:\myspace1.dbf' size 2m; --b.增加数据文件的大小,数据文件的大小不能超过500m alter database datafile 'd:\myspace.dbf' resize 20m; --c.设置文件自增长,上限为500m alter database datafile 'd:\myspace.dbf' autoextend on next 20m maxsize 500m; --删除表空间,including contents表示删除改空间的所有数据库对象,datafiles表示将数据库文件也删除 drop tablespace MYSPACE including contents and datafiles;
3.移动数据文件
如果数据文件所在的磁盘损坏,为了能够正常使用,需要将数据文件的副本移动到其他磁盘,然后恢复,步骤如下:
--a.确定数据文件所在的表空间 select tablespace_name from dba_data_files where file_name = 'D:\MYSPACE.DBF' --b.为确保数据文件的一致性,使表空间脱机 alter tablespace myspace offline; --c.使用命令移动数据文件到指定的目标位置 move D:\MYSPACE.DBF D:\1\MYSPACE.DBF --d.对数据库文件进行逻辑修改 alter tablespace myspace rename datafile 'D:\MYSPACE.DBF' to 'D:\1\MYSPACE.DBF'; alter tablespace myspace rename datafile 'D:\MYSPACE1.DBF' to 'D:\1\MYSPACE1.DBF'; --e.使表空间联机 alter tablespace myspace online;
第4步不能执行,我是直接在操作系统里边移动文件,也能成功。留疑!