本文档描述了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 自动内存管理AMMAMM是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 自动共享内存管理ASMMASMM是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