一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

oracle数据库学习入门篇

时间:2022-06-29 09:53:22 编辑:袖梨 来源:一聚教程网

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.ora,inst_name是当前实例名称。
这两个文件定义了启动的参数。init.ora是文本文件,spfile.ora是二进制文件。

注意:spfile.ora不能用文本编辑器修改,打开也不行,可能会造成实例无法启动。需要用alter命令修改。

2、oracle的控制文件
控制文件是*.ctl,10g在/u01/oracle/oradata/ 目录下。形如:control01.ctl、control02.ctl、control03.ctl。
11xe版在/u01/app/oracle/oradata/ 目录下,但是文件名变为了control.dbf,本质都是数据文件(二进制格式),只是文件后缀不一样。

3、oracle的数据文件
数据文件是*.dbf,10g也在/u01/oracle/oradata/ 目录下。在创建表空间时需要指定的数据文件就是.dbf。数据库中的表是存储在数据文件中的。
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

 

oracle归档模式和非归档模式切换
oracle启动顺序简述

 

上一篇说到oracle的日志文件有联机重做日志和归档重做日志,只有在归档模式下,系统才会去写归档重做日志。

 

使用archive log list查看是否在归档模式下:
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 

 


一、非归档模式改为归档模式
1、命令:

shutdown;
startup mount;
alter database archivelog;
alter database open;
archive log list;

2、执行过程:
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 

 


二、归档模式改为非归档模式
1、命令:

shutdown;
startup mount;
alter database noarchivelog;
alter database open;
archive log list;

2、执行过程:
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 

 


三、oracle启动顺序
我们会发现平时启动oracle用startup命令,而在设置归档模式时使用的是startup mount命令,所以oracle启动肯定是分为几个阶段的,在mount这个阶段才能修改归档模式。
oracle数据库学习入门篇

 

可以看到启动时状态由 nomount -> mount -> open
1、nomount状态
nomount的过程就是启动oracle数据库实例的过程。在这个阶段oracle首先会寻找参数文件(pfile或者spfile),然后根据参数文件中的设置,创建数据库实例(分配内存,创建后台进程)。

 

2、mount状态
启动到mount状态后,oracle就可以从spfile或pfile中获取了control file的位置信息,找到控制文件,并读取控制文件。
在这个状态下可以对数据文件和日志文件做管理类操作。

 

3、open状态
在这个阶段,首先会对每个数据文件做一检查,检查数据文件头中的检查点计数(Checkpoint CNT)是否和控制文件中的检查点计数一致,然后再打开数据库,锁定数据文件。

 

4、startup命令等于以下三个命令组合

startup nomount;
alter database mount;
alter database open;

热门栏目