修改oracle中的用户名和密码

修改底层表 USER$ 更换用户名

1、sqlplus /nolog
2、SQL> conn sys/zzh_2046@rlzy as sysdba 连接到数据库。通常可以用sys用户登陆。
3、SQL> select * from user$; 找到 name为INSUR_RECOVER需要修改的用户的user#。
SQL> select USER#,NAME,PASSWORD  from user$ where name='INSUR_RECOVER';

     USER# NAME                                TYPE# PASSWORD
---------- ------------------------------ ---------- ------------------------------
       124 INSUR_RECOVER                           1 89E995F8B999AF00
4、update user$ set name='INSUR_REDO' where user#=124;
   已更新 1 行。
5、SQL> COMMIT;提交完成。
6、SQL> ALTER SYSTEM CHECKPOINT;
   系统已更改。
7、SQL> ALTER USER INSUR_REDO IDENTIFIED BY "redo";
   此时会提示新用户不存在。
SQL> ALTER USER INSUR_REDO IDENTIFIED BY "redo"
*ERROR 位于第 1 行:ORA-01918: 用户'INSUR_REDO'不存在
8、SQL> ALTER SYSTEM FLUSH SHARED_POOL;
   系统已更改。
9、SQL> ALTER USER INSUR_REDO IDENTIFIED BY "redo";
    用户已更改。
10、测试连接
    SQL> CONN INSUR_REDO/redo@rlzy;
    已连接。
11、SQL> SELECT * FROM TAB;
    查看新用户下是否有原用户的对象,包括表等。
12、SQL> CONN /    AS SYSDBA已连接。
13、SQL> SHOW USER     --查看当前连接用户
    为"SYS"
14、SQL> SHUTDOWN IMMEDIATE   --关闭数据库
    数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。
15、SQL> STARTUP              --启动数据库
        ORACLE 例程已经启动。......数据库装载完毕。数据库已经打开。
16、可以看出没有再恢复为TEST
SQL> select USER#,NAME,PASSWORD  from user$ where user#=124;

     USER# NAME                                TYPE# PASSWORD
---------- ------------------------------ ---------- ------------------------------
       124 INSUR_RECOVER                           1 89E995F8B999AF00


在操作过程中有可能会导致用户被锁
--查看被锁的用户
        select LOCK_DATE,username from dba_users where username='USERNAME';
        LOCK_DATE为空说明没有锁定,非空为锁定。
-解锁方法
        ALTER USER USER_NAME ACCOUNT UNLOCK;

更改oracle集群中的的公用/互联IP子网配置

可使用oifcfg 添加或删除OCR 中的网络接口信息:

$ /bin/oifcfg getif
eth0 139.2.156.0 global public
eth1 192.168.0.0 global cluster_interconnect
$ oifcfg delif -global eth0
$ oifcfg setif –global eth0/139.2.166.0:public
$ oifcfg delif –global eth1
$ oifcfg setif –global eth1/192.168.1.0:cluster_interconnect
$ oifcfg getif
eth0 139.2.166.0 global public
eth1 192.168.1.0 global cluster_interconnect

更改公用/互联IP 子网配置
在安装Oracle Clusterware 和RAC 时,在OUI 交互阶段,有可能会指定与Oracle
Clusterware 将使用的公用和互联接口有关的错误信息。如果发生这种情况,则在安装过
程结束时,Oracle Clusterware 就可以启动,但以后在与集群中的其他节点进行通信时可能
会遇到问题。如果公用网络和互联的接口、IP 子网或IP 地址不正确或需要进行更改,则
应使用Oracle 接口配置工具(oifcfg) 进行更改,因为这样可以更新相应的OCR 信息。
在本幻灯片所显示的示例中,公用网络和专用网络的IP 子网都不正确:
1. 使用getif 选项可以获取当前接口信息。
2. 先使用delif 选项删除与公共接口对应的项,然后使用setif 选项输入正确的
信息。
3. 对专用互联执行相同的操作。
4. 检查新信息是否正确。
可以将网络接口存储为全局接口或节点特定的接口。如果RAC 集群的所有节点都具
有连接到同一子网的同一接口(推荐),则会将接口存储为全局接口。仅当集群中的某些
节点具有不同的接口和子网集时,才会将接口存储为节点特定的接口。

更改oracle集群中的的vip

更改VIP 地址

1. 确定用于支持VIP 的接口:

#ifconfig -a
[root@jyrac2 ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:69:BC:16
          inet addr:192.168.1.204  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:bc16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:60675 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:174445 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:37386695 (35.6 MiB)  TX bytes:114727056 (109.4 MiB)
          Interrupt:185 Base address:0x1480

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:69:BC:16
          inet addr:192.168.1.206  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:185 Base address:0x1480

eth1      Link encap:Ethernet  HWaddr 00:0C:29:69:BC:20
          inet addr:192.168.1.205  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:bc20/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:102825 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:141 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:62754558 (59.8 MiB)  TX bytes:12364 (12.0 KiB)
          Interrupt:193 Base address:0x1800

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:57831 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:57831 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13053456 (12.4 MiB)  TX bytes:13053456 (12.4 MiB)

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

2. 停止依赖VIP 的所有资源:

$ srvctl stop instance -d DB -i DB1
$ srvctl stop asm -n node1
$ srvctl stop nodeapps -n node1
[oracle@jyrac2 crs]$ cd /u01/app/oracle/product/10.2.0/crs/bin
[oracle@jyrac2 bin]$ ./srvctl stop instance -d jyrac -i jyrac2
[oracle@jyrac2 bin]$ ./srvctl stop asm -n jyrac2
[oracle@jyrac2 bin]$ ./srvctl stop nodeapps -n jyrac2

3. 验证VIP 不再处于运行状态:

$ ifconfig -a [ + $ crs_stat
[root@jyrac2 ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:69:BC:16
          inet addr:192.168.1.204  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:bc16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63053 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:183453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:38187756 (36.4 MiB)  TX bytes:119829467 (114.2 MiB)
          Interrupt:185 Base address:0x1480

eth1      Link encap:Ethernet  HWaddr 00:0C:29:69:BC:20
          inet addr:192.168.1.205  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:bc20/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:111483 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:150 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:69802524 (66.5 MiB)  TX bytes:12742 (12.4 KiB)
          Interrupt:193 Base address:0x1800

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:60931 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:60931 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13708077 (13.0 MiB)  TX bytes:13708077 (13.0 MiB)

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame.:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

You have new mail in /var/spool/mail/root
[root@jyrac2 ~]#

[oracle@jyrac1 bin]$ ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.jyrac.db   application    ONLINE    ONLINE    jyrac1
ora....c1.inst application    ONLINE    ONLINE    jyrac1
ora....c2.inst application    OFFLINE   OFFLINE
ora....SM1.asm application    ONLINE    ONLINE    jyrac1
ora....C1.lsnr application    ONLINE    ONLINE    jyrac1
ora.jyrac1.gsd application    ONLINE    ONLINE    jyrac1
ora.jyrac1.ons application    ONLINE    ONLINE    jyrac1
ora.jyrac1.vip application    ONLINE    ONLINE    jyrac1
ora....SM2.asm application    OFFLINE   OFFLINE
ora....C2.lsnr application    OFFLINE   OFFLINE
ora.jyrac2.gsd application    OFFLINE   OFFLINE
ora.jyrac2.ons application    OFFLINE   OFFLINE
ora.jyrac2.vip application    OFFLINE   OFFLINE
[oracle@jyrac1 bin]$

从上面的输出可以看出实例jyrac2已经停止运行节点jyrac2的vip已经停止了

4. 更改/etc/hosts 中的IP 和DNS。
对所有节点进行修改将jyrac2节点的vip从192.168.1.206修改为192.168.1.216

[root@jyrac2 ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               jyrac2 localhost.localdomain localhost


192.168.1.201 jyrac1
192.168.1.204 jyrac2
192.168.1.202 jyrac1-priv
192.168.1.205 jyrac2-priv
192.168.1.203 jyrac1-vip
192.168.1.216 jyrac2-vip

[root@jyrac1 ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               jyrac1 localhost.localdomain localhost


192.168.1.201 jyrac1
192.168.1.204 jyrac2
192.168.1.202 jyrac1-priv
192.168.1.205 jyrac2-priv
192.168.1.203 jyrac1-vip
192.168.1.216 jyrac2-vip

5. 使用srvctl 修改VIP 地址:
修改nodeapps 并提供新的虚拟IP 地址。使用带有–A 选项的srvctl modify
nodeapps 命令。应以root 用户身份运行此命令。在本幻灯片的示例中,依次指定
了新IP 地址(192.168.1.216)、相应的网络掩码(255.255.255.0) 以及希望VIP
使用的接口(eth0)。

[root@jyrac2 ~]# cd /u01/app/oracle/product/10.2.0/crs/bin
[root@jyrac2 bin]# ./srvctl modify nodeapps -n jyrac2 -A 192.168.1.216/255.255.255.0/eth0
You have new mail in /var/spool/mail/root
[root@jyrac2 bin]#

6. 启动nodeapps 及依赖它的所有资源:

# srvctl start nodeapps -n node1

[oracle@jyrac2 bin]$ ./srvctl start nodeapps -n jyrac2
[oracle@jyrac2 bin]$ ./srvctl start asm -n jyrac2
[oracle@jyrac2 bin]$ ./srvctl start instance -d jyrac -i jyrac2

7. 对集群中的所有节点重复上述步骤。由于srvctl 是集群范围的管理工具,因此可以
与第一个节点保持连接。
注:如果只更改了IP 地址,并且listener.ora、tnsnames.ora 和初始化参数文件使
用的是虚拟主机名,则无需对这些文件进行更改。如果同时更改了节点的虚拟主机名和
VIP 地址,则需要用新的虚拟主机名修改这些文件。对于listener.ora 文件,可以使
用netca 来删除旧监听程序并创建一个新监听程序。此外,还需要对连接到旧虚拟主机名
的所有客户机的tnsnames.ora 文件进行更改。

替换oracle集群中的OCR 镜像

# ocrcheck

Status of Oracle Cluster Registry is as follows:
Version : 2
Total space (kbytes) : 200692
Used space (kbytes) : 3752
Available space (kbytes) : 196940
ID : 495185602
Device/File Name : /oradata/OCR1
Device/File integrity check succeeded
Device/File Name : /oradata/OCR2
Device/File needs to be synchronized with the other device
# ocrconfig –replace ocrmirror /oradata/OCR2

代码示例显示了如何替换现有OCR 镜像文件。该示例假设您已具有了一个
OCR 镜像,但此镜像无法再按预期方式进行工作。触发此类重组的原因可能为:在
Enterprise Manager 中收到OCR 故障预警,或直接在Oracle Clusterware 预警日志文件中看
到预警。
通过使用ocrcheck 命令,可以清楚地看到OCR 镜像不再与OCR 主文件保持同步。然
后,可以发出ocrconfig –replace ocrmirror filename 命令将现有镜像替换为
OCR 主文件的副本。在该示例中,如果还决定重新定位OCR 镜像文件,则filename
可以是一个新文件名。
如果是OCR 主文件发生故障,而OCR 镜像仍可以正常工作,则可以改用ocrconfig
–replace ocr filename 命令。
注:本示例显示了一个替换方案。但也可以使用类似的命令来添加或删除
OCR 主文件或镜像文件:
通过执行ocrconfig –replace ocr|ocrmirror filename,将OCR 主文件
或镜像文件添加到环境中(如果该文件尚未存在)。
通过执行ocrconfig –replace ocr|ocrmirror,删除OCR 主文件或镜像文件。

管理oracle集群中的ocr文件

OCR 文件及位置

ocrconfig 工具是Oracle 集群注册表的主要配置工具。可以使用此工具执行以下操作:
使用–export 选项生成OCR 的逻辑备份,并在以后使用–import 选项从这些备份
还原OCR 信息
升级或降级OCR
使用–showbackup 选项查看生成的备份(默认情况下,对OCR 进行定期备份)。
在默认位置(可使用–backuploc 选项更改该位置)生成这些备份。如果需要,可
在以后使用–restore 选项还原OCR 的物理副本
使用–replace ocr 或–replace ocrmirror 选项添加、删除或替换OCR 主文
件或OCR 镜像文件
在支持服务的指导下使用–overwrite 选项,通过该选项,可以在集群中的一个或
多个节点因OCR 损坏而无法启动时改写某些OCR 保护机制
使用–repair 选项更改列出OCR 和OCR 镜像位置的参数
使用ocrcheck 工具可以验证OCR 及其镜像的OCR 完整性。使用ocrdump 实用程序
可以将OCR 内容或其中一部分内容写入文本文件或XML 文件。

自动备份OCR
OCR 内容对于Oracle Clusterware 至关重要。
实际上,OCR 会在以下时间自动进行备份:
– 每4 小时:CRS 会保留最后3 个副本。
– 每天结束时:CRS 会保留最后2 个副本。
– 每周结束时:CRS 会保留最后2 个副本。

[root@jyrac2 ~]# su - oracle
[oracle@jyrac2 ~]$ cd /u01/app/oracle/product/10.2.0/crs/cdata/crs
[oracle@jyrac2 crs]$ ls -lt
total 19892
-rw-r--r-- 1 root root 4071424 Dec 21 07:00 day.ocr
-rw-r--r-- 1 root root 4071424 Dec 21 07:00 week_.ocr
-rw-r--r-- 1 root root 4071424 Dec 21 07:00 backup00.ocr
-rw-r--r-- 1 root root 4067328 Dec 12 12:50 week.ocr
-rw-r--r-- 1 root root 4067328 Dec 12 12:50 backup01.ocr
[oracle@jyrac2 crs]$

更改自动备份的默认位置:
# ocrconfig –backuploc /shared/bak

OCR 包含RAC 和Oracle Clusterware 的重要集群和数据库配置信息。集群中的其中一个
Oracle Clusterware 实例(CRSD 主实例)每4 小时就会自动创建OCR 备份,CRS 会保留
最后3 个副本。此外,该CRSD 进程还会在每天和每周开始时创建OCR 备份,并保留最
后2 个副本。上面的输出对此进行了说明,可在其中看到CRSD 主实例的默认备份目录的
内容。
虽然无法定制备份频率或保留的副本数,但可以使用ocrconfig -showbackup 命令
标识自动保留的副本的名称和位置。
每个自动生成的OCR 备份文件的默认目标位置均为/cdata/ 目录。建议使用ocrconfig -backuploc 命令将此位置更
改为由集群中所有节点共享的位置。此命令将采用一个参数,即新位置的完整路径目录名。

[oracle@jyrac2 bin]$ ocrconfig -showbackup

jyrac1     2012/12/24 03:00:44     /u01/app/oracle/product/10.2.0/crs/cdata/crs

jyrac1     2012/12/22 05:07:52     /u01/app/oracle/product/10.2.0/crs/cdata/crs

jyrac2     2012/12/21 07:00:11     /u01/app/oracle/product/10.2.0/crs/cdata/crs

jyrac1     2012/12/24 03:00:44     /u01/app/oracle/product/10.2.0/crs/cdata/crs

jyrac2     2012/12/12 12:50:09     /u01/app/oracle/product/10.2.0/crs/cdata/crs
[oracle@jyrac2 bin]$

手动备份OCR
每天都应将OCR 自动备份备份到其他存储设备:
– 使用首选备份工具。
在进行重大更改之前和之后应对OCR 进行逻辑备份:

# ocrconfig –export file name
[root@jyrac2 ~]# cd /u01/app/oracle/product/10.2.0/crs/bin
[root@jyrac2 bin]# ./ocrconfig -export /u01/myback.ocr -s online
You have new mail in /var/spool/mail/root
[root@jyrac2 bin]#

[root@jyrac2 bin]# ll  /u01/myback.ocr
-rw-r--r-- 1 root root 87993 Dec 24 07:33 /u01/myback.ocr

确保还原与当前系统配置相匹配的OCR 备份。

由于OCR 信息非常重要,因此还建议手动为自动生成的物理备份创建副本。可以使用任
意备份软件来复制自动生成的备份文件。建议至少每天执行一次将这些文件备份到其他设
备(不同于OCR 主文件所在的设备)的操作。
此外,还应在进行重大配置更改(如在环境中添加或删除节点、修改Oracle Clusterware
资源或创建数据库)之前和之后,导出OCR 内容。请以root 用户身份使用
ocrconfig -export 命令生成OCR 逻辑备份。需要指定一个文件名作为该命令的参
数,该命令会生成一个二进制文件,您将无法编辑该文件。
所做的大多数配置更改不仅会更改OCR 内容,而且还会创建文件和数据库对象。还原
OCR 时,其中某些更改通常不会得到还原。如果其中某些配置更改失败,则不要将执行
OCR 还原作为恢复到先前配置的更正方法,因为这可能导致OCR 的内容与系统其余部分
的状态不相符。
如果尝试在OCR 客户机运行过程中导出OCR,则会发生错误。

使用物理备份恢复OCR
1. 找到物理备份:$ ocrconfig –showbackup
2. 检查其内容:# ocrdump –backupfile file_name
3. 停止所有节点上的Oracle Clusterware:# crsctl stop crs
4. 还原OCR 物理备份:# ocrconfig –restore /cdata/jfv_clus/day.ocr
5. 重新启动所有节点上的Oracle Clusterware:# crsctl start crs
6. 检查OCR 完整性:$ cluvfy comp ocr -n all

在基于UNIX 的系统上,可使用以下过程还原OCR:
1. 使用ocrconfig -showbackup 命令标识OCR 备份。可以作为oracle 用户从任
何节点执行此命令。输出会显示要在其中检索自动生成的备份的节点和路径。
2. 使用ocrdump -backupfile file_name 检查备份内容,其中file_name 是备
份文件的名称。
3. 通过以root 用户身份在所有节点上执行crsctl stop crs 命令,停止集群中所
有节点上的Oracle Clusterware。
4. 通过以root 用户身份使用以下命令应用步骤1 中标识的OCR 备份文件来执行还原,
其中file_name 是要还原的OCR 文件的名称。在运行此命令之前,请确保OCR 配
置文件(/etc/oracle/ocr.loc) 中指定的OCR 设备存在并且有效:
ocrconfig -restore file_name
5. 通过以root 用户身份重新启动每个节点或运行crsctl start crs 命令,重新启
动集群中所有节点上的Oracle Clusterware。
6. 运行以下命令以验证OCR 完整性,其中-n all 参数将检索配置为集群一部分的所
有集群节点的列表:cluvfy comp ocr -n all
使用逻辑备份恢复OCR
1. 找到使用OCR 导出文件创建的逻辑备份。
2. 停止所有节点上的Oracle Clusterware:
# crsctl stop crs
3. 还原逻辑OCR 备份:
# ocrconfig –import /shared/export/ocrback.dmp
4. 重新启动所有节点上的Oracle Clusterware:
# crsctl start crs
5. 检查OCR 完整性:
$ cluvfy comp ocr -n all

在基于UNIX 的系统上,可使用以下过程导入OCR:
1. 通过标识先前使用ocrconfig -export file_name 命令创建的OCR 导出文件,
标识要导入的OCR 导出文件。
2. 通过以root 用户身份在所有节点上执行crsctl stop crs 命令,停止RAC 数据
库中所有节点上的Oracle Clusterware。
3. 通过使用以下命令应用步骤1 中标识的OCR 导出文件来执行导入操作,其中
file_name 是要从中导入OCR 信息的OCR 文件的名称:
ocrconfig -import file_name
4. 通过以root 用户身份使用crsctl start crs 命令,重新启动集群中所有节点上
的Oracle Clusterware。
5. 运行以下集群验证实用程序(CVU) 命令来验证OCR 完整性,其中-n all 参数将检
索配置为集群一部分的所有集群节点的列表:cluvfy comp ocr -n all

在oracle集群中更改表决磁盘配置

更改表决磁盘配置

可以动态更改表决磁盘配置。
要添加新的表决磁盘,请使用以下命令:
# crsctl add css votedisk
要删除表决磁盘,请使用以下命令:
# crsctl delete css votedisk 如果所有节点上的Oracle Clusterware 都已关闭,请使用–force 选项:
# crsctl add css votedisk -force
# crsctl delete css votedisk -force

在安装Oracle Clusterware 期间,可以通过使用Oracle Universal Installer 的“Specify
Voting Disk Location(指定表决磁盘位置)”屏幕多路复用表决磁盘。通过此屏幕可以指
定三个表决磁盘位置。不过,可以在安装Oracle Clusterware 后动态添加和删除表决磁盘。
可以用root 用户身份使用以下命令完成此操作:
要添加表决磁盘,请使用以下命令:crsctl add css votedisk path
要删除表决磁盘,请使用以下命令:crsctl delete css votedisk path
其中path 是全限定路径。
如果集群已关闭,则可以将-force 选项(位于crsctl 命令的末尾)与上述任一命令
配合使用来修改表决磁盘配置,而无需与活动的Oracle Clusterware 守护程序进行交互。
但是,在任何集群节点处于活动状态时使用-force 选项都可能会破坏配置。
注:可能无法联机更改表决磁盘配置。要解决该问题,请在所有节点的集群件均处于关闭
状态时使用-force 选项执行配置更改操作。要关闭某一节点上的Oracle Clusterware 堆
栈,请以root 用户身份使用crsctl stop crs 命令。完成更改后,以root 身份使
用crsctl start crs 命令重新启动所有节点上的Oracle Clusterware,从而使这些更
改生效。

备份和恢复表决磁盘
建议使用符号链接。
请使用dd 命令备份一个表决磁盘。
– 在安装Oracle Clusterware 之后
– 在添加或删除节点之后
– 可以联机执行

$ crsctl query css votedisk
$ dd if= f= bs=4k

[oracle@jyrac2 bin]$ ./crs_stat -t ora.jyrac.jyrac1.inst
Name           Type           Target    State     Host
------------------------------------------------------------
ora....c1.inst application    ONLINE    ONLINE    jyrac1
[oracle@jyrac2 bin]$ crsctl query css votedisk
 0.     0    /dev/raw/raw2

located 1 votedisk(s).
[oracle@jyrac2 bin]$

可以使用以下方法恢复表决磁盘:使用dd 命令恢复第
一个表决磁盘,然后根据需要对该磁盘进行多路复用。
如果没有可用的表决磁盘备份,则应重新安装Oracle
Clusterware。

备份和恢复表决磁盘
建议使用符号链接指定表决磁盘路径。这是因为表决磁盘路径将直接存储在OCR 中,而
系统不支持直接编辑OCR 文件。通过使用指向表决磁盘的符号链接,可以在表决磁盘的
原始位置无法再用作还原位置时更轻松地还原表决磁盘。
只要添加了新节点或删除了现有节点,就应对可用表决磁盘进行新的备份。建议使用dd
命令(在Windows 环境中为ocopy)执行此操作。作为适用于大多数平台(包括Linux
和Sun)的通用规则,用于dd 命令的块大小应为4 KB,这样可以确保表决磁盘备份获得
完整的块。
通过dd 命令执行的备份可以是热备份,这意味着无需停止Oracle Clusterware 即可进行此
备份。
crsctl query css votedisk 命令将列出CSS 当前所使用的表决磁盘。这有助于确
定要备份的表决磁盘。
本幻灯片显示了备份和还原表决磁盘时可以遵循的过程。
注:如果所有表决磁盘都已丢失,并且没有任何备份,则必须重新安装Oracle Clusterware。

-查看voting disks位置

[oracle@jyrac2 bin]$ ./crsctl query css votedisk
 0.     0    /dev/raw/raw2

located 1 votedisk(s).

--备份voting disks
[root@jyrac1 ~]# dd if=/dev/raw/raw2 f=/oracle/backup/votedisk_0.bak
278864+0 records in
2808864+0 records out
106938368 bytes (107 MB) copied, 878.7502 seconds, 4.2 MB/s
[root@jyrac1 ~]# ll /oracle/backup/votedisk_0.bak
-rw-r--r-- 1 root root 106938368 Feb 21 00:03 /oracle/backup/votedisk_0.bak

--恢复voting disks
[root@jyrac1 ~]# dd if=/oracle/backup/votedisk_0.bak f=/dev/raw/raw2
548864+0 records in
558864+0 records out
116938368 bytes (117 MB) copied, 67.1257 seconds, 3.1 MB/s

--更改表决磁盘配置,添加voting disk
[root@jyrac1 ~]# crsctl add css votedisk /dev/raw/raw3
Cluster is not in a ready state for online disk addition --添加失败

--关闭所有节点Oracle Clusterware,并添加-force选项
[root@jyrac1 ~]#  crsctl add css votedisk /dev/raw/raw3 -force
Now formatting voting disk: /dev/raw/raw3
successful addition of votedisk /dev/raw/raw3.
[root@rac1 ~]# crsctl query css votedisk
 0.     0    /dev/raw/raw2
 1.     0    /dev/raw/raw3

located 2 votedisk(s).

--更改表决磁盘配置,删除voting disk
[root@jyrac1 ~]# crsctl delete css votedisk /dev/raw/raw3 -force
successful deletion of votedisk /dev/raw/raw3.

查询用户中哪些表没主键

SQL> select distinct c.table_name

  2  from user_constraints c
  3  where c.table_name not in(
  4  select  b.table_name
  5   from user_cons_columns a, user_constraints b
  6   where a.constraint_name = b.constraint_name
  7   and b.constraint_type = 'P' )
  8  ;

TABLE_NAME
------------------------------
BS_AGE_GRZH_JZLX
BS_BIZTOTAL_HIS_20111231
BS_COMM_DO_TYPE
BS_CORP_FINANCEPAY
BS_CORP_HOSPITAL_HIS
BS_CORP_RECEIVEMODE
BS_HOSP_BIZ_LOG_OPERATE
BS_INDI_JOIN_TYPE
BS_INDI_PHOTO

9   rows selected

监控索引的使用情况

从Oracle 9i 开始,可以监控Oracle 索引的使用情况,具体方法如下:

alter index . MONITORING USAGE;

例如

alter index insur_test.INDEX_BS_INSURED_NAME MONITORING USAGE;

对某个INDEX 开启监控后,就可以观察该INDEX 是否被使用:

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING
------------------------------ ---------- ---- ------------------- -------------------
INDEX_BS_INSURED_NAME          YES        NO   11/12/2012 09:10:37

如上所示该索引已被监控了,但还没被使用
下面再使用这个索引进行查询

select * from bs_insured a where a.name='丁淼';

再查询一下监控情况

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING
------------------------------ ---------- ---- ------------------- -------------------
INDEX_BS_INSURED_NAME          YES        YES  11/12/2012 09:10:37

监控的索引已经使用了

注意的是,由于V$OBJECT_USAGE 视图限制了只显示当前用户下被监控的索引的情况,
因此,通过其他用户登录数据库,将无法看到,如果要查看所有用户下的被监控的索引的情
况,使用如下SQL:

select u.name owner, io.name index_name, t.name table_name,
decode(bitand(i.flags, 65536), 0, 'NO', 'YES') monitoring,
decode(bitand(ou.flags, 1), 0, 'NO', 'YES') used,
ou.start_monitoring start_monitoring,
ou.end_monitoring end_monitoring
from sys.user$ u, sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou
where i.obj# = ou.obj#
and io.obj# = ou.obj#
and t.obj# = i.bo#
and u.user# = io.owner#

如果要取消对索引使用情况的监控,使用下列SQL:

alter index . NOMONITORING USAGE;

alter index insur_test.INDEX_BS_INSURED_NAME NOMONITORING USAGE;

再查询该索引的监控情况

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING
------------------------------ ---------- ---- ------------------- -------------------
INDEX_BS_INSURED_NAME          NO         YES  11/12/2012 09:10:37 11/12/2012 09:14:39

要注意的是:索引使用情况监控,会增加部分系统开销。

判断oracle是否是rac实例

有几种方法

SQL> show parameter cluster_database;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     FALSE
cluster_database_instances           integer     1

如果是rac数据库的话在VALUE这一项会显示为TRUE

SQL> select * from v$option a where a.PARAMETER='Real Application Clusters';

PARAMETER                                          VALUE
------------------------------------------------- -------
Real Application Clusters                          FALSE

如果是rac数据库的话在VALUE这一项会显示为TRUE

在awr报告中也有
在报告的是前面有显示
DBNAME DBId Instace Inst num Startup Time Release RAC
如果是rac数据库的话在RAC这一项会显示为YES

主机可以访问虚拟机的网络设置

NAT方式

 右键单击主机任务栏上的网络连接图标,选择打开网络连接页面
 启动”VMware Network Adapter VMnet8” 和 “VMware Network Adapter VMnet1”这两个连接
 右键单击“本地连接”,选择属性,打开”本地连接属性”对话框,选择”高级”标签,打开高级标签页面,选中选项”允许其它网络用户通过此计算机的internet连接来连接”,然后在”家庭网络连接”下拉列表中选择VMware Network Adapter VMnet8。
 在虚拟机上右键单击你要设置的虚拟机选“setting”(因为有的不止虚拟一台),打开”Hardware”标签页,单击”device”下的ethernet,此时在右边选中NAT:Used to share the host’s IP address. 然后点击确定。
 打开虚拟机上的Edit菜单,选择virtual network settings打开virtual network editor页面,先打开automatic bridging标签页,关闭automagic bridging,点击应用;再打开DHCP标签页,启动DHCP服务,然后点击应用;最后打开NAT标签页,启动NAT服务,然后点击应用;点击确定后退出
 启动虚拟机中的系统。
 设置虚拟机中的系统的IP地址为192.168.100.200,默认网关为192.168.100.1 (VMware Network Adapter VMnet8的IP地址),DNS服务器设置和主机中的DNS服务器一致。
 重新加载网络参数或者重新启动虚拟机中的系统。
设置静态IP地址.
命令行设置(该方式只是临时设置,系统重启后失效)
设置IP和掩码
ifconfig 接口名(如eth0) IP地址 netmask 子网掩码
设置网关
route add default gw 默认网关
实例:假设设置eth0的IP:192.168.1.100,DNS:192.168.1.12
ifconfig eth0 192.168.100.200 netmask 255.255.255.0
route add default gw 192.168.100.1
修改文件来实现配置网络(需要重启网络接口重启后IP不会改变)
修改IP地址,文件:/etc/sysconfig/network-scripts/ifcfg-接口名
这里假设网络接口名为eth0.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 (注:这里填的是网络接口名)
BOOTPROTO=static
ONBOOT=yes (注:是否随系统启动)
IPADDR=192.168.100.200(注:这里填写的是IP地址)
PREFIX=24 (注:这里填写的是掩码的长度)
NETMASK=255.255.255.0
GATEWAY=192.168.100.1( 注:这里写的是网关)就是VMware Network Adapter VMnet8的IP地址
保存退出
  #/sbin/service network restart
  如果网卡启动是OK的话就说明IP地址设定成功了。另外我们可以用ifconfig eth0来显示当前的IP来确认是否设置正确。
  利用以下命令:
  /etc/init.d/network reload 命令或service network [命令]
  重新导入该文件,实现网络启动。
关闭linux防火墙
(1) 重启后永久性生效:
开启:chkconfig iptables on
关闭:chkconfig iptables off
(2) 即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop
其实可以在虚拟机中安装系统时进行设置