[转]oracle数据库类型简述

OLTP与OLAP简述

在通过DBCA来创建数据库的时候,一般会给你提供三种数据库模板(就是数据库类型):

一般用途:General Database

事务处理:Transaction Processing

数据仓库:Data Warehouse

定制数据库:Custom Database

下面就Ceneral Database,Transaction Processing,Data WareHouse,即一般用途,事务处理,数据仓库来分别比较说明:

事务处理的英文单词是Online Transaction Processing,简称OLTP,通常意义上是指那些短事务,高并发,读写频繁的数据库系统。数据仓库又被称为Online Analysis Processing,简称OLAP,是指那些长事务,低并发,多读而少写的数据库系统。

日常使用的系统一般是OLTP例如:银行系统、电子商务系统。并发量很大,事务执行时间短,用户的SQL往往可以重复使用。所以对于OLTP,非常看重内存缓存、SQL软解析、绑定变量,加快执行速度。

而OLAP模式,要读取的数据量巨大,一个表几十G或几百G?。此时内存的缓存已经没有用了(数据重用性不大),直接依赖磁盘的读写速度(磁盘阵列),还有使用分区技术和并行技术。

理论上说,oracle数据库中大多数参数在后期是可调的,但也有一些参数一旦创建后期无法调整,比如DB_BLOCK_SIZE,即块大小,在oracle数据库中是非常重要的一个参数,恰好这个参数在OLTP和OLAP两种类型应用中需求不一致,对于OLTP数据库,数据库常处于小数据量,频繁读写状态,对于这种系统一般不会将DB_BLOCK_SIZE设置太大,以免读写时I/O浪费;而对OLAP数据库,由于系统处于大量数据库的多读而少写状态,因此DB_BLOCK_SIZE设置较大,比如32K。也就是说两种数据库类型的某些层面从定义上是相对立的,如果你能确认你的数据库类型,可以选择Transaction Processing(事务处理)和Data Warehouse(数据仓库)。

至于General Databaes(一般用途)的选项,那是来唬外行的,绝对不建议选择,但是对于一些初学者来说可以试着玩玩,没什么问题的。不多对于业务类型不是特别清除的,想对oracle数据库有一定了解的建议选择Custom Database(定制数据库)来玩玩。

oracle expdp和impdp导出导入

expdp和impdp是oracle从10g开始新增加的导出、导入功能。名称叫数据泵。

expdp:Data Pump Export
impdp:Data Pump Import

一、expdp、impdp和exp、imp的区别

expdp、impdp:
1、可以导入导出单个或多个数据库、用户(schema)、表空间、表。
2、强大的数据过滤功能。
3、速度快。
4、不支持XMLType数据。

exp、imp:
1、支持XMLType数据。
2、不支持FLOAT和DOUBLE数据类型。
3、功能和数据泵类似,更推荐使用数据泵除非是XMLType数据。

二、导出导入方法
小实验:将hr用户数据导出,新建用户hr2,再导入新建用户。
继续阅读oracle expdp和impdp导出导入

oracle ex版用户简述

一、用户角色
DBA角色包含了对数据库的所有操作,除了startup和shutdown。SYSTEM用户就是这样的角色。
CONNECT和RESOURCE角色不建议使用。建议直接赋予指定的权限:

grant CREATE SESSION, ALTER SESSION, CREATE DATABASE LINK, -
CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, -
CREATE ROLE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, -
CREATE TRIGGER, CREATE TYPE, CREATE VIEW, UNLIMITED TABLESPACE -
to chris;

二、SYS和SYSTEM

SYSTEM
SYSTEM用户可以执行所有管理功能,除了关闭和启动数据库。

SYS
数据库数据字典所有的基本表和视图都是保存在SYS用户下,这些基本表和视图对oracle来说是极其重要的。
为了保持数据字典的完整性,SYS用户中的表需要有熟练经验的人使用,改数据字典表是有风险的一个动作。不要在SYS用户下创建个人的表。
所以日常操作建议不要登录为SYS,SYSTEM用户也可以完成所有DBA操作,除了关闭和启动数据库。
继续阅读oracle ex版用户简述

oracle ex版内存结构简述

oracle ex版虽然是正式版的简化版,但总体框架是相似的,在一些局部上有加加减减的不同而已。

一、内存结构

什么是Oracle instance?
每一个实例,是由一组后台进程和分配的内存所组成的。
为实例分配的内存又分为两部分,SGA和PGA。

System global area (SGA),系统全局区。是一个包含了数据缓冲和控制信息的共享内存区域。SGA被划分为若干个缓存区和数据池。
Program global area (PGA),程序全局区。是每个服务器进程(Server Process)使用的一块包含数据和控制信息的内存区域。PGA用来处理SQL语句和session information。


从图中可以看到SGA是所有进程共用的,PGA是每个响应客户端请求的进程都会分配一块自己的PGA内存区域。
继续阅读oracle ex版内存结构简述

oracle 10g文件目录结构

一个典型的oralce目录结构如下:

/u01
└── oracle
    ├── admin (数据库管理文件位置,以实例划分)
    │   ├── mydb
    │   │   ├── adump (审计信息)
    │   │   ├── bdump (后台进程跟踪文件)
    │   │   ├── cdump (信息转储文件core dump)
    │   │   ├── dpdump (存放登录信息)
    │   │   ├── pfile (初始化参数文件)
    │   │   └── udump (用户SQL追踪文件)
    │   └── orcl
    │       ├── adump
    │       ├── bdump
    │       ├── cdump
    │       ├── dpdump
    │       ├── pfile
    │       └── udump
    ├── flash_recovery_area (用于flashback和数据恢复的管理)
    │   └── ORCL
    │       └── onlinelog
    ├── oradata (数据文件、控制文件、重做文件保存位置,以实例划分)
    │   ├── mydb
    │   └── orcl
    ├── oraInventory (oracle软件的产品信息)
    │   ├── Contents
    │   ├── ContentsXML
    │   ├── logs
    │   │   └── results
    │   │       └── db
    │   └── oui
    └── product
        └── 10.2.0 (程序版本号)
            └── db_1 (ORACLE_HOME环境变量路径,主目录)
                ├── assistants
                ├── bin (oracle的各种命令程序)
                ├── cdata
                ├── cfgtoollogs
                ├── clone
                ├── config
                ├── crs
                ├── css
                ├── ctx
                ├── dbs (实例的启动文件、密码文件位置)
                ├── demo
                ├── diagnostics
                ├── has
                ├── hs
                ├── install
                ├── inventory
                ├── javavm
                ├── jdbc
                ├── jdk
                ├── jlib
                ├── jre
                ├── ldap
                ├── lib
                ├── lib32
                ├── localhost_mydb
                ├── localhost_orcl
                ├── log
                ├── md
                ├── mesg
                ├── mgw
                ├── network (监听和tns别名的配置文件)
                ├── nls
                ├── oc4j
                ├── odbc
                ├── olap
                ├── OPatch
                ├── opmn
                ├── oracore
                ├── ord
                ├── oui
                ├── owm
                ├── perl
                ├── plsql
                ├── precomp
                ├── racg
                ├── rdbms
                ├── relnotes
                ├── slax
                ├── sqlj
                ├── sqlplus
                ├── srvm
                ├── sysman
                ├── tg4ifmx
                ├── tg4ingr
                ├── tg4sybs
                ├── tg4tera
                ├── uix
                ├── wwg
                └── xdk

windows和linux打印树状目录结构

windows下有tree命令可以打印出树状目录结构,linux下也有这个命令。

1、windows下tree命令
cmd窗口中查看帮助:

tree /?

以图形显示驱动器或路径的文件夹结构。

TREE [drive:][path] [/F] [/A]
   /F   显示每个文件夹中文件的名称。
   /A   使用 ASCII 字符,而不使用扩展字符。


使用tree /f > tree.txt命令,就可以把打印出的树状目录结构写入到tree.txt文件中了。

2、linux下tree命令
linux下的tree命令功能更强大,参数更多。

安装:

yum install tree

查看帮助:

tree --help

其中常用参数:
-a:打印全部文件。
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合(显示的树状图为实线不是虚线)。
-C:在文件和目录清单加上色彩,便于区分各种类型。
-d:只打印目录。
-L level:指定打印目录的深度(层级)。
-f:打印出每个文件、目录的绝对路径。
继续阅读windows和linux打印树状目录结构

oracle exp/imp导出导入数据库

导出前先查看系统的NLS_LANG设置:

echo $NLS_LANG
AMERICAN_AMERICA.ZHS16CGB231280


select userenv('language') from dual;
AMERICAN_AMERICA.ZHS16GBK

这两个值不同会报错:

EXP-00091: Exporting questionable statistics

问题产生的原因:
linux下用户环境变量语言集和oracle数据库中的环境变量语言集不同。
解决办法:
将linux下用户环境变量语言集和数据库设置成一样。

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

一、导出
有两种使用exp的方式:
1、交互式
执行exp

Username:  //用户名
Password:  //密码
Enter array fetch buffer size: 4096 >  //导出缓冲区大小
Export file: expdat.dmp >  //导出文件名称
(2)U(sers), or (3)T(ables): (2)U >  //导出的单位是用户还是表
Export grants (yes/no): yes >  //是否导出授权
Export table data (yes/no): yes >  //是否导出表数据
Compress extents (yes/no): yes > no  //是否压缩,这里不压缩


后面就刷刷的开始导出了。

2、一条命令方式

exp userid=nlcmp/nlcmp@nlcmp file=./20150305nlcmp.dmp log=./1.txt

如果加了full=y会把一些系统表也导出来。
继续阅读oracle exp/imp导出导入数据库

oracle数据库字符集问题

一、什么是oracle字符集
oracle字符集实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。

影响oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language:指定服务器消息的语言,影响提示信息是中文还是英文
Territory:指定服务器的日期和数字格式
Charset:指定字符集
如:AMERICAN_AMERICA.ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

NLS_LANG参数是否是环境变量中的NLS_LANG呢?
并不是。oracle环境变量中的NLS_LANG是定义客户端的字符集。
比如环境变量NLS_LANG=AMERICAN_AMERICA.ZHS16GBK但是数据库三个实例的字符集可以分别是:AMERICAN_AMERICA.AL32UTF8、AMERICAN_AMERICA.WE8ISO8859P1、AMERICAN_AMERICA.ZHS16GBK
继续阅读oracle数据库字符集问题

oracle入门(4)

oracle增加实例
手工登录多实例

oracle使用dbca命令可以很方便的添加实例,需要服务器启动到图形界面。

0、执行dbca命令

cd $ORACLE_HOME/bin
./dbca


点击下一步

1、创建数据库
Create Database 创建数据库
Configure Database Options 设置数据库选项
Delete a Database 删除数据库
Manage Templares 管理数据库模版
Configure Automatic Storage Management 配置自动存储管理

选择create a database,下一步
继续阅读oracle入门(4)