当一个Oracle实例开始运行的时候,会分配一个称为SGA(系统全局区)的大的内存块(如下所示数据库启动时显示的数据信息)。

=========================================
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 83888372 bytes
Database Buffers 79691776 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
=========================================

系统的SGA被该实例的所有后台进程共享。在SGA中,包括以下的几个缓存池。
①数据库高速缓冲区DBbuffer②大共享区③共享池④日志缓冲池Redo buffer⑤固定SGA

数据库高速缓冲区:
如果每次执行一个SQL查询的时候,Oracle都必须从磁盘读取数据块,并且每个改变都需要写入磁盘的话,那么Oracle的执行效率将非常的低。而DBbuffer经常能够使用内存中的数据块,在那里就能很快的得到访问。内存中用来频繁访问的区域就被称之为数据库高速缓冲区。

数据库高速缓冲区是SGA的区域里面最大的部分,包括以下的三个缓存池:
①保持缓存池:想在内存中长期保存和频繁访问(如代码表)而使用的缓存池。此缓冲池在关闭数据库之前一直保留,并不从内存中释放空间。
②再生缓存池:想尽快从内存中排除的对象使用此缓存池。(如频繁访问的大表)
③默认缓存池:除以上两种情况外的选择。

共享池也是Oracle当中一个非常重要的缓存区域,主要由库缓冲区和字典缓冲区所构成。用来缓存PL/SQL的程序单元,SQL语句的执行版本和相关的执行计划。共享池规模对数据库的性能有着重要的影响。

在库缓冲区又包括共享SQL区和PL/SQL区。在SQL区中保留了SQL语句的解释版本,以便再次使用的时候不必重新解释,目的是使这些语句再次执行的时候,能够提高进程的速度。PL/SQl区保留了PL/SQL的过程,函数等编译版本,以便于所有的用户能够共享。当程序执行一个PL/SQL的执行单元的时候,当有两个或者两个以上用户需要执行相同的过程,函数或者触发器等相关内容的时候,Oracle并不缓存两个或者两个以上的内存区域。Oracle的处理是,把相同的代码做一个拷贝,被不同的用户所缓存。

字典缓存区是用来缓存数据字典信息的一个区域。当分析SQL语句来校验表名,列名,数据类型等信息的时候,Oracle将频繁的提到数据字典。通过把对最频繁使用的信息存储到内存中,Oracle减少了相关SQL语句所引起的相关性能上的冲突。

Redo日志缓冲池是用来放置写入磁盘的Redo日志记录。循环方式,先进先出。

大共享区是Oracle的一个可选的特征。它提供了大内存块的隔离内存区。如果选择多线程的服务器,或者进行备份和相关的RMN等相关操作的时候,需要这个区域。

固定SGA区不能人为设定大小,是Oracle数据库自己控制的。

Oracle的文件系统主要分成以下的三大块:

控制文件(.CTL),数据文件(.DBF),日志文件(.LOG)

这三种文件系统一般在以下路径可以找到:
/u01/app/oracle/oradata/oracleSID

除此三种文件还有一种参数文件,参数文件不是数据库系统中的有效组成部分,在启动数据库时,参数文件不直接参与工作,只是控制文件是由参数文件寻找的。
参数文件位置:
/u01/app/oracle/product/10.2.0/db_1/dbs/spfileoracleSID.ora
控制文件的内容会显示在参数文件中。参数文件的作用起到寻找控制文件的作用。

Oracle中有两种日志文件,一种为联机日志文件(重做日志文件),一种为归档日志文件。
REDO01.DBF和REDO02.DBF,REDO03.DBF是典型的联机日志文件,特点是顺序写文件,写满后写下一个,写满第三个循环写第一个,并且覆盖掉不做备份。
归档日志文件,在热备份的时候要选择的一种归档方式。

由控制文件控制数据文件和日志文件。数据库启动时启动对应实例后,首先启动控制文件,在由控制文件打开数据文件。例如在Linux启动数据库时可以看到的动作现象是:数据库装载:Database Mounted,然后打开数据库:Database Opened。其实就是先打开控制文件,在打开数据文件的过程。

用Sqlplus直观的可以看见:

以Oracle用户登录Sqlplus:
① sqlplus /nolog
② conn / as sysdba

如果是首次从Linux界面登录,需要启动Oracle数据库应用。

① sqlplus / as sysdba
② startup

查看控制文件
DESC v$controlfile
查看控制文件的状态和名称(显示路径)
SELECT status,name FROM v$controlfile;

查看数据文件
DESC v$datafile
比如查看数据文件的文件号和状态
SELECT file#,status FROM v$datafile;

看日志文件
DESC v$logfile
查看日志文件路径信息
SELECT member FROM v$logfile;

注:此安装过程同样适用于Oracle10g在Linux32上的安装。略有改动地方已注明。

1 视频下载地址 2 视频在线观看地址

<作者:遥远>

到 otn.oracle.com 网站上下载 oracle 11g

将上一次中已经安装好的虚拟机拷贝到一个新的目录,启动新的虚拟机。

编辑 /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

生效 /sbin/sysctl -p

编辑 /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

编辑 /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so

编辑 /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

创建相关的用户和组:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -g oinstall -G dba oracle
passwd oracle

创建目录:
mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/

从windows网络邻居中mount oracle 11g的安装软件到linux

mount //192.168.2.1/oracle11g /mnt

切换成ORACLE用户 修改/home/oracle/.bash_profile,加入:

umask 022
ORACLE_BASE=/u01/app/oracle
ORACLE_SID=gaoyu
ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_SID ORACLE_HOME
export LC_CTYPE=en_US.UTF-8(如果是安装oracle10g的情况需要添加这行语句,防止安装画面汉语集字符出现“口”字,oracle11g不需要)

然后执行如下命令使之生效:
source .bash_profile

运行runInstaller 运行安装。
在安装过程中,会提示缺少下面的包,从Centos的安装盘中安装:
rpm -ivh libaio-0.3.105-2.i386.rpm
rpm -ivh libaio-devel-0.3.105-2.i386.rpm
rpm -ivh elfutils-libelf-devel-0.97.1-4.i386.rpm
rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
rpm -ivh unixODBC-2.2.11-1.RHEL4.1.i386.rpm
rpm -ivh sysstat-5.0.5-14.rhel4.i386.rpm

运行netca创建listener,选一路选默认即可

用dbca创建数据库,注意密码的大小写,选sample schema,字符集要选unicode。

有时候我们为了学习Oracle而需要在自己的PC上安装Oracle数据库软件。而众所周知,Oracle是一个吃内存的大户,默认安装后,内存占用量很大,那么,对于个人学习Oracle来说,有没有节约内存的办法呢。当然有了,那就是,可以设置SGA(系统全局区)来节省内存。具体方法和步骤,可以参看一下内容。

首先,查看一下SGA的配置情况,在C:\oracle\product\10.2.0\db_1\dbs(具体文件位置视个人具体安装而定)下面的SPFILEoracleID.ORA。

这个文件下面有如下默认的两行,这就是我们想要修改的参数。但是,注意不要直接修改这个文件,因为这个是二进制的文件,用记事本等手段修改后会导致Oracle启动不起来的问题,如果不小心修改了的朋友请参考这个帖子可以改回来。

*.sga_target=287309824(274M)
*.pga_aggregate_target=95420416(91M)
--(括号内是标注的多少M,实际文件中只标写了字符数)

如果是个人PC的话,可以将*.sga_target=160M,*.pga_aggregate_target=24M。这样可以省下来181M的内存大小。

下面我们来看具体如何修改这两个参数的大小。

进入SQL*Plus工具,或者CMD连接SQL*Plus工具都可以,以DBA身份登录。然后:

1,show parameter spfile;
此命令来查看spfile的参数(包括名称,类型和值)

2,alter system set sga_target=160M scope=both;

3,alter system set pga_aggregate_target=24M scope=both;

注意,scope范围要设置,否则默认情况下是当前应用,数据库从新启动后设置不保存而消失。

另外,如果作为测试服务器,可以停掉一下两个服务:
1,OracleDBConsoleoracleID
2,OracleOraDb10g_home1iSQL*Plus
注:1停掉后通过IE就无法访问数据库配置了

至此,Oracle的SGA就简单从新分配一下,帮你节约了不少内存吧。其实,从新分配的这么多内存对于一个测试服务器来说,也已经完全够用了。

视频下载地址:点击

第一步:软件下载

到www.vmware.com中下载vmware server
注册码1: 98XY4-54VA4-4216V-4PDZ6
注册码2: WH0M5-XW50J-WA4FU-4MTZ3

到www.centos.org中下载centos45 DVD版

下载xmanager 2.0
注册码:071101-156031-000078

第二步:安装centos 45

新建一个LINUX虚拟机,将下载的LINUX安装ISO文件放入到虚拟机的光驱中,从光驱中启动虚拟机进行安装。

选择SERVER版,手工分区

装包时选:

1 Desktop Environments
选: GNOME Desktop Environment和X windows

2 Application 中全不选

3 Developmnet
中选两个:Development Tools和Legacy Software Development

4 Server
中选:Ftp和Server Configuration Tools和windows file server

5 system
中选2个:Administration Tools和System Tools

第三步:虚拟机和主机的时间同步

安装 VMware 工具。

在 VMware 控制台上,以 root 用户身份登录。
单击 VM,然后选择 Install VMware Tools,单击 Install。
双击桌面上的 CDrom 中的VMware Tools 图标。
cdrom:双击 VMwareTools-1.0.1-29996.i386.rpm
执行 vmware-config-tools.pl。
输入所需的显示大小。
同步虚拟机与主机上的时间。执行下面的步骤,以 root 用户身份同步时间。
执行“vmware-toolbox”以显示 VMware Tools Properties 窗口。在 Options 选项卡下,
选择 Time synchronization between the virtual machine and the host operating system。
编辑 /boot/grub/grub.conf,并将选项“clock=pit nosmp noapic nolapic”添加到读取内核 boot 的那一行。

第四步:图形界面的准备
安装Xmanager
运行级别从5改成3 修改 /etc/inittab
修改/etc/profile加入:
export DISPLAY=192.168.2.1:0.0
用Xmanager运行xclock测试

最后关机:init 0

好!linux安装完成,最好把虚拟机备份一下。

普林斯顿大学的研究人员利用冷却重启法破解了硬盘加密技术。大家可能都有所了解,内存中的数据并不会随着电源关闭而立即消失,数据消失的时间从几秒钟到几分钟不等。使用冷却剂冷却内存,则可以延缓数据消失的时间。在实验中,研究人员甚至还动用了-196 °C液氮,他们把使用过的内存从计算机中取出保存在液氮容器中达一个小时以上,然后再安装到计算机中,发现其中的数据几乎完好无损。以下摘要来自他们完成的、提供给同行审议的论文:

“与多数人的印象相反,现代计算机中使用的动态随机存取存储器(DRAM)在掉电后依然能保存数据几秒钟至几分钟,即便是在工作温度或者是从主板上移除。DRAM并非是可靠的存储器,只要没有刷新,数据就不会马上消失,保留的内容足够让恶意攻击者或法院取证获得全系统的存储映像。意味着当黑客能够直接接触物理硬件时,操作系统中加密材料的安全性非常有限。我们测试了流行的硬件加密系统——BitLocker,FileVault,dm-crypt,和TrueCrypt——没有使用任何特殊的设备。我们用实验方法展现了内存剩磁的程度和可预测性。我们发现剩磁时间可以通过简单的技术戏剧性的增加。我们用新算法寻找内存映像中的密钥,修正因为数据位消失而产生的错误。论文中我们讨论了几个减轻风险的策略,但显然不存在简单的修补术。”

实验视频:Half-size WMV(33 MB);论文全文(PDF)。

因为spfile.ora文件为二进制文件,手动修改spfile.ora后,oracle无法识别,也就无法启动了。解决办法如下:

1,找到pfile文件:在10.0.2\admin\实例名\pfile\文件夹下有个init.ora.xxxxxxxxxxx 文件,该文件为带时间戳的pfile文件,将时间戳去掉,变成init.ora文件。

2,开始-运行-cmd
>sqlplus /nolog
sql>conn 用户名/密码 as sysdba
sql>startup pfile='10.0.2\admin\实例名\pfile\init.ora';
启动成功后
sql>create spfile='path/spfileSID.ora' from pfile='10.0.2\admin\实例\pfile\init.ora';

3,将新生成的文件spfileSID.ora拷贝到 "10.2.0\db_1\database\”,目录下覆盖原文件,如果存在initSID.ora文件请重命名。

4。在管理工具-服务中重新启动oracle系列服务,即可解决上述问题。

订阅: 博文 (Atom)