百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

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

sinye56 2024-09-21 02:28 3 浏览 0 评论

第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及VIP

2.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 管理DG

3.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 ASMCMD

3.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;

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: