oracle创建表空间及用户
oracle的学习对于像我这样的新手,还是要一步一步来,先把基本概念搞清楚。
我觉得oracle学习可以分为几个部分:
系统基本使用
系统调优
sql语句编写
sql调优
PL/SQL程序开发
以下讨论都是在单主机模式下进行。欢迎讨论指正。
问题1:什么是实例?
一个oracle软件安装完之后,它有一个默认的实例(instance),同时用户还可以在oracle中增加实例。
实例是一个内存结构(SGA+后台进程),每个实例有一组自己的进程组,用来管理运行实例。实例中包含了表空间、用户账户。
实例和实例之间是相互独立的。在逻辑上每个实例有自己的表空间、自己的用户。在物理上表空间内表的结构、数据和用户信息,存储在磁盘的数据文件和用户文件中。
一个实例只能打开一个数据库。
问题2:什么是表空间?
表空间是oracle中的一种逻辑概念。用来分类用户、控制用户表的大小。
表空间相当于一个筐,用户的数据文件相当于一个个货物,货物的大小不能超过筐的大小。
问题3:平时sql操作时说oracle里的一个数据库是指什么,一个实例?一个表空间?一个用户?
通俗的理解可以是:在一个实例中,某个表空间里的,属于某个用户的,所有的表组成的集合。是从用户的纬度来看的。
比较mysql和oracle创建数据库的过程。
mysql中:
创建用户
创建数据库(create database命令)
授权用户对数据库的权限
创建表...
oracle中:
创建用户
创建表空间
指定用户的表空间
指定用户空间配额
赋予用户创建数据库对象的权限
创建表...
问题4:在解释实例时说“一个实例只能打开一个数据库”和问题3中说的数据库定义有什么区别?
是两个不同的概念,实例打开数据库是指实例在启动时挂载的数据库mount database。
这个挂载的数据库是一堆在磁盘上的物理文件,包括了实例启动时需要的(datafile、redo log file、control file、archive log file、parameter file)等文件。
问题3中讲的数据库,是指sql语句操作的对象。
总结以上问题:
创建表空间及用户方法如下。
用管理员账户登录。
创建用户:
create user wangyi identified by 123456;
创建表空间:
create tablespace users1 datafile '/u01/app/oracle/oradata/XE/users1.dbf' size 200m autoextend on next 32m maxsize 1024m extent management local;
//users1表空间初始大小200m,每次增加32m,最大1024m。
指定wangyi用户的表空间为users1:
alter user wangyi default tablespace users1 temporary tablespace temp;
//指定wangyi用户默认表空间users1,临时表空间temp。
指定wangyi用户使用表空间的配额:
alter user wangyi quota unlimited on users1;
赋予用户权限:
grant create session, create table, create view, create any index to wangyi;
下一篇讨论下oracle的文件系统。
racle文件系统简述
在上一篇讲表空间中说到,在启动实例时,需要加载数据库,而这个数据库是由datafile、redo log file、control file、archive log file、parameter file等一堆文件组成的,那么这些文件分别有什么作用呢?
1、oracle的启动文件
启动文件的位置在$ORACLE_HOME/dbs下,有两个文件init.ora和spfile
这两个文件定义了启动的参数。init.ora是文本文件,spfile
注意:spfile
2、oracle的控制文件
控制文件是*.ctl,10g在/u01/oracle/oradata/
11xe版在/u01/app/oracle/oradata/
3、oracle的数据文件
数据文件是*.dbf,10g也在/u01/oracle/oradata/
11xe版在/u01/app/oracle/oradata/
4、oracle的其它参数文件
监听程序的参数文件:
10g在
/u01/oracle/product/10.2.0/db_1/network/admin/listener.ora
/u01/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
11xe版在
/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
/u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora
5、oracle的日志文件
日志文件分三大类:
alert log files 警报日志
trace log files 跟踪日志(用户和进程)
redo log file 重做日志(记录数据库的更改)
5.1 alert日志
记录oracle系统运行的日志,包括系统参数改变,系统出错等。
10g在/u01/oracle/admin/orcl/bdump/alert_orcl.log
11xe版在/u01/app/oracle/diag/rdbms/xe/XE/trace/alert_XE.log
5.2 trace日志
以.trc为后缀的文件,记录了各种sql操作及所消耗的时间等,根据trace文件我们就可以了解哪些sql导致了系统的性能瓶颈,进而采取恰当的方式调优。
10g在/u01/oracle/admin/orcl/udump/目录下
11xe版在/u01/app/oracle/diag/rdbms/xe/XE/trace/目录下
5.3 重做日志文件
重做日志分为
online redo log files 在线重做日志
archive redo log files 归档重做日志
1)在线重做日志
又叫联机重做日志,以sql脚本的形式实时记录对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改。
联机重做日志文件是循环使用的。当第一个日志文件达到一定数量时,就会停止写入,而转向第二个日志文件,第二个满转向第三个日志文件。第三个满就向第一个日志文件写入。而第一个日志文件有没有自动备份就涉及到归档或者不归档的问题。当数据库自动对原来的日志文件进行备份的话就叫归档模式,不需要对数据库进行自动备份就叫非归档模式。
在归档模式下,当联机重做日志写满后,则将联机重做日志归档到磁盘,成为归档重做日志。
在非归档模式下,当联机重做日志写满后,则覆盖第一个日志的内容,继续循环写。
10g联机重做日志在/u01/oracle/oradata/orcl/目录下,形如:redo01.log、redo02.log、redo03.log。
2)归档重做日志
简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)。
其实,所谓的归档,就是指将在线日志进行归档、持久化到成固定的文件到硬盘,便于以后的恢复和查询。
当然,前提条件是数据库要处于归档模式。
归档日志的位置由DB_RECOVERY_FILE_DEST参数定义,默认在flash recovery area的路径。里面存放有归档日志、闪回日志等文件。
10g在/u01/oracle/flash_recovery_area
11xe版在/u01/app/oracle/fast_recovery_area
6、oracle的密码文件
密码文件作用是对数据库特殊用户进行权限认证。
10g在/u01/oracle/product/10.2.0/db_1/dbs/orapw
11xe版在/u01/app/oracle/product/11.2.0/xe/dbs/orapwXE
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 176 Current log sequence 177
shutdown;
startup mount;
alter database archivelog;
alter database open;
archive log list;
SQL> shutdown; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 835104768 bytes Fixed Size 2231096 bytes Variable Size 624952520 bytes Database Buffers 205520896 bytes Redo Buffers 2400256 bytes Database mounted. SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 176 Next log sequence to archive 177 Current log sequence 177
shutdown;
startup mount;
alter database noarchivelog;
alter database open;
archive log list;
SQL> shutdown; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 835104768 bytes Fixed Size 2231096 bytes Variable Size 624952520 bytes Database Buffers 205520896 bytes Redo Buffers 2400256 bytes Database mounted. SQL> alter database noarchivelog; Database altered. SQL> alter database open; Database altered. SQL> archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 176 Current log sequence 177
startup nomount;
alter database mount;
alter database open;