您的位置:首页 > 数据库 > Oracle

Oracle数据库常用命令(表空间,用户,授权,角色,备份)

2012-06-12 18:30 453 查看
Oracle DBA需要了解的一些基本概念,这里把自己的一些经验分享下,如有错误请指出,谢谢!

1. Oracle安装过程中如果不设置新的用户,默认只有SYS,SYSTEM,SYSMAN,DBSNMP这4个用户,其中SYS是Oracle中权限最高的账户,拥有创建数据库(CREATE DATABASE)的权限。这里所说的数据库是指Oracle安装时通过Database Configuration Assistant配置的实例,比如默认的orcl,也就是SID(System Identifier),在配置过程中向导会执行createdb.sql脚本来创建数据库文件,这个脚本的位置和内容可能是:

### /u01/app/oracle
create database orcl
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited extent management local
sysaux datafile
'/u01/app/oracle/oradata/orcl/sysaux01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited
default temporary tablespace TEMP tempfile
'/u01/app/oracle/oradata/orcl/temp01.dbf' size 20m reuse autoextend on next 640k maxsize unlimited
undo tablespace UNDOTBS1 datafile
'/u01/app/oracle/oradata/orcl/undo01.dbf' size 20m reuse autoextend on next 5M maxsize unlimited
logfile
GROUP 1 ('/u01/app/oracle/oradata/orcl/redo1.dbf') size 10m,
GROUP 2 ('/u01/app/oracle/oradata/orcl/redo2.dbf') size 10m,
GROUP 3 ('/u01/app/oracle/oradata/orcl/redo3.dbf') size 10m,
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16


以上脚本创建了一个数据库orcl,数据文件的位置在/u01/app/oracle/oradata/orcl/目录下,也就是说,如果要新建另一个SID(数据库),可以使用sys用户登录连接到oracle后执行对应createdb.sql脚本就可以了。

另外,SYS用户的角色是SYSDBA,SYSDBA是Oracle中拥有权限最高的角色,用于管理数据库。除了SYSDBA角色外,还有SYSOPER角色,用于操作数据库,SYSTEM用户的角色就是SYSOPER,SYSTEM用户不能进行创建数据库的操作。其他用户的角色只能由SYS和SYSTEM用户授予,由于SYSTEM的权限小于SYS,因此SYSTEM的角色也可以被SYS更改。另外,DBA角色不同于SYSDBA和SYSOPER角色,DBA角色不具有上述两个超级用户的特权。

如果安装过程中没有修改密码,SYS的默认密码为:change_on_install;SYSTEM的默认密码为:manager

 

2. 创建Oracle普通用户时,需要为用户确定2件事,(1)为用户设置表空间(2)为用户分配角色。设置表空间的目的是为了与系统表空间区分开,在物理上的表现就是磁盘上独立的数据文件。表空间包含数据表空间临时表空间,创建用户时最好两个表空间都指定。比如使用下面的脚本创建数据表空间:

create tablespace test_ts
logging
datafile '/u01/app/oracle/oradata/orcl/test_ts.dbf'
size 100m
autoextend on
next 16m maxsize 2048m
extent management local;


脚本含义不再赘述,有问题可以Google。这里可以看出,Oracle中的表空间就相当于SQL Server中的独立数据库。

临时表空间可以使用下面的脚本创建:

create temporary tablespace test_ts_temp
tempfile '/u01/app/oracle/oradata/orcl/test_ts_temp.dbf'
size 100m
autoextend on
next 16m maxsize 2048m
extent management local;


删除表空间(包括所有内容和数据文件并且级联删除外键):

drop tablespace test_ts including contents and datafiles cascade constraints;


表空间建立后就可以使用下面的脚本创建用户了:

create user new_user identified by user_pwd
default tablespace test_ts
temporary tablespace test_ts_temp;


删除用户(包括级联对象):

drop user new_user cascade;
## 别忘了提交事务: commit;


角色是一组权限的集合,也就是说角色由多个权限组成,为用户分配角色就会将这个角色中的所有权限赋予用户,方便管理。另外,为用户分配角色的过程是必须的,否则用户无法登录或操作数据库,为用户分配角色可以使用下面的脚本:

grant connect,resource to new_user;


就为用户new_user分配了connect和resource角色,connect和resource角色是一般用户需要被分配的默认角色。

如果需要分配自定义角色,可以新建一个角色并赋予特定的权限:

create role new_role;
grant create table,create procedure to new_role;
grant new_role to new_user;


权限回收(权限或角色):

revoke dba from new_user;
revoke create trigger from new_role;
## 别忘了提交事务: commit;


 

3. Oracle数据库的备份和恢复不用进入sqlplus,在命令行下就可以操作:

导出整个数据库:

exp system/manager@orcl file=~/export_full.dmp full=y


还原整个数据库:

imp system/manager@orcl file=export_full.dmp full=y ignore=y


导出数据库orcl下GIS用户的所有对象:

exp system/manager@orcl file=~/exp_gis.dmp owner=(gis)


导出表gis_title和gis_type的所有内容:

exp gis/gis@orcl file=~/exp_gis_new.dmp tables=(gis_title,gis_type)


导出命令中还可以附加查询语句:

exp system/manager@orcl file=exp_gis_test.dmp tables=(gis_test) query="where name like '%test%'"


还原数据库orcl下GIS用户的所有对象:

imp gis/gis@orcl file=exp_gis.dmp ignore=y


注意:使用exp命令进行数据库导出时如果出现下列错误,在括号前加转义字符“\”即可。

-bash: syntax error near unexpected token `('
exp system/manager@orcl file=~/exp_gis.dmp owner=\(gis\)


 

另外一些SQL的常用查询可以参考这里,在此对作者表示感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: