DBA日记之Oracle数据库11g RAC最全的运维手册

DBA日记之Oracle数据库11g RAC最全的运维手册

首页冒险解谜Mirror.mb更新时间:2024-07-26
第1章 文档说明

本文档描述了Oracle11g中常见的维护和管理方法,包括CRS、ASM、数据库等。

文档中斜体部分表示需要用环境变量的值做替换。

第2章 CRS的管理2.1 RAC状态检查2.1.1 检查守护进程状态

守护进程是由/etc/inittab文件中如下三行内容拉起并管理:

h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null

h2:35:respawn:/etc/init.d/init.CSSd fatal >/dev/null 2>&1 </dev/null

h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null

如果这三行内容错误或没有,则守护进程可能会受到影响。

三个守护进程如下:

/bin/sh /etc/init.d/init.cssd fatal

/bin/sh /etc/init.d/init.crsd run

/bin/sh /etc/init.d/init.evmd run

通过ps –ef |grep 可以检查他们是否存在。

2.1.2 检查资源状态

检查RAC所有资源的状态:

# $ORA_CRS_HOME/bin/crs_stat –t

检查CRS的状态:

# $ORA_CRS_HOME/bin/crsctl check crs

单独检查CSS的状态:

# $ORA_CRS_HOME/bin/crsctl check css

2.2 手工启动与关闭RAC

使用init.crs start启动RAC,使用init.crs stop关闭RAC。该命令可以将整个RAC的所有资源(不包括三个守护进程)启动或停止。

不同操作系统上,ini.crs文件的位置不同:

SUSE: /etc/init.d/init.crs

HP: /sbin/init.d/init.crs

AIX: /etc/init.crs

SUN: /etc/init.d/init.crs

# $ORA_CRS_HOME/bin/crsctl stop/start crs

2.3 OCR的管理

OCR盘状态查看:

命令ocrcheck检查OCR存储的情况,执行结果类似于:

midware01% ocrcheck

Status of Oracle Cluster Registry is as follows :

Version : 2

Total space (kbytes) : 513652

Used space (kbytes) : 2792

Available space (kbytes) : 510860

ID : 1054294748

Device/File Name : /dev/rdsk/c3t12d0s4

Device/File integrity check succeeded

Device/File not configured

Cluster registry integrity check succeeded

备份与恢复:

默认地,OCR会被自动备份,使用命令ocrconfig -showbackup查看OCR进行的自动备份:

linux1:~ # /oracle/crs/bin/ocrconfig -showbackup

linux2 2008/12/05 07:06:09 /oracle/crs/cdata/RAC/backup00.ocr

linux2 2008/12/05 03:06:09 /oracle/crs/cdata/RAC/backup01.ocr

linux2 2008/12/04 23:06:09 /oracle/crs/cdata/RAC/backup02.ocr

linux2 2008/12/04 07:06:08 /oracle/crs/cdata/RAC/day.ocr

linux2 2008/11/19 19:06:08 /oracle/crs/cdata/RAC/week.ocr

如果要手工备份,可执行下面的命令:

# $ORA_CRS_HOME/bin/ocrconfig –export /ORACLE/db/ocrbak.ocr

恢复OCR的方法如下:

先关闭两个节点上的RAC,分别执行以下命令:

# /etc/init.d/init.crs stop

然后执行恢复:

如果是一个空的OCR盘则用如下命令导入:

# $ORA_CRS_HOME/bin/ocrconfig –import /oracle/db/ocrbak.ocr

如果OCR盘已经有信息了,那么应使用如下命令做恢复:

# $ORA_CRS_HOME/bin/ocrconfig –restore /oracle/db/ocrbak.ocr

OCR内容查看:

将OCR的内容用ocrdump导出后,可以用vi打开来查看:

# ocrdump /home/oracle/ocr.txt

OCR盘的指定:

OCR使用哪个磁盘或文件是在/etc/oracle/ocr.loc文件中指定的。此文件包含两行内容,例如:

ocrconfig_loc=/oracle/app/product/11g/db/cdata/localhost/local.ocr

local_only=TRUE

这里,ocrconfig_loc指定的是OCR所用的磁盘名称或者文件名。如果是RAC环境,则这里应为磁盘名,如果是单实例的环境,则这里为一个绝对路径及文件名。local_only表示CRS的二进制文件是安装在本地还是多个节点共享的存储上,单实例环境中该参数为TRUE,RAC中二进制文件装在各自本地盘上则为FALSE。

增加OCR盘:

一个RAC环境中,可以有两个OCR,一个为OCR,另外一个为OCRMIRROR。

可以增加OCRMIRROR盘,命令如下:

# ocrconfig -replace ocrmirror /dev/raw/raw3

增加以后,执行ocrcheck将看到两个OCR盘了:

# /oracle/crs/bin/ocrcheck

Status of Oracle Cluster Registry is as follows :

Version : 2

Total space (kbytes) : 296940

Used space (kbytes) : 3948

Available space (kbytes) : 292992

ID : 938694221

Device/File Name : /dev/raw/raw1

Device/File integrity check succeeded

Device/File Name : /dev/raw/raw3

Device/File integrity check succeeded

Cluster registry integrity check succeeded

Logical corruption check succeeded

删除OCR盘:

以下命令将删除OCR盘,原来的OCRMIRROR变成OCR:

# ocrconfig -replace ocr

删除OCRMIRROR:

# ocrconfig -replace ocrmirror

2.4 VOTING DISK的管理

检查Voting Disl盘:

# $ORA_CRS_HOME/bin/crsctl query css votedisk

备份与恢复:

备份命令如下:

# dd if=/dev/raw/raw2 of=/oracle/db/voting.bak

备份时间会比较长,备份文件与VOTING DISK盘的大小接近。

恢复命令如下:

# dd if=/oracle/db/voting.bak of=/dev/raw/raw2

恢复前不需要先关闭RAC。

添加VOTING DISK盘:

可以添加一个盘为voting disk,命令如下:

# crsctl add css votedisk /dev/raw/raw3

删除VOTING DISK盘:

# crsctl delete css votedisk /dev/raw/raw3 -force

2.5 CSS管理

CSS的作用是协调ASM实例与数据库实例之间的通信。因此要使用ASM管理存储,无论是单实例还是RAC环境,都必须先配置CSS。

查看CSS进程是否正常,以oracle用户执行以下命令:

# crsctl check cssd

如果CSS正常,那么显示如下信息:

Cluster Synchronization Services appears healthy

如果显示CSS未启动,则执行如下命令:

# /etc/init.d/init.cssd start

2.6 管理工具SRVCTL

在RAC中,可以使用srvctl(service control tool)工具来管理CRS的各类资源。SRVCTL的有些命令会修改OCR的信息,例如添加service。有些命令则是通过发送指令给CRSD(oracle clusterware process),然后由CRSD去执行,例如启动数据库。

可以使用-h查看命令的帮助信息,例如,要查看srvctl add asm的用法,可以执行如下命令:

# srvctl add asm –h

2.6.1 管理实例

启动数据库实例:

# srvctl start instance -d db_name -i instance_name -o open;

检查数据库实例的状态:

# srvctl status database -d db_name

2.6.2 管理监听程序

添加监听程序:

#srvctl add listener –n hostname -o $ORACLE_HOME

删除监听程序:

#srvctl remove listener –n hostname

如果要指定删除一个资源,例如一个节点上有两个lsnr资源,一个为LISTENER3_HOST1,另外一个为LISTENER_HOST1,现在需要将不正确的LISTENER3_HOST1删除:

# srvctl remove listener -n hostname -l LISTENER3_HOST1

启动监听程序:

#srvctl start listener –n hostname

停止监听程序:

#srvctl stop listener –n hostname

检查监听程序是否存在

#srvctl config listener –n hostname

2.6.3 管理ASM

添加ASM实例:

#srvctl add asm –n hostname –i ASM_ORACLE_SID -o $ORACLE_HOME

删除ASM实例:

#srvctl add asm –n hostname –f [-i ASM_ORACLE_SID]

其中-f表示如果删除失败,则强制删除

启动ASM实例:

#srvctl start asm –n hostname [-i ASM_ORACLE_SID]

停止ASM实例:

# srvctl stop asm –n hostname [-i ASM_ORACLE_SID]

检查ASM实例是否存在

# srvctl config asm –n hostname

2.6.4 管理service

增加service:

# srvctl add service -d db_name -s service_name -r 主节点的ORACLE_SID -a 备节点A的ORACLE_SID,备节点B的ORACLE_SID

删除service:

# srvctl remove service -d db_name -s service_name

启动service:

# srvctl start service -d db_name -s service_name

停止service:

# srvctl stop service -d db_name -s service_name

2.7 修改RAC的IP及VIP2.7.1 修改外网IP及心跳IP

当外网IP修改并重新绑定到网卡上以后,需要修改RAC中记录的外网IP。修改方法如下:

关闭两个节点上的RAC;

修改/etc/hosts文件,用新的IP替换旧IP值

启动RAC,在两个节点上分别执行:

# /etc/init.d/init.crs start

假设我们要修改节点1的外网IP:

# cd $ORA_CRS_HOM/bin

# ./oifcfg setif -global eth0/192.168.1.10:public

请根据实际情况替换eth0、192.168.1.10

然后删除旧的外网IP信息:

# ./oifcfg delif -global eth0/192.168.0.11

修改 $ORACLE_HOME/network/admin/listener.ora 文件中HOST等于的外网IP值

假设我们要修改节点1的心跳IP,旧IP为10.10.10.0,新IP为10.10.20.0:

# cd $ORA_CRS_HOM/bin

# ./oifcfg setif -global eth1:/10.1.0.20:cluster_interconnect

# ./oifcfg delif -global eth1/10.10.10.0

可以查看现在RAC中IP的值:

# ./oifcfg getif –global

最后在两个节点上关闭并重启RAC。

2.7.2 修改VIP

查看当前的VIP设置:

# /oracle/crs/bin/srvctl config nodeapps -a -n linux1

RAC安装完以后,可以修改两个节点的VIP。前提是修改后的VIP必须没有被其他系统使用掉。正确的修改方法如下:

步骤1: 使用srvctl修改VIP

进入/crs/bin目录下执行如下命令:

# ./srvctl modify nodeapps -n rac2 -A 10.71.99.112/255.255.255.0

其中rac2为节点2的hostname,10.71.99.112为新的VIP

如果两个节点的VIP都需要修改,则两个节点上都需要执行该步骤

步骤2: 停止CRS的所有资源

# /etc/init.d/init.crs stop

步骤3: 卸掉旧的VIP网卡

假定旧的VIP是绑定在eth3:1上,那么执行命令:

# ifconfig eth3:1 down

两个节点上都需要执行该步骤

步骤4: 修改/etc/host文件

修改该文件,将旧的VIP改为新的VIP值. 两个节点上都需要执行该步骤

步骤5: 启动CRS资源

在任意一个节点上执行以下命令:

# /etc/init.d/init.crs start

步骤6: 修改客户端或应用程序连接服务器所使用的VIP值

2.7.3 查看与删除IP

查看与管理OCR中IP的配置信息:

查看IP配置信息:

# oifcfg getif

返回结果例如:

linux1:~ # /oracle/crs/bin/oifcfg getif

bond0 10.71.99.0 global public

bond1 192.168.128.0 global cluster_interconnect

# oifcfg iflist

返回结果例如:

linux1:~ # /oracle/crs/bin/oifcfg iflist

bond0 10.71.99.0

bond1 192.168.128.0

即使两个节点的VIP都漂到一个节点上,那么此命令的执行结果也仍只有两行。

删除网卡信息:

# oifcfg delif -global ce0

这里,-global表示删除RAC中所有节点上的网卡ce0。如果只想删除一个节点的,则用- n nodename

第3章 ASM的管理3.1 管理DG3.1.1 建立与扩充disk group

建立外部冗余的DG:

SQL>create diskgroup dg_name external redundancy disk ‘/dev/raw/raw5’;

冗余度:normal(2-way镜像),high(3-way镜像),external(不做镜像)

建立normal冗余的DG:

SQL> CREATE DISKGROUP dg_name NORMAL REDUNDANCY
2 FAILGROUP FGROUP1 DISK
3 'D:MYRAWSRAW1' NAME DISKn,
4 ' ... other disk ... '
5 FAILGROUP FGROUP2 DISK
6 'D:MYRAWSRAW3' NAME DISKn,
7 ' ... other disk ... ' ;

向一个disk group中增加一个裸盘的方法:

SQL>alter diskgroup dg_name add disk '/dev/raw/raw6';

从disk group中去掉disk:

SQL> alter diskgroup dg_name drop disk disk在diskgroup中的名称

(可从v$asm_disk中查询获得,也可在添加disk到group时加name disk名称来指定)

3.1.2 MOUNT与unmount的命令

SQL>alter diskgroup dg_name dismount;

SQL>alter diskgroup dg_name mount;

3.1.3 删除disk group

要在节点1上执行DG的删除动作,则节点1上DG应为MOUNT,节点2上此DG的状态应为DISMOUNT。如果不是,则要先调整。

删除DG的命令如下:

SQL>DROP DISKGROUP dg_name (including contents);

如果DG为DISMOUNT状态,则可以强制删除:

SQL> drop diskgroup dg_name force including contents;

3.1.4 增加DISK的total_mb

当包含在DG中的RAW被扩大后,应在ASM中执行以下命令来扩张ASM可见此RAW的total_mb:

SQL> alter diskgroup dg_name resize all size 19085M;

如果DG中有多个RAW,每个RAW的大小不同,则这里应指定具体的DISK名称:

SQL> alter diskgroup dg_name resize disk disk_name size 19085M;

3.1.5 DG的属性-AU大小

在11G中,默认每个DG的AU大小为1M,可以为每个DG设置不同的AU大小。在建立DG时加上如下子句即可:… attribute 'au_size' = '2M'

AU_SIZE 的值应为 1M、2M、4M、8M、16M、32M 或 64M。

可以修改已有DG的AU值:

SQL> alter diskgroup dg_name set attribute 'au_size'='2M';

3.1.6 DG的属性-离线删除时间

ASM会删除离线时间超过3.6小时的磁盘,可以通过修改DISK_REPAIR_TIME(单位可以是分钟,M或m,或小时,H或h)参数设置磁盘组默认时间限制。

以小时为单位进行设置:

SQL> ALTER DISKGROUP dg_name SET ATTRIBUTE 'disk_repair_time' = '4.5h';

以分钟为单位进行设置

SQL> ALTER DISKGROUP dg_name SET ATTRIBUTE 'disk_repair_time' = '300m';

ALTER DISKGROUP命令的DROP AFTER子句用于废除DISK_REPAIR_TIME参数设置的默认时间。 

使用默认的DISK_REPAIR_TIME:

SQL> ALTER DISKGROUP dg_name OFFLINE DISK D1_0001;

废除默认的DISK_REPAIR_TIME:

SQL> ALTER DISKGROUP dg_name OFFLINE DISK D1_0001 DROP AFTER 30m;

如果磁盘在滚动升级期间离线,直到滚动升级完成,计时器才会启动。

3.1.7 DG的属性-兼容版本

ASM 是一个适用于从 10g 到当前版本的 Oracle 数据库的存储平台。因此,11g 上的 ASM 实例可以保存 10g 第 1 版、10g 第 2 版以及 11g 第 1 版(以及更高版本)的数据库。只要 ASM 版本与 RDBMS 的版本相同或者更高,就可以在该 ASM 实例上创建数据库。如果 ASM 和 RDBMS 实例的版本不同,它们将如何通信呢?很简单:ASM将消息转换成适合RDBMS的版本。

  默认情况下,ASM 实例可以支持10g数据库。但如果您希望在该 ASM 实例上仅放置 11g RDBMS,该怎么办?无需进行消息转换来支持版本差异。但如果可以告诉 ASM 实例唯一支持的数据库是11g第 1 版,该怎么办?这将消除,至少可以减少消息转换。在Oracle数据库11g中,可以使用ASM兼容性和RDBMS兼容性磁盘组属性实现。

  首先,我们将检查磁盘组的当前属性:

SQL> select name, compatibility, database_compatibility from v$asm_diskgroup;

返回结果例如:

NAME COMPATIBILITY DATABASE_COMPATIBILI

-------------------- -------------------- --------------------

DG_ARCH 10.1.0.0.0 10.1.0.0.0

DG_DATA 10.1.0.0.0 10.1.0.0.0

DG_DBFILE 10.1.0.0.0 10.1.0.0.0

DG_INDEX 10.1.0.0.0 10.1.0.0.0

这里,ASM 兼容性(由COMPATIBILITY显示)设置为 10.1.0.0.0,这意味着该磁盘组最高可支持10.1 ASM 结构。因此,该磁盘组可以具有任意RDBMS结构。另一列DATABASE_COMPATIBILITY显示RDBMS兼容性设置为10.1.这意味着,ASM 磁盘组可用于10.1版的任何RDBMS

由于数据库为11g,并只希望创建11g ASM 和RDBMS结构,因此无需拥有10g元素。要将该磁盘组的 ASM 兼容性属性设置为 11.1,可以执行以下语句(在ASM实例中):

SQL> alter diskgroup dg_name set attribute 'compatible.asm'='11.1';

现在ASM 兼容性设置为 11.1;但 RDBMS 兼容性仍然设置为 10.1.要将它也更改为 11.1,命令如下:

SQL> alter diskgroup dg_name set attribute 'compatible.rdbms'='11.1';

注意:兼容性是针对磁盘组设置的,而不是针对整个 ASM 实例。使用该特性,您只需使用一个 ASM 实例即可满足所有数据库版本类型的需要。根据所使用的版本,您可以相应地设置属性,从而减少版本间的通信。

3.1.8 向ASM中添加disk的完整步骤

1. 划好磁盘分区,例如sdd6

2. 查看现有的RAW:

# raw –qa

确定下一个RAW的编码,例如此时最大的RAW编码为RAW11,那么下面将使用RAW12

3. 将RAW12添加到文件/etc/raw中,使它永久生效:

添加的内容请参考该文件中的其他行

4. 修改RAW12的权限

# chown oracle:dba /dev/raw/raw12

5. 将sdd6绑定为裸设备,如raw12:

# raw /dev/raw/raw12 /dev/sdd6

6. 将raw12添加到要扩充的dg中,例如dg_dbfile中:

确定diskstring当前的值,以oracle用户登录节点1:

#export ORACLE_SID= ASM1

#sqlplus / as sysdba

SQL>show parameter asm_diskstring;

例如该参数的值为/dev/raw/raw1,/dev/raw/raw2

登录节点1,然后执行如下步骤:

#export ORACLE_SID= ASM1

#sqlplus / as sysdba

修改参数asm_diskstring:

SQL> alter system set asm_diskstring='/dev/raw/raw1’,’/dev/raw/raw2’,’/dev/raw/raw12';

登录节点2,然后执行如下步骤:

#export ORACLE_SID= ASM2

#sqlplus / as sysdba

修改参数asm_diskstring:

SQL> alter system set asm_diskstring='/dev/raw/raw1’,’/dev/raw/raw2’,’/dev/raw/raw12';

增加raw12到dg中:

SQL>alter diskgroup dg_dbfile add disk '/dev/raw/raw12';

查看该dg的状态:

SQL>select name,state from v$asm_diskgroup where name=’DG_DBFILE’;

如果状态为DISMOUNT,则执行下面的命令将它MOUNT起来:

SQL>alter diskgroup dg_dbfile mount;

回到节点1,执行如下步骤:

查看该dg的状态:

SQL>select name,state from v$asm_diskgroup where name=’DG_DBFILE’;

如果状态为DISMOUNT,则执行下面的命令将它MOUNT起来:

SQL>alter diskgroup dg_dbfile mount;

7. 修改init文件

在节点1和节点2上,分别修改文件$ORACLE_BASE/admin/ ASM/pfile/init.ora ,将原来设置参数asm_diskstring的行注销掉,然后添加一行,内容如下:

asm_diskstring=/dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw12

其中,红色部分为步骤4中看到的值,粉红色的内容为本次新增加的裸设备。

3.2 ASMCMD3.2.1 ASMCMD常用命令

在节点1上,以oracle用户登录,然后设置为 ASM1实例:

# su – oracle

# export $ORACLE_SID= ASM1

# asmcmd

asmcmd命令清单如下:

命令

用途

说明

ls

显示现有的diskgroup名称

ll

显示所有可用的命令

cd

Cd diskgroup名 作用等同于进入普通目录

mkdir

完全和普通目录的管理方法一致

...

rm

删除文件或目录

pwd

查看当前目录

cp

拷贝文件

可在两个DG间拷贝,也可从DG拷贝到文件系统,但不能从文件系统拷贝到DG

3.2.2 复制ASM文件

拷贝ASM文件到文件系统下:

ASMCMD>cd DG_1

ASMCMD>cp sp1.ora /opt/oracle/tst.ora

如果不指定文件系统的具体目录,那么默认为$ORACLE_HOME/dbs

拷贝ASM文件到ASM的DG上:

ASMCMD>cd DG_1

ASMCMD>cp sp1.ora DG_1/tst.ora

这样就将DG_1下的sp1.ora做了个复制文件tst.ora,并存放在DG_1中

注意:cp命令不能将文件系统中的文件拷贝到DG上。

3.2.3 命令lsdg

命令lsdg可以查看DG的各个属性,返回结果例如:

lASMCMD>lsdg

State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name

MOUNTED EXTERN N 512 4096 1048576 19085 18990 0 18990 0 DGB/

MOUNTED EXTERN N 512 4096 1048576 28615 28498 0 28498 0 DG_ARCH/

MOUNTED EXTERN N 512 4096 1048576 19085 3936 0 3936 0 DG_DBFILE/

MOUNTED EXTERN N 512 4096 1048576 28615 13159 0 13159 0 DG_INDEX/

ASMCMD>

3.2.4 元数据备份与恢复

可以在asmcmd中对ASM的DG元数据进行备份与恢复。可以将备份的DG恢复其元数据,也可恢复成一个新名称的DG。

备份元数据:

ASMCMD> md_backup -b /oracle/db/dg2_bk -g dg2

其中,-b表示备份文件的路标路径,如果不指定,则会备份到当前目录。-g表示要备份的DG名,如有多个,则用多个-g来开始,例如:-g dg1 –g dg2,如果不带此参数,则默认备份所有的DG。

恢复元数据:

恢复dg_data的元数据,并生成新名称dg2:

ASMCMD> md_restore -t newdg -o 'dg_data:dg2' -b /oracle/db/dg_data_bk

其中,-b表示使用哪个备份文件来做恢复。-g表示要恢复的DG名称。-t后面有三个选项,一是full,表示创建DG并恢复其元数据,一是nodg,表示仅仅恢复元数据,另外一个是newdg,表示建立一个新名称的dg并恢复其元数据。如果是newdg,那么后面必须跟上-o,来指定旧名称和新名称。也可以在恢复的时候执行一个脚本,如下:

ASMCMD> md_restore –t newdg –of override.txt –i backup_file

特别说明:

1. DG上存放的数据库中建立的对象,如数据文件,以及由此生成的目录,都不属于元数据

2. 进入ASMCMD后mkdir建立的目录等属于元数据,可以被备份出来

3.3 ASM磁盘头信息备份与恢复

使用dd备份头信息:

# dd if=/dev/raw/raw201 bs=4096 count=1 of=/oracle/db/raw201bak

这里,只需要备份第一个块的内容即可,即count=1。参数of出去的文件可以放在本地盘上。这个备份文件只能使用dd命令来查看其内容。

使用dd做头信息恢复:

如果头信息被破坏,ASM将看不到此盘,即在v$asm_disk中看不到此raw文件。只要用之前备份的头信息文件恢复一下即可。

# dd if=/oracle/db/raw204bak of=/dev/raw/raw204 bs=4096 count=1

使用kfed备份头信息:

# kfed read /dev/raw/raw204 aunum=0 >/oracle/db/raw204au0

这样备份出来的文件可以使用vi或more命令查看其内容。

使用kfed恢复头信息:

# kfed merge /dev/raw/raw208 text=/wch/raw208au

这里文件/wch/raw208au是可以用vi编辑的。

3.4 ASM常用视图3.4.1 视图V$ASM_DISKGROUP

字段名称

字段含义

GROUP_NUMBER

DG组编号,主键

NAME

DG名称

SECTOR_SIZE

Physical block size (in bytes)。我们库中为512(block size为8K),磁盘扇区的大小

BLOCK_SIZE

Automatic Storage Management metadata block size (in bytes)。ASM固定它为4096

ALLOCATION_UNIT_SIZE

Size of the allocation unit (in bytes)。即AU的大小,一般为1M。建立DG时可以指定

STATE

MOUNTED:可以被使用,但此时未被数据库实例连接使用

CONNECTED:DG正在被数据库使用

DISMOUNTED:DG被干净地关闭了

BROKEN:ASM已MOUNT了DG,但数据库实例看不到它

UNKNOWN:ASM都没有试图去MOUNT过它

TYPE

冗余方式,EXTERN、NORMAL、HIGH

TOTAL_MB

总容量

FREE_MB

未被使用的容量

REQUIRED_MIRROR_FREE_MB

如果做了冗余,则需要保留一些空间以便失败时保留当时的信息

USABLE_FILE_MB

Amount of free space that can be safely utilized taking mirroring into

account, and yet be able to restore redundancy after a disk failure

OFFLINE_DISKS

此DG中有多少个disk处于offline状态

COMPATIBILITY

ASM所要求的最低版本

DATABASE_COMPATIBILITY

要使用此ASM的数据库要求的最低版本

3.4.2 视图V$ASM_DISK

字段名称

字段含义

GROUP_NUMBER

DG组编号,主键。如果为0,表示不归属于任何DG

DISK_NUMBER

DISK在所属DG内的编号。从0开始

COMPOUND_INDEX

A 32-bit number consisting of a disk group number in the high-order 8

bits and a disk number in the low-order 24 bits (for efficient access to the

view)

INCARNATION

Incarnation number for the disk

MOUNT_STATUS

CACHED:此disk永久存在于ASM中,并已加入了DG

OPENED:此disk永久存在于ASM中,并已加入了DG,并有数据库实例正在使用它

IGNORED:它存在于

CLOSED:存在于ASM中但并未被ASM使用

CLOSING:ASM正在关闭此DISK

MISSING:ASM参数里设置了

HEADER_STATUS

MEMBER:此盘已属于一个DG。除非使用force,否则不可将它加入其他DG中

UNKNOWN:ASM无法读该磁盘的头信息

CANDIDATE:此盘不属于任何一个DG,可被add到一个DG中

INCOMPATIBLE:头信息中记录的版本号与ASM的版本不一致

PROVISIONED - Disk is not part of a disk group and may be added to

a disk group with the ALTER DISKGROUP statement. The

PROVISIONED header status is different from the CANDIDATE header

status in that PROVISIONED implies that an additional

platform-specific action has been taken by an administrator to make

the disk available for Automatic Storage Management.

FORMER:此盘曾经属于一个DG,现可被加到其他DG中

CONFLICT:由于冲突,ASM没有MOUNT它

FOREIGN:此盘中包含了文件系统上建立的文件

3.5 常用方法3.5.1 如何确定ASM实例的编号

一般来说,节点1上的ASM实例为ASM1,节点2的为ASM2。但是有时因安装顺序以及安装磁次数不同,导致节点上的实例号码不同。

确定ASM实例的编号方法是,以oracle用户登录,进入$ORACLE_HOME/dbs目录下,执行ll命令查看,返回结果例如:

oracle@linux1:/oracle/db/product/11.1.0/db_1/dbs> ll

total 18132

-rw-rw---- 1 oracle oinstall 3327 Feb 12 15:40 ab_ ASM1.dat

-rw-rw---- 1 oracle oinstall 1552 Feb 12 15:40 hc_ ASM1.dat

-rw-rw---- 1 oracle oinstall 1552 Feb 12 15:42 hc_ora11g1.dat

lrwxrwxrwx 1 oracle oinstall 36 Nov 26 11:49 init ASM1.ora -> /oracle/db/admin/ ASM/pfile/init.ora

-rw-r--r-- 1 oracle oinstall 2774 Sep 11 2007 init.ora

-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora

-rw-r----- 1 oracle oinstall 38 Feb 11 15:37 initora11g1.ora

-rw-r----- 1 oracle oinstall 1536 Nov 26 11:49 orapw ASM1

-rw-r----- 1 oracle oinstall 1536 Jan 23 16:34 orapwora11g1

-rw-r----- 1 oracle oinstall 18497536 Jan 24 16:00 snapcf_ora11g1.f

从以上表格中可以看到有几个名称中带ASM字符的文件,这里ASM后面的编号即节点上ASM的编号。这里就是ASM1。

3.5.2 查询DG-RAW-磁盘的对应关系

查看DG与RAW的对应关系:

SQL>select a.group_number,b.name,a.path from v$asm_disk a,v$asm_diskgroup b where a.group_number=b.group_number;

返回结果例如:

SQL> select a.group_number,b.name,a.path from v$asm_disk a,v$asm_diskgroup b where a.group_number=b.group_number;

GROUP_NUMBER NAME PATH

------------ ------------------------------ --------------------

3 DG_DBFILE /dev/raw/raw201

1 DG_ARCH /dev/raw/raw202

2 DG_DATA /dev/raw/raw203

4 DG_INDEX /dev/raw/raw204

这里,以查询DG_DBFILE的信息为例。它对应于raw201

查看RAW与磁盘或磁盘分区的对应关系:

以root用户执行以下命令:

# raw -qa

可以看到每个raw的主次设备号,返回结果例如:

linux1:~ # raw -qa

/dev/raw/raw1: bound to major 8, minor 33

/dev/raw/raw2: bound to major 8, minor 49

/dev/raw/raw201: bound to major 8, minor 37

/dev/raw/raw202: bound to major 8, minor 38

/dev/raw/raw203: bound to major 8, minor 53

/dev/raw/raw204: bound to major 8, minor 54

/dev/raw/raw208: bound to major 8, minor 55

记下raw201的设备号:8,37

查询磁盘信息:

# ll /dev/sd*

返回结果例如:

linux1:~ # ll /dev/sd*

brw-r----- 1 root disk 8, 0 Dec 24 16:56 /dev/sda

brw-r----- 1 root disk 8, 1 Dec 24 16:56 /dev/sda1

brw-r----- 1 root disk 8, 2 Dec 24 16:56 /dev/sda2

brw-r----- 1 root disk 8, 3 Dec 24 16:56 /dev/sda3

brw-r----- 1 root disk 8, 16 Dec 24 16:56 /dev/sdb

brw-r----- 1 root disk 8, 17 Dec 24 16:56 /dev/sdb1

brw-r----- 1 root disk 8, 18 Dec 24 16:56 /dev/sdb2

brw-r----- 1 root disk 8, 19 Dec 24 16:56 /dev/sdb3

brw-r----- 1 root disk 8, 32 Dec 24 16:56 /dev/sdc

brw-r----- 1 root disk 8, 33 Dec 24 16:56 /dev/sdc1

brw-r----- 1 root disk 8, 34 Dec 24 16:56 /dev/sdc2

brw-r----- 1 root disk 8, 35 Dec 24 16:56 /dev/sdc3

brw-r----- 1 root disk 8, 37 Dec 24 16:56 /dev/sdc5

brw-r----- 1 root disk 8, 38 Dec 24 16:56 /dev/sdc6

brw-r----- 1 root disk 8, 48 Dec 24 16:56 /dev/sdd

brw-r----- 1 root disk 8, 49 Dec 24 16:56 /dev/sdd1

brw-r----- 1 root disk 8, 50 Dec 24 16:56 /dev/sdd2

brw-r----- 1 root disk 8, 51 Dec 24 16:56 /dev/sdd3

brw-r----- 1 root disk 8, 53 Dec 24 16:56 /dev/sdd5

brw-r----- 1 root disk 8, 54 Dec 24 16:56 /dev/sdd6

brw-r----- 1 root disk 8, 55 Dec 24 16:56 /dev/sdd7

在这里找设备号为8,37的盘,应是sdc5。

以上可说明对应关系为:DG_DBFILE -> RAW201 -> sdc5

第4章 数据库管理4.1 参数文件管理

查看一个参数的值:

SQL> show parameter parameter_name

检查数据库是否以spfile启动的:

SQL> show parameter spfile

如果返回的value为空,说明是以pfile文件启动。否则value的值就是spfile文件。

Pfile文件与spfile文件互相生成:

以spfile启动的数据库,则可由SPFILE生成PFILE:

SQL> create pfile =’path/filename.ora’ from spfile;

不是以spfile启动的数据库,也可由SPFILE生成PFILE:

SQL> create pfile =’path/filename.ora’ from spfile=’spfile文件的路径及名称’;

注意:

如果不指定pfile文件的路径及名称,则它会替换现有$ORACLE_HOME/dbs/initORACLE_SID.ora文件的内容。

从pfile文件生成spfile:

SQL>create spfile from pfile=’path/filename.ora’

动态修改参数的值:

SQL>alter system set 参数名=新值 scope=both/memory/spfile [sid=INSTANCE_NAME]

注意:

1. 如果both为scope子句的默认值,表示同时修改内存和SPFILE文件中此参数的值

2. 如果SCOPE为memory,则修改会马上生效,但下次启动数据库后就失效了

3. 如果SCOPE为spfile,则只有重启数据库后修改才能生效

4. 如果数据库是以pfile文件启动的,那么scope只能等于memory

5. 在RAC中,如果仅想修改一个实例的值,那么需要加子句sid

4.2 表空间管理4.2.1 表空间大小

查询表空间的总大小:

SELECT tablespace_name, SUM(bytes) / 1024 / 1024 / 1024 jg
FROM dba_data_files
GROUP BY tablespace_name

其中字段jg的单位为G

查询表空间当前可用大小:

SELECT tablespace_name, SUM(bytes) / 1024 / 1024 / 1024 jg
FROM dba_free_space
GROUP BY tablespace_name

注意:

1. 普通表空间中,如果数据库大小为8K,那么每个数据文件最大不能超过32G

2. 大表空间中数据文件大小几乎不受限制。建立大表空间的语法为create bigfile tablespace …

4.2.2 表空间自动扩张

修改表空间下的文件为不可自动扩张:

SQL> alter database datafile ‘文件路径/文件名.dbf’ autoextend off

修改表空间下的文件为不可自动扩张:

SQL> alter database datafile ‘文件路径/文件名.dbf’ autoextend on

4.2.3 表空间更名

可以在线修改表空间的名称:

SQL> alter tablespace 表空间名称 rename to 新名称;

改名后,其他使用到该表空间的地方也自动被修改,无需用户再手工逐一修改

4.2.4 表空间的数据文件更名

将数据文件从一个地方挪到另外一个地方后,需要在数据库中修改一下数据文件的名称(含文件的绝对路径)。修改方法如下:

SQL>shutdown immediate;

SQL>startup mount;

SQL> alter database rename file '/old path/old_filename.dbf' to '/new path/new_filename.dbf';

SQL> recover database;

SQL> alter database open;

4.2.5 缺省表空间

查看实例的缺省UNDO表空间:

SQL>show parameter undo_tablespace;

修改默认的UNDO表空间:

SQL>alter system set undo_tablespace=新UNDO名称;

修改默认的临时表空间:

SQL> alter database default temporary tablespace 新临时表空间名;

修改数据库中所有用户默认的表空间:

SQL> alter database default tablespace 新表空间名

查看用户默认的表空间:

SQL>Select DEFAULT_TABLESPACE from dba_users where username='ORACLE';

新建用户时如不指定默认表空间,则使用默认表空间:

SQL>create user 用户名 identified by 密码 [default tablespace 表空间名]

修改用户默认的表空间:

SQL>alter user oracle default tablespace新表空间名;

4.2.6 表空间删除

可以使用如下命令删除表空间,其中如果没有including contents and datafile,则表空间的内容及

数据文件需要手工删除:

SQL>alter database drop tablespace 表空间名 including contents and datafile;

不能删除数据库的默认表空间和默认临时表空间

不能删除SYSTEM表空间和SYSAUX表空间

4.2.7 UNDO表空间

在RAC类数据库中,每个节点上都有一个UNDO表空间,在使用ASM管理存储的模式下,系统在创建数据库时会生成两个(两节点的RAC)UNDO表空间,他们都存放在同一个disk group中,单会被分别指定给不同的实例。修改UNDO表空间的大小:

SQL>alter database datafile ‘文件路径/文件名.dbf’ resize 10G;

4.2.8 TEMP表空间

修改UNDO表空间的大小:

SQL>alter database tempfile ' DG_DBFILE/ora11g/temp01.dbf' resize 10G;

4.3 重做日志文件管理

每个节点有各自的redo log文件,他们都存放在同一个disk group中,

修改REDO文件的大小:不能直接修改重做日志文件的大小,只能先增加新size的日志组,然后切换到新组上,再把旧size的日志组drop。

4.3.1 增加REDO日志组

SQL> alter database add logfile thread 1 group 11 ' DG_DBFILE/ora11g/redo1_11.log' size 200M

这里,thread 1表示在RAC环境中,将为节点1增加日志组,如果是单实例数据库,则不需要该子句。另外,及时目前节点1已经down,也可以在节点2上执行上面的语句来为节点1增加日志组。该日志组中的日志文件大小为200M。

4.3.2 删除日志组

SQL> alter database drop logfile group 1;

注意,只有状态为inactive和unused的日志组才可被drop。如果状态为active,则需要反复做多次日志切换才可将状态调整为inactive

4.3.3 日志切换

在RAC环境中,进入各个实例,执行如下语句:

SQL> alter system switch logfile;

4.3.4 日志清理

如果因redo日志损坏或不能归档导致数据库不能启动,可以先清理日志文件。

查看每个日志组是否已经归档:

SQL> select group#,status,SEQUENCE#,ARCHIVED from v$log;

清除未归档的日志组:

SQL>alter database clear unarchived logfile group group_number;

清除已归档的日志组:

SQL>alter database clear logfile group group_number;

清理日志文件并不会使日志中的内容丢失。

4.3.5 重做日志切换次数查询

可以使用如下SQL语句来查询过去30天中每天每小时的日志切换次数:

SELECT to_char(first_time, 'yyyy-mm-dd') DAY,
COUNT(*) switch_times,
SUM(decode(to_char(first_time, 'hh24'), '00', 1, 0)) h00,
SUM(decode(to_char(first_time, 'hh24'), '01', 1, 0)) h01,
SUM(decode(to_char(first_time, 'hh24'), '02', 1, 0)) h02,
SUM(decode(to_char(first_time, 'hh24'), '03', 1, 0)) h03,
SUM(decode(to_char(first_time, 'hh24'), '04', 1, 0)) h04,
SUM(decode(to_char(first_time, 'hh24'), '05', 1, 0)) h05,
SUM(decode(to_char(first_time, 'hh24'), '06', 1, 0)) h06,
SUM(decode(to_char(first_time, 'hh24'), '07', 1, 0)) h07,
SUM(decode(to_char(first_time, 'hh24'), '08', 1, 0)) h08,
SUM(decode(to_char(first_time, 'hh24'), '09', 1, 0)) h09,
SUM(decode(to_char(first_time, 'hh24'), '10', 1, 0)) h10,
SUM(decode(to_char(first_time, 'hh24'), '11', 1, 0)) h11,
SUM(decode(to_char(first_time, 'hh24'), '12', 1, 0)) h12,
SUM(decode(to_char(first_time, 'hh24'), '13', 1, 0)) h13,
SUM(decode(to_char(first_time, 'hh24'), '14', 1, 0)) h14,
SUM(decode(to_char(first_time, 'hh24'), '15', 1, 0)) h15,
SUM(decode(to_char(first_time, 'hh24'), '16', 1, 0)) h16,
SUM(decode(to_char(first_time, 'hh24'), '17', 1, 0)) h17,
SUM(decode(to_char(first_time, 'hh24'), '18', 1, 0)) h18,
SUM(decode(to_char(first_time, 'hh24'), '19', 1, 0)) h19,
SUM(decode(to_char(first_time, 'hh24'), '20', 1, 0)) h20,
SUM(decode(to_char(first_time, 'hh24'), '21', 1, 0)) h21,
SUM(decode(to_char(first_time, 'hh24'), '22', 1, 0)) h22,
SUM(decode(to_char(first_time, 'hh24'), '23', 1, 0)) h23
FROM v$log_history
WHERE first_time > trunc(SYSDATE - 30)
GROUP BY ROLLUP(to_char(first_time, 'yyyy-mm-dd'));

其中h**表示小时。

4.4 归档模式4.4.1 单实例数据库修改为归档模式的方法

正常关闭数据库:

SQL>shutdown immediate;

注意,这里不能使用abort或断电方式关闭数据库。

启动到MOUNT状态:

SQL>startup mount;

设置归档参数:

SQL> alter system set db_recovery_file_dest='';

SQL> alter system set log_archive_dest_1=’LOCATION=path’;

修改为归档模式:

SQL> alter database archivelog;

启动数据库:

SQL> alter database open;

4.4.2 RAC数据库修改为归档模式的方法

在两个节点上,分别正常关闭数据库:

SQL>shutdown immediate;

注意,这里不能使用abort或断电方式关闭数据库。

启动节点1上的数据库到MOUNT状态:

SQL>startup mount;

修改为非RAC模式:

SQL> alter system set cluster_database=false scope=spfile;

关闭并重新启动节点1上的数据库到MOUNT状态

设置归档参数:

SQL> alter system set db_recovery_file_dest='path';

SQL> alter system set db_recovery_file_dest_size=2G;

注意,如果参数log_archive_dest_1有设置,则清空。

修改为归档模式:

SQL> alter database archivelog;

修改为RAC模式:

SQL> alter system set cluster_database=true scope=spfile;

关闭节点1上的数据库。然后重新启动两个节点上的数据库。

4.4.3 归档路径

可以使用flash recory area来作为归档目标路径,需要同时设置参数db_recovery_file_dest和db_recovery_file_dest_size两个参数。如果归档文件的总大小超过了db_recovery_file_dest_size的值,将发生因归档失败而无法启动数据库的现象。该参数默认值为2G。

也可以使用log_archive_dest_n 来执行归档目标路径。默认地,log_archive_dest_1如果为空,则表示归档时会在log_archive_dest_1默认的$ORACLE_HOME/dbs目录下生成一份归档文件。这会导致$ORACLE_HOME目录爆涨而发生严重的空间问题。

参数log_archive_dest与log_archive_dest_n不能同时使用,参数log_archive_dest_1的值如果没有设,则默认为$ORACLE_HOME/dbs目录。在11g中,参数log_archive_dest就不要再使用了!

设置log_archive_dest_1的语法如下,这里引号中的LOCATION=是必不可少的:

SQL> alter system set log_archive_dest_1='LOCATION=dest_path ';

注意:

1. 如果db_recovery_file_dest与log_archive_dest_1设置了不同的值,那么归档文件将在两个路径下同时生成(文件内容一致,文件名称可能不同)

2. 即使log_archive_dest_1为空,与将它设置为$ORACLE_HOME/dbs目录的实际效果是一样的

4.5 重建控制文件

当数据库因重做日志文件或者数据文件丢失或不一致,或者要修改数据库名称时,一般就可通过重建控制文件来实现。

步骤1: 备份控制文件成脚本文件

SQL> alter database backup controlfile to trace;

注意:数据库必须为MOUNT或OPEN状态。

步骤2: 找到刚生成的脚本文件

在目录$ORACLE_BASE/oradb/diag/rdbms/db_name/instance_name/trace中找到最新生成的trc文件,该文件中应包含CREATE CONTROLFILE语句。

步骤3: 重整建控制文件的SQL语句

从该文件中取出最核心的内容,例如:

CREATE CONTROLFILE REUSE DATABASE "INOMC" NORESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/dev/vx/dsk/i2kdgtest/redo1_1_vol' SIZE 50M,

GROUP 2 '/dev/vx/dsk/i2kdgtest/redo2_1_vol' SIZE 50M,

GROUP 3 '/dev/vx/dsk/i2kdgtest/redo3_1_vol' SIZE 50M,

GROUP 4 '/dev/vx/dsk/i2kdgtest/redo4_1_vol' SIZE 50M,

GROUP 12 '/dev/vx/dsk/i2kdgtest/redo12_1_vol' SIZE 100M

-- STANDBY LOGFILE

DATAFILE

'/dev/vx/dsk/i2kdgtest/system_vol',

'/dev/vx/dsk/i2kdgtest/sysaux_vol',

'/dev/vx/dsk/i2kdgtest/undotbs1_vol',

'/dev/vx/dsk/i2kdgtest/users_vol'

CHARACTER SET ZHS16GBK

然后修改为:

CREATE CONTROLFILE set DATABASE 'INOMC' RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/dev/vx/dsk/i2kdgtest/redo1_1_vol' SIZE 50M,

GROUP 2 '/dev/vx/dsk/i2kdgtest/redo2_1_vol' SIZE 50M,

GROUP 3 '/dev/vx/dsk/i2kdgtest/redo3_1_vol' SIZE 50M,

GROUP 4 '/dev/vx/dsk/i2kdgtest/redo4_1_vol' SIZE 50M

DATAFILE

'/dev/vx/dsk/i2kdgtest/system_vol',

'/dev/vx/dsk/i2kdgtest/sysaux_vol',

'/dev/vx/dsk/i2kdgtest/undotbs1_vol',

'/dev/vx/dsk/i2kdgtest/users_vol'

CHARACTER SET ZHS16GBK;

这个例子中,我们是要去掉group为12的日志文件

注意:如果已经有控制文件存在,则仍使用reuse,如果控制文件没有了,那么使用set

步骤4: 将数据库启动到nomount状态

SQL>shutdown immediate;

SQL>startup nomount;

步骤5: 执行修改后的CREATE CONTROLFILE语句

步骤6: 打开数据库

SQL> ALTER DATABASE OPEN RESETLOGS;

4.6 内存参数管理4.6.1 Oracle内存管理发展阶段

9i:通过PGA_AGGREGATE_TARGET参数实现PGA自动管理

10g:通过SGA_TARGET参数实现了SGA的自动管理

11g:通过MEMORY_TARGET参数实现了所有内存块的自动管理

可以通过视图V$MEMORY_DYNAMIC_COMPONENTS和V$MEMORY_RESIZE_OPS来查询各个内存部分的大小。

下面分别介绍这三个管理方式的设置方法。但在11g中,建议使用AMM。

4.6.2 自动内存管理AMM

AMM是Automatic Memory Management的缩写,表示自动内存管理。有两个参数memory_max_target和memory_target,参数memory_max_target表示可用的最大内存值,memory_target表示在memory_max_target的范围内,有多少内存是可用于动态分配的,它应小于等于memory_max_target的值。

设置方法如下:

SQL> alter system set memory_max_target=3200M scope=spfile;

SQL> alter system set memory_target=3200M scope=spfile;

SQL> shutdown immediate;

SQL> startup;

其他内存参数如pga_aggregate_target、sga_max_size等,在自动内存管理的情况下是不需要设置的,等于0即可,oracle在运行期间会根据每个部分的实际需求分配相应大小的内存。但是如果设置了这些参数为非0值,那么这个值将是该参数的最小值,实际运行中的值应是大于等于它的。

注意:如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

4.6.3 自动共享内存管理ASMM

ASMM是Automatic Shared Memory Management的缩写,表示共享内存(SGA)的自动管理。要使用这种方式,需要设置初始化参数 MEMORY_TARGET=0 ,然后显式的指定 SGA_TARGET 的值。

SQL> alter system set memory_target=0 scope=both;

SQL> alter system set sga_target=1024m scope=both;

这两个参数的修改是有严格顺序的,如果不遵守倒也没问题--Oracle 会报告错误。

4.6.4 自动PGA管理

如果使用AMM,则对PGA不用操心。如果要做到精细控制而切换到自动PGA内存管理模式,需要设定WORKAREA_SIZE_POLICY=AUTO(默认为AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精确控制PGA,则WORKAREA_SIZE_POLICY=MANUAL,然后对PGA的各个部分的大小进行设置。

4.7 其他管理内容4.7.1 数据库版本查看

有两种方法可以查看数据库的版本信息。一是执行sqlplus / as sysdba,在输出内容中有版本及包含的关键特征:

oracle@linux2:~> sqlplus / as sysdba

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Sep 2 08:59:07 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production --说明是11g的企业版,64位的

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options --这里说明包含了哪些特别功能

SQL>

如果是标准版,那么输出的结果如下:

oracle@linux1:~> sqlplus / as sysdba

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Sep 2 09:57:48 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Release 11.1.0.6.0 - 64bit Production --说明是11g的标准版,64位的

方法二是查看v$version视图。或者查看SELECT * FROM PRODUCT_COMPONENT_VERSION;

4.7.2 字符集

数据库服务器端字符集可通过视图V$NLS_PARAMETERS中的NLS_CHARACTERSET的值查看。

本地设置环境变量NLS_LANG(我的电脑,右键,属性,高级,环境变量),如设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。

数据库的字符集在安装时指定后,不可修改。如一定要修改字符集,那么建议重新建库。

4.7.3 创建密码文件

以oracle用户执行以下命令,建立密码文件,如果此文件已有,则需要先删除后建立:

# orapwd file=$ORACLE_HOME/dbs/orapwORACLE_SID password=mima entries=6

4.7.4 关闭审计功能

安装完成后,默认为数据库级的审计,即audit_trail的值为DB。这样每次有用户登录到数据库时都会在系统表空间中记录一行,并且在/opt/app/admin/ora11g/adump目录下生成一个.aud文件。一段时间后,系统表空间不断增大,磁盘文件也不断增大。应该定期清理。

因为此审计功能并无太多意义,建议关闭。命令如下:

SQL> alter system set audit_trail='NONE' scope=spfile;

清理打开审计时遗留的一些信息:

SQL> truncate table SYS.AUD$;

4.7.5 帐号管理

给帐号解锁:

# sqlplus / as sysdba

SQL> ALTER USER XDJ ACCOUNT UNLOCK;

4.7.6 profile管理

修改profile中的设置:

SQL> alter profile DEFAULT limit idle_time 60;

创建profile的样例:

SQL> create profile TEST_PROFILE limit FAILED_LOGIN_ATTEMPTS 3;

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved