Oracle 11gR2 RAC SCAN ORA-12543: TNS:destination host unreachable

环境: Oracle 11gR2 RAC,  CentOS 5.6

通过SCAN访问RAC database, 不时出现ORA-12543: TNS:destination host unreachable,经查只有一个scan listener可以访问。
[oracle@rac7 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.56.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /192.168.56.10/192.168.56.10
然而
[root@rac7 ~]# vi /var/named/localdomain.zone

$TTL    86400
@       IN SOA  localhost root.localhost (
42              ; serial (d. adams)
3H              ; refresh
15M             ; retry
1W              ; expiry
1D )            ; minimum
IN NS           localhost
localhost       IN A            127.0.0.1
rac5            IN A    192.168.56.248
rac7            IN A    192.168.56.247
rac5-priv       IN A    192.168.56.5
rac7-priv       IN A    192.168.56.7
rac5-vip        IN A    192.168.56.105
rac7-vip        IN A    192.168.56.107
rac-scan        IN A    192.168.56.10
rac-scan        IN A    192.168.56.11
rac-scan        IN A    192.168.56.12
有三个scan ip地址

更改操作如下:

srvctl stop scan_listener
srvctl stop scan
切换到root用户
/u01/app/grid/bin/srvctl modify scan -n rac-scan
/u01/app/grid/bin/srvctl config scan 
/u01/app/grid/bin/srvctl modify scan_listener -u
/u01/app/grid/bin/srvctl config scan_listener
/u01/app/grid/bin/srvctl srvctl start scan_listener
再切换到oracle用户
srvctl status scan
srvctl status scan_listener

测试 sqlplus system/oracle@RAC-SCAN:1521/racdb.localdomain
然后多次查看select instance_name from v$instance;
可知instance_name会变化。

Oracle 无效的月份

环境:oracle 11g, Windows XP

在进行select to_date(‘2011-May-20’, ‘yyyy-mon-dd’) from dual查询时,系统提示not a valid month。由于系统是中文环境,因而在需要在命令环境中输入 alter session set  nls_date_language = ‘American’用于改变会话的日期格式。

Oracle exp只导出部分数据

环境: windows server 2008, Oracle 11g

从生产环境下导出一个用户下的所有表放置到另外一测试环境中,结果发现只能导出部分表,后来发现这些未能导出表为空表。原来oracle database 11g表中无数据不分配segment。只能为其分配空间, 执行如下:select ‘alter table ‘ || table_name || ‘ allocate extent (size 10k);’ from user_tables where row_nums = 0; 再将这些语句执行即可导出这些空表。

使用TPC-H生成大量数据

环境: REHL 5,  tpch

TPC-H 基准测试是由 TPC-D发展而来的。TPC-H 用 3NF 实现了一个数据仓库, 用于商业智能计算测试。可从http://www.tpc.org/tpch/中下载tpch_2_14_0.zip  ,放入Linux 环境目录下。解压缩unzip tpch_2_14_0.zip, 在生成的文件 cp makefile.suite makefile , 编辑vi makefile

################
CC      = gcc
# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
#                                  SQLSERVER, SYBASE, ORACLE
# Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS,
#                                  SGI, SUN, U2200, VMS, LINUX, WIN32
# Current values for WORKLOAD are:  TPCH
DATABASE= ORACLE
MACHINE = LINUX
WORKLOAD = TPCH

注:这里要设置CC, DATABASE, MACHINE, WORKLOAD这四个变量

然后编译(make)并生成可执行文件(dbgen) 。

生成1G的数据:

./dbgen -vf -s 1

查看生成的数据: ls -l *tbl

还有表定义文件是该目录下的dss.dll文件

Oracle ASM standalone Server无法初始化ASMLib driver

环境: VMWare, RHEL 5, Oracle database 11g , oracleasm (oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm, oracleasmlib-2.0.4-1.el5.i386.rpm, oracleasm-support-2.1.4-1.el5.i386.rpm)

安装好了系统后发现无法查看ASM硬盘空间,在启动时报错:Initializing the Oracle ASMLib driver: [FAILED],

最后发现是linux 的SELinux默认启动了,在命令行中输入 vi /etc/sysconfig/selinux,将SELINUX=enforcing改为SELINUX=disabled

Initializing_Oracle_ASMLib.JPG

Oracle 查询当前会话标识

环境:Oracle 11gR1, AIX 5.3
当启动某一会话的追踪功能,需要查询Oracle某一会话的 当前会话标识,有三种方法:
1.  select sid from v$mystat where rownum < 2;
2. select sys_context(‘USERENV’,’SID’) from dual;
有点奇怪的是使用sys_context(‘USERENV’, ‘SESSION_USERID’),sys_context(‘USERENV’, ‘CURRENT_USERID’)得到的结果不同于上面的,原因查询中。。。
3. select sid from v$session where audsid = sys_context(‘USERENV’, ‘SESSIONID’);

Oracle BI Answers Direct Database Request issue

环境: Oracle BIEE 10.1,   sql server 2000

问题描述: 在OBIEE Answers界面创建数据库直接请求,其中连接池设置为:  [stat].[connection pool]出现错误提示:error : Odbc driver returned an error (SQLExecDirectW).
error : State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 27022] Unresolved Connection Pool object: “[stat].[connection pool]”. (HY000)
error : SQL Issued: {call NQSGetQueryColumnInfo(‘EXECUTE PHYSICAL CONNECTION POOL “[stat].[connection pool]” select * from t_gate’)}

显示出无法解析连接池对象。

解决方法:将连接池设置为”stat”.”connection pool”,一定要加上双引号

Oracle dbconsole can’t start

环境: redhat 5.0 , oracle 10g

OC4J Configuration Issue: $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_host_sid not found

emctl start dbconsole fails with the following error:
OC4J Configuration Issue: $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_host_sid not found

There are three cases for this issue:

a) ORACLE_HOME variable needed to run emctl is set to the wrong database home. Set the right value and retry the process.
b) Network changes. If the hostname where Database Control was created in the first place is not resolvable anymore startup will fail with above error.
c) Database Control was not configured.

由于主机名变更,使得dbconsole无法启动。