edwardcmh

人氣不過肥皂泡

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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的常用查询可以参考这里,在此对作者表示感谢。

posted on 2012-06-12 18:30  edwardcmh  阅读(1067)  评论(0编辑  收藏  举报