Flying & Snaking
===========================================================
高频词汇
===========================================================
abandon  vt.放弃, 遗弃 
  n.放任, 狂热 
abide  vi.坚持, 遵守 
  vt.忍受, 容忍 
abolish  vt.废止, 废除(法律、制度、习俗等) 
absorb  vt.吸收, 吸引 
abuse  n.滥用, 虐待, 辱骂, 陋习, 弊端 
  v.滥用, 虐待, 辱骂  查看全文
2jliu 发表于:2008.05.28 21:01 ::分类: ( RDBMS ) ::阅读:(523次) :: 评论 (0)
===========================================================
高频词汇
===========================================================
abandon  vt.放弃, 遗弃 
  n.放任, 狂热 
abide  vi.坚持, 遵守 
  vt.忍受, 容忍 
abolish  vt.废止, 废除(法律、制度、习俗等) 
absorb  vt.吸收, 吸引 
abuse  n.滥用, 虐待, 辱骂, 陋习, 弊端 
  v.滥用, 虐待, 辱骂  查看全文
2jliu 发表于:2008.05.28 21:01 ::分类: ( RDBMS ) ::阅读:(488次) :: 评论 (0)
===========================================================
高频词汇
===========================================================
abandon  vt.放弃, 遗弃 
  n.放任, 狂热 
abide  vi.坚持, 遵守 
  vt.忍受, 容忍 
abolish  vt.废止, 废除(法律、制度、习俗等) 
absorb  vt.吸收, 吸引 
abuse  n.滥用, 虐待, 辱骂, 陋习, 弊端 
  v.滥用, 虐待, 辱骂  查看全文
2jliu 发表于:2008.05.28 21:01 ::分类: ( RDBMS ) ::阅读:(486次) :: 评论 (0)
===========================================================
高频词汇
===========================================================
abandon  vt.放弃, 遗弃 
  n.放任, 狂热 
abide  vi.坚持, 遵守 
  vt.忍受, 容忍 
abolish  vt.废止, 废除(法律、制度、习俗等) 
absorb  vt.吸收, 吸引 
abuse  n.滥用, 虐待, 辱骂, 陋习, 弊端 
  v.滥用, 虐待, 辱骂  查看全文
2jliu 发表于:2008.05.28 21:01 ::分类: ( RDBMS ) ::阅读:(487次) :: 评论 (0)
===========================================================
谈谈check list
===========================================================
谈谈check list 查看全文
2jliu 发表于:2007.10.31 10:52 ::分类: ( RDBMS ) ::阅读:(71次) :: 评论 (0)
===========================================================
发现win平台上的一个bug(ORA92060)
===========================================================

新的积累,经验啊


2jliu 发表于:2007.10.10 14:59 ::分类: ( RDBMS ) ::阅读:(60次) :: 评论 (0)
===========================================================
数据库链接使用一段时间就自动断开
===========================================================

有朋友问: 数据库链接使用一段时间就自动断开, 报错:“ERROR:
ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序”,得重启服务器之后能重新连上,why?

 查看全文
2jliu 发表于:2007.10.09 10:12 ::分类: ( RDBMS ) ::阅读:(132次) :: 评论 (0)
===========================================================
nvl decode
===========================================================

select nvl(12,11) from dual;

select nvl(null,11) from dual;

--if =null then value=11 or =12

select decode(2-1,1,30,40 ) from dual;

if a=b then 30 or value=40


2jliu 发表于:2007.09.24 17:20 ::分类: ( RDBMS ) ::阅读:(69次) :: 评论 (0)
===========================================================
col and set
===========================================================
as below 查看全文
2jliu 发表于:2007.09.24 11:14 ::分类: ( RDBMS ) ::阅读:(65次) :: 评论 (0)
===========================================================
突然只能sysdba连入的问题解决了
===========================================================
可以查看昨天的blog贴中的连接
2jliu 发表于:2007.09.06 13:42 ::分类: ( RDBMS ) ::阅读:(52次) :: 评论 (0)
===========================================================
受够了高低版本的db link --后续
===========================================================

忘了说:决定升级;

利用stdb->切换

顶着压力做了一回,以前测试这样做过,正式环境还是第一回

 查看全文
2jliu 发表于:2007.09.04 16:12 ::分类: ( RDBMS ) ::阅读:(83次) :: 评论 (0)
===========================================================
受够了高低版本的db link
===========================================================
好多n多,尤其有服务器是win平台的
2jliu 发表于:2007.09.04 16:11 ::分类: ( RDBMS ) ::阅读:(41次) :: 评论 (0)
===========================================================
bug:ORA-7445 on the server.
===========================================================

like below :

 查看全文

2jliu 发表于:2007.08.06 15:45 ::分类: ( RDBMS ) ::阅读:(81次) :: 评论 (0)
===========================================================
SQL*PLUS命令的使用大全
===========================================================
1. 执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

2. 对当前的输入进行编辑
SQL>edit

3. 重新运行上一次运行的sql语句
SQL>/

4. 将显示的内容输出到指定文件
SQL> SPOOL file_name
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

5. 关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。

6.显示一个表的结构
SQL> desc table_name

7. COL命令: 查看全文
2jliu 发表于:2007.07.23 21:19 ::分类: ( RDBMS ) ::阅读:(110次) :: 评论 (1)
===========================================================
虚拟索引的概念
===========================================================
如题:oracle没有使用它,但sql analyze具有这种功能
2jliu 发表于:2007.07.22 11:17 ::分类: ( RDBMS ) ::阅读:(77次) :: 评论 (0)
===========================================================
监控索引使用情况
===========================================================

V$object_usage

1:找出想要监控的列表

select table_name,index_name from user_indexes;

2:监控特定index

alter index indexname morning usage;

3:确定是否使用了索引

select * from v$object_usgae(field used)

4:alter index indexname nomorning usage

select * from v$object_usgae


2jliu 发表于:2007.07.22 11:10 ::分类: ( RDBMS ) ::阅读:(87次) :: 评论 (0)
===========================================================
yumen one day
===========================================================

老早的赶到公司;

查看到有系统补丁需要打;

打完db怎么也起不来


2jliu 发表于:2007.07.20 12:57 ::分类: ( RDBMS ) ::阅读:(96次) :: 评论 (0)
===========================================================
db link
===========================================================
db link from another internet address 查看全文
2jliu 发表于:2007.07.19 16:35 ::分类: ( RDBMS ) ::阅读:(245次) :: 评论 (0)
===========================================================
v$sysstat
===========================================================

v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。

 查看全文

2jliu 发表于:2007.06.03 17:19 ::分类: ( RDBMS ) ::阅读:(214次) :: 评论 (0)
===========================================================
主动维护还是按需维护
===========================================================
http://www.itpub.net/showthread.php?s=&threadid=779926
2jliu 发表于:2007.05.25 21:28 ::分类: ( RDBMS ) ::阅读:(126次) :: 评论 (0)
===========================================================
Oracle Basic Functions Tutorial.doc
===========================================================

请到下面的下载

http://www.itpub.net/showthread.php?s=&threadid=775516

 查看全文

2jliu 发表于:2007.05.19 13:59 ::分类: ( RDBMS ) ::阅读:(106次) :: 评论 (0)
===========================================================
Yesterday: A DBA's backup song
===========================================================
Yesterday: A DBA's backup song
(to be sung to the tune of Yesterday)

Yesterday,
All those backups seemed a waste of pay
Now my database has gone away
Oh I believe in yesterday.

Suddenly,
There's not half the files there used to be
And there's a deadline
hanging over me
The system crashed so suddenly.

I pushed something wrong
What it was, I could not say
Now my data's gone
and I long for yesterday-ay-ay-ay.

Yesterday,
The need for back-ups seemed so far away
Thought all my data was here to stay
Now I believe in yesterday.
2jliu 发表于:2007.05.18 09:20 ::分类: ( RDBMS ) ::阅读:(104次) :: 评论 (0)
===========================================================
1day玩转oracle10g xe and linux(内容共享) --续
===========================================================
应许多朋友的迫切需求,计划把曾经培训的电子课程以及实验内容--已经录制下来 共享在itpub的ftp服务器上,需要的把联系方法先留下;到时邮件通知,计划存放一个礼班
2jliu 发表于:2007.05.17 20:51 ::分类: ( RDBMS ) ::阅读:(401次) :: 评论 (1)
===========================================================
Oracle Database 11g Beta Program Underway
===========================================================
Customers and partners interested in participating in the Beta program should visit the Oracle Server Technologies Beta Program Web site.  查看全文
2jliu 发表于:2007.05.17 11:39 ::分类: ( RDBMS ) ::阅读:(124次) :: 评论 (0)
===========================================================
Database Link Problem in 9i
===========================================================
记录一下: 查看全文
2jliu 发表于:2007.05.17 11:20 ::分类: ( RDBMS ) ::阅读:(114次) :: 评论 (0)
===========================================================
备用数据库的研究总结(9i)
===========================================================

备份数据库的研究

主数据库和备份数据都要运行在归档模式下(archive log)。参见数据库备份研究一文进行设置。

主/备用数据库可建在同一台机上,推荐是在不同机上。
主节点数据库和备份节点数据库的运行机制:建立主数据库的备份文件,生成特有的备用数据库控制文件,利用主数据库的归档日志文件和备份文件实现重建主数据库在备用数据库上,备用数据库处于恢复模式时,备用数据库是没有激活,一旦主数据库down了,激活备用数据库让它成为主数据库,让系统能够运行下去。

一、备用数据库的环境建立
首先,建立备用数据库的各项目录,设定备用数据库的ORACLE_SID与主数据库不同;
ORACLE_DATA=备用数据库的数据文件存放位置
ORACLE_ADMIN=存放备用数据库的init$ORACLE_SID.ora 和 spfile$ORACLE_SID.ora启动参数文件。
根据需要和相关实际情况修改下列参数值
export ORACLE_SID=testdb
export ORACLE_BASE=/opt/oracle/oraInventory
export ORACLE_HOME=/opt/oracle/oraInventory
export ORACLE_DATA=/home/ldai/$ORACLE_SID
export ORACLE_ADMIN=$ORACLE_BASE/admin/$ORACLE_SID
[ 以下创建的目录为固定目录,不能更改名字 ]
mkdir $ORACLE_ADMIN
mkdir $ORACLE_ADMIN/pfile
mkdir $ORACLE_ADMIN/bdump
mkdir $ORACLE_ADMIN/cdump
mkdir $ORACLE_ADMIN/udump
mkdir $ORACLE_ADMIN/create
mkdir $ORACLE_DATA/
mkdir $ORACLE_DATA/archive
这样就建立起备用数据库的原型。
将主数据库的热备份和冷备份的数据文件放在备用数据库的数据文件目录下(ORACLE_DATA下)

二、备用数据库的参数文件建立
参数文件主要指:init$ORACLE_SID.ora 和 spfile$ORACLE_SID.ora文件,这些文件是启动备用数据库的参数文件,参数文件放在oracle目录下dbs目录中。备用数据库参数文件获得是在主数据库的参数文件基础上修改获得的。
例如:
LINUX>cp /opt/oracle/oraInventory/dbs/initoracle.ora
/opt/oracle/oraInventory/dbs/inittestdb.ora
LINUX>cp /opt/oracle/oraInventory/dbs/spfileoracle.ora
/opt/oracle/oraInventory/dbs/spfiletestdb.ora
将其中涉及到主数据库的ORACLE_SID地方全部改为备用数据库的ORACLE_SID。
还要在备用数据库两参数文件中必须要增加的参数如下:
[1] DB_FILE_NAME_CONVERT
db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐一指明对映关系。
格式:*.db_file_name_convert=主数据库数据文件目录,备用数据库数据文件目录
例如:
一对一映射设定
*.db_file_name_convert='/opt/oracle/oraInventory/oradata/oracle','/opt/oracle/oraInventory/oradata/standby'
多对多映射设定
*.db_file_name_convert='/opt/oracle/oraInventory/oradata/oracle','/home/ldai/testdb','/opt/oracle/oraInventory/oradata/standby','/home/ldai/testdb/standby'
[2] LOG_FILE_NAME_CONVERT
指明主数据库和备用数据库的log文件转换目录对映。
格式为:*. log_file_name_convert=主数据库log目录,备用数据库目录
例如:
*.log_file_name_convert='/opt/oracle/oraInventory/oradata/oracle','/home/ldai/te
stdb'
[3] STANDBY_ARCHIVE_DEST
备用数据库的归档日志归档目录。
格式:*.standby_archive_dest=备用数据库归档日志存放目录
例如:
*.standby_archive_dest='/home/ldai/testdb/archive'

[4]LOCK_NAME_SPACE
这是当主数据库和备用数据在同一台机上时要设该参数,设为备用数据库的SID
例如:
*.lock_name_space=testdb
[5]COMPATIBLE
主数据库和备用数据库的oracle版本必须一致,这个参数指明了oracle的版本号
例如:
*.compatible='9.2.0.0.0'
[6]CONTROL_FILES
指明备用数据库存放的控制文件路径和名称
例如:
*.control_files='/home/ldai/testdb/test.ctl'

三、备用数据库的归档模式建立
在备用数据库的两个参数文件中增加以下参数,建立起备用数据库为archive log模式.
[1]LOG_ARCHIVE_START=TRUE
[2 ]LOG_ARCHIVE_DEST_1
设定第一个归档目录,最多可设9个,location代表本地机上,service指明在另一台机上。
例如:
*.log_archive_dest_1='LOCATION=/home/ldai/testdb/archive'
[3 ]LOG_ARCHIVE_DEST_STATE_1=ENABLE
激活定义的第一个归档日志目录。

[4]主数据库的归档目录设定
*.log_archive_start=TRUE
*.log_archive_dest_1='LOCATION=/opt/oracle/oraInventory/oradata/archive MANDATOR
Y REOPEN=60'
*.log_archive_dest_state_1=ENABLE
指明归档到备用数据库中的归档日志目录
*.log_archive_dest_2='SERVICE=testdb OPTIONAL REOPEN=180'
*.log_archive_dest_state_2=ENABLE
归档日志格式
*.log_archive_format='ORACLE%T%S.ARC'

主数据库一般先归档到第一个归档目录(一般都指定为本机,防止归档失败),然后才归档到第二个归档目录。如果在这期间有什么错误发生,可查看$ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log文件。
例如:
/opt/oracle/oraInventory/admin/oracle/bdump/alert_oracle.log

[备注]主数据库和备用数据库中参数文件必须的指明相同的db_name=主数据库的ORACLE_SID
例如:
*.db_name='oracle'

四、备用数据库的控制文件建立
采用专用的sql命令创建备用数据库的控制文件
SQL> alter database create standby controlfile as ‘控制文件名和路径’
如果主/备不在同一台机上,创建后将控制文件cp到备用数据库所在的控制文件目录下。
本例中放在/home/ldai/testdb/中,与主数据库一样将控制文件同数据文件放在一个目录下。

五、数据库的LISTENER.ORA 和 TNSNAMES.ORA 文件的设定。
A、 同一台机上的LISTENER.ORA 和 TNSNAMES.ORA 的设定。

如果想通过图形化界面设定,在linux的图形界面中用run执行$ORACLE_HOME/bin/netca
然后进行图形化的设定。
这个例子中,备用数据库SID=testdb,主数据库的SID=oracle
[A]Linstener设定
设定listener时,要让监听服务stop.
Linux>lsnrctl stop
手工也可进行修改,在listener.ora 的DESCRIPTION中增加下面的监听条目,采用IPC协议。Key为k+$ORACLE_SID保证是唯一的值。因为是在同一台机上所以采用IPC协议进行本机内部通讯。
在地址监听列表中加多
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = 备用数据库的k+$ORACLE_SID))
)
有且只有让一个IPC协议条目监听(目前实验如此)
然后重新启动监听服务
linux>lsnrctl start
例子:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = ktestdb))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = studysvr)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/oraInventory)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = oracle)
(ORACLE_HOME = /opt/oracle/oraInventory)
(SID_NAME = oracle)
)
)
[B]tnsnames设定
建立一个与备用数据库SID相同名称的条目,注意在一台机上service_name指的是主数据库的SID,如果设错,主数据库不能通过该服务别名访问备用数据库。管理恢复模式不能正常运作。协议是tcp协议。
例如:
TESTDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = studysvr)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)
ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = studysvr)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle)
)
)

B、 主/备不同机上的LISTENER.ORA 和 TNSNAMES.ORA 的设定。

这个例子中,备用数据库上原本已有数据库且其SID=orcl,我们建立的备用数据库其SID=sun,主数据库的SID=oracle;
主数据库机的ip地址为:192.168.0.6 主机名为:studysvr
备用数据库机的ip地址为:192.168.0.39 主机名为:sun
主数据库(Primary database)
Listerner.ora
listener.ora必须要有监听主数据库的服务条目,其SID_NAME为主数据库的ORACLE_SID。
这样监听器就开始监听指定的ORACLE_SID服务了(即oracle的实例),如果用户想要监听多个服务,只需在SID_LIST_LISTENER中的SID_LIST(监听列表)下再增加一个要监听的ORACLE_SID。例子可祥见备用数据库的监听器设定。
例如:(primary database’s listener.ora :hostname=studysvr Ipad=192.168.0.6)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.6)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/oraInventory)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = oracle)
(ORACLE_HOME = /opt/oracle/oraInventory)
(SID_NAME = oracle)
)
)

Tnsnames.ora
主数据库上要设定访问备用数据库的网络服务别名,注意这时的备用数据库的SID是指备用数据库上,要启动作为备用数据库的ORACLE_SID。
例子:
#访问备用数据库的Net Service Name
SUN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sun)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sun) //备用数据库的ORACLE_SID
)
)

#访问主数据库的Net Service Name
ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.6)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle) //主数据库上的ORACLE_SID
)
)

备用数据库(standby database)
Listener.ora
备用数据库的监听器要监听备用数据库的实例(即ORACLE_SID)。需要在备用数据库的Listener.ora上加多对备用服务器实例的监听。在SID_LIST_LISTENER的SID_LIST增加新ORACLE_SID的监听服务。监听地址列表(address_list)为备用数据库的ip地址或者主机名,该值应尽量同tnsnames.ora中的host值保持一致,减少系统出错可能。
例子:(standby database’s listener.ora)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.39)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracleinstall)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = sun)
(ORACLE_HOME = /oracleinstall)
(SID_NAME = sun) //开启sun实例监听(启动的备用数据库实例)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /oracleinstall)
(SID_NAME = orcl) //开启orcl实例监听(oracle安装时安装的数据库实例)
)
)

Tnsnames.ora
备用数据库上建立两个网络服务别名,一个用于访问主数据库,另一个访问备用数据库。SID_NAME对应于不同的数据库sid。
例子:
#访问主数据库的Net Service Name
ORACLE.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.6)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORACLE)
)
)

#访问备用数据库机上的orcl数据库的Net Service Name
ORCL.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
#访问备用数据库的Net Service Name
SUN.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.39)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sun)
)
)

六、备用数据库的口令文件的生成
便于启动备用数据库时的 sys连接用,远程管理时也有用。
Oracle用户登陆
Linux>orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=$ORACLE_SID entries=4
例如:(oracle用户执行)
linux>orapwd file=/opt/oracle/oraInventory/dbs/orapwtestdb password=testdb entries=4

七、备用数据库的启动
LINUX>export ORACLE_SID=备用数据库的SID
这个ORACLE_SID就是备用数据库的SID,必需同主数据库的Tnsnames.ora和备用数据库的Listener.ora中对应于备用数据库的SID_NAME相同。否则主数据库的归档日志不能传到备用数据库机上。
例如:
Linux>export ORACLE_SID=testdb
LINUX>sqlplus /nolog
SQL>connect sys/testdb as sysdba
SQL>startup nomount
SQL>alter database mount standby database;
这样就进入了手工恢复模式。如果想要进入管理恢复模式继续执行下面的命令
SQL>alter database recover managed standby database;

手工恢复模式
在手工恢复模式下,恢复数据库用recover standby database专用SQL命令。回车直到所有归档日志完毕。(这时的主数据库归档日志是手工干预传递到备用数据库的归档日志目录下)

管理恢复模式
系统自动将主数据库上的归档日志归档到备用数据库上的归档目录,备用数据库自动应用这些归档日志文件,使主数据库同备用数据库的数据保持一致。在启动备用数据库之前的所有归档日志需要人工干预,将它们传递到备用数据库中的归档目录,当采用ftp传递日志文件时,一定要使用度二进制模式。管理恢复模式的取消,另开一个窗口,执行:
SQL>recover managed standby database cancel;
即可取消掉管理恢复模式。

八、备用数据库的归档日志传送处理
手工恢复模式为手工干预传送归档日志(即用cp命令进行传送),注意传送完毕后,用chmod a+w给传递到备用数据库归档日志目录下的归档日志赋写权限。如不然,则手工恢复不成功。
管理恢复模式则是系统根据前面参数文件,listener.ora和tnsnames.ora设定好的参数,备用数据库自动获取归档日志文件进行自动恢复。

九、备用数据库的激活
备用数据库一旦激活成为主数据库,就不能在成为备用数据库,需要重新建立备用数据库。
激活备用数据库,首先要停止备用数据库的恢复进程。
SQL>recover managed standby database cancel;
激活备用数据库
SQL>alter database activate standby database;
SQL>shutdown;
SQL>connect sys/sys_password as sysdba; //根据需要进行修改sys_password
SQL>startup;

十、主数据库和备用数据库之间的网络调试
要使远程备用数据库实施成功,还需要测试网络环境是否正常,主数据库/备用数据库上的tnsnames.ora和listener.ora是否配置正确。
A、主数据库所在的机器和备用数据库所在的机器要互相能够ping得通,保证网络正常。
B、启动主数据库,在备用数据库上执行下面的命令,检测主数据库上的Listener和备用数据库上的tnsnames是否配置正确。
Linux>sqlplus /nolog
SQL>connect sys/primary_sys_password@primary_net_service_name as sysdba;

SQL>connect 主数据库上的用户/主数据库上用户口令@主数据库别名;
然后
SQL>select sysdate from dual;
如果结果正常,则证明主数据库上的Listener配置正确。备用数据库的tnsname中的主数据库服务条目配置正确。
例子:
SQL>connect sys/oracle@oracle as sysdba

SQL>connect system/oracle@oracle;

C、备用数据中关于本身的Tnsnames服务条目是否配置正确。
备用数据库机上:
Linux>sqlplus /nolog
SQL>connect sys/sys/备用数据库的sys_password@备用数据库的别名 as sysdba;
(注意备用数据库的sys口令同7步骤生成的口令文件是对应的)
能连上就说明配置正确。
例子:
SQL>connect sys/sun@sun as sysdba;

D、按照步骤8启动备用数据库,启动成手工恢复模式,然后将备用数据打开成只读模式,然后从主数据库访问备用数据库,检测备用数据库的listener和主数据库的tnsnames是否配置正常。
在主数据库机上:
Linux>sqlplus /nolog
SQL>connect sys/备用数据库的sys_password@备用数据库的别名 as sysdba;
(注意备用数据库的sys口令同7步骤生成的口令文件是对应的)
能连上就说明配置正确。
例子:
SQL>connect sys/sun@sun as sysdba;

E、以上涉及到的linux操作都是以oracle用户执行。

F、如果不知道主机名可用Linux>hostname获知。

G、如果机器不能解析ip地址或主机名,编辑(root用户下)/etc/hosts和/etc/resolv.conf文件;

http://www.itpub.net/131401.html


2jliu 发表于:2007.05.11 09:25 ::分类: ( RDBMS ) ::阅读:(94次) :: 评论 (0)
===========================================================
关于使用SHOW_SPACE()
===========================================================

http://www.itpub.net/239697.html

只适用于非ASSM:

create or replace
procedure show_space
( p_segname in varchar2,
p_owner in varchar2 default user,
p_type in varchar2 default 'TABLE' )
as
l_free_blks number;
l_total_blocks number;
l_total_bytes number;
l_unused_blocks number;
l_unused_bytes number;
l_LastUsedExtFileId number;
l_LastUsedExtBlockId number;
l_LAST_USED_BLOCK number;
procedure p( p_label in varchar2, p_num in number )
is
begin
dbms_output.put_line( rpad(p_label,40,'.') ||
p_num );
end;
begin
dbms_space.free_blocks
( segment_owner => p_owner,
segment_name => p_segname,
segment_type => p_type,
freelist_group_id => 0,
free_blks => l_free_blks );
dbms_space.unused_space
( segment_owner => p_owner,
segment_name => p_segname,
segment_type => p_type,
total_blocks => l_total_blocks,
total_bytes => l_total_bytes,
unused_blocks => l_unused_blocks,
unused_bytes => l_unused_bytes,
LAST_USED_EXTENT_FILE_ID => l_LastUsedExtFileId,
LAST_USED_EXTENT_BLOCK_ID => l_LastUsedExtBlockId,
LAST_USED_BLOCK => l_LAST_USED_BLOCK );

p( 'Free Blocks', l_free_blks );
p( 'Total Blocks', l_total_blocks );
p( 'Total Bytes', l_total_bytes );
p( 'Unused Blocks', l_unused_blocks );
p( 'Unused Bytes', l_unused_bytes );
p( 'Last Used Ext FileId', l_LastUsedExtFileId );
p( 'Last Used Ext BlockId', l_LastUsedExtBlockId );
p( 'Last Used Block', l_LAST_USED_BLOCK );
end;
/

例:
SQL> create table donny(id char(1024));

表已创建。

SQL> set serveroutput on

SQL> exec show_space('DONNY')
Free Blocks.............................0
Total Blocks............................5
Total Bytes.............................40960
Unused Blocks...........................4
Unused Bytes............................32768
Last Used Ext FileId....................8
Last Used Ext BlockId...................27
Last Used Block.........................1

PL/SQL 过程已成功完成。

SQL>

 查看全文
2jliu 发表于:2007.05.08 17:36 ::分类: ( RDBMS ) ::阅读:(148次) :: 评论 (0)
===========================================================
搬迁警示
===========================================================

搬迁网站服务器:DB+web

db做了备份,能够实现灾难恢复;

相应的配置文件也做了copy;

web却没有做,搬来后网站中很多功能不能使用。。果然发现没有备份的无奈


2jliu 发表于:2007.04.26 09:39 ::分类: ( RDBMS ) ::阅读:(113次) :: 评论 (0)
===========================================================
Again rda
===========================================================

./rda.sh

RDA.RDA_oraebs01RDA__start.htm


2jliu 发表于:2007.04.24 17:19 ::分类: ( RDBMS ) ::阅读:(104次) :: 评论 (0)
===========================================================
今天忙疯了
===========================================================

业务发展需求, 在内网使用内/外网/dns区建立db;

利用standby db;upgrade 9206(win),目录还不同;

烦琐的很.


2jliu 发表于:2007.04.11 15:23 ::分类: ( RDBMS ) ::阅读:(122次) :: 评论 (0)
===========================================================
用oracle发送邮件
===========================================================

CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2,
P_SUB VARCHAR2,
P_SENDOR VARCHAR2,
P_RECEIVER VARCHAR2,
P_SERVER VARCHAR2,
P_PORT NUMBER DEFAULT 25,
P_NEED_SMTP INT DEFAULT 0,
P_USER VARCHAR2 DEFAULT NULL,
P_PASS VARCHAR2 DEFAULT NULL,
P_FILENAME VARCHAR2 DEFAULT NULL,
P_ENCODE VARCHAR2 DEFAULT 'bit 7')
AUTHID CURRENT_USER IS
/*
作用:用oracle发送邮件
主要功能:1、支持多收件人。
2、支持中文
3、支持抄送人
4、支持大于32K的附件
5、支持多行正文
6、支持多附件
7、支持文本附件和二进制附件
8、支持HTML格式
8、支持
作者:suk
参数说明:
p_txt :邮件正文
p_sub: 邮件标题
p_SendorAddress : 发送人邮件地址
p_ReceiverAddress : 接收地址,可以同时发送到多个地址上,地址之间用","或者";"隔开
p_EmailServer : 邮件服务器地址,可以是域名或者IP
p_Port :邮件服务器端口
p_need_smtp:是否需要smtp认证,0表示不需要,1表示需要
p_user:smtp验证需要的用户名
p_pass:smtp验证需要的密码
p_filename:附件名称,必须包含完整的路径,如"d:tempa.txt"。
可以有多个附件,附件名称只见用逗号或者分号分隔
p_encode:附件编码转换格式,其中 p_encode='bit 7' 表示文本类型附件
p_encode='base64' 表示二进制类型附件
注意:
1、对于文本类型的附件,不能用base64的方式发送,否则出错
2、对于多个附件只能用同一种格式发送
*/

L_CRLF VARCHAR2(2) := UTL_TCP.CRLF;
L_SENDORADDRESS VARCHAR2(4000);
L_SPLITE VARCHAR2(10) := '++';
BOUNDARY CONSTANT VARCHAR2(256) := '-----BYSUK';
FIRST_BOUNDARY CONSTANT VARCHAR2(256) := '--' || BOUNDARY || L_CRLF;
LAST_BOUNDARY CONSTANT VARCHAR2(256) := '--' || BOUNDARY || '--' ||
L_CRLF;
MULTIPART_MIME_TYPE CONSTANT VARCHAR2(256) := 'multipart/mixed; boundary="' ||
BOUNDARY || '"';
/* 以下部分是发送大二进制附件时用到的变量 */
L_FIL BFILE;
L_FILE_LEN NUMBER;
L_MODULO NUMBER;
L_PIECES NUMBER;
L_FILE_HANDLE UTL_FILE.FILE_TYPE;
L_AMT BINARY_INTEGER := 672 * 3; /* ensures proper format; 2016 */
L_FILEPOS PLS_INTEGER := 1; /* pointer for the file */
L_CHUNKS NUMBER;
L_BUF RAW(2100);
L_DATA RAW(2100);
L_MAX_LINE_WIDTH NUMBER := 54;
L_DIRECTORY_BASE_NAME VARCHAR2(100) := 'DIR_FOR_SEND_MAIL';
L_LINE VARCHAR2(1000);
L_MESG VARCHAR2(32767);
/* 以上部分是发送大二进制附件时用到的变量 */

TYPE ADDRESS_LIST IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
MY_ADDRESS_LIST ADDRESS_LIST;
TYPE ACCT_LIST IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
MY_ACCT_LIST ACCT_LIST;
-------------------------------------返回附件源文件所在目录或者名称--------------------------------------
FUNCTION GET_FILE(P_FILE VARCHAR2,
P_GET INT) RETURN VARCHAR2 IS
--p_get=1 表示返回目录
--p_get=2 表示返回文件名
L_FILE VARCHAR2(1000);
BEGIN
IF INSTR(P_FILE, '') > 0 THEN
--windows
IF P_GET = 1 THEN
L_FILE := SUBSTR(P_FILE, 1, INSTR(P_FILE, '', -1) - 1);
ELSIF P_GET = 2 THEN
L_FILE := SUBSTR(P_FILE, - (LENGTH(P_FILE) - INSTR(P_FILE, '', -1)));
END IF;
ELSIF INSTR(P_FILE, '/') > 0 THEN
--linux/unix
IF P_GET = 1 THEN
L_FILE := SUBSTR(P_FILE, 1, INSTR(P_FILE, '/', -1) - 1);
ELSIF P_GET = 2 THEN
L_FILE := SUBSTR(P_FILE, - (LENGTH(P_FILE) - INSTR(P_FILE, '/', -1)));
END IF;
END IF;
RETURN L_FILE;
END;
---------------------------------------------删除directory------------------------------------
PROCEDURE DROP_DIRECTORY(P_DIRECTORY_NAME VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'drop directory ' || P_DIRECTORY_NAME;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
--------------------------------------------------创建directory-----------------------------------------
PROCEDURE CREATE_DIRECTORY(P_DIRECTORY_NAME VARCHAR2,
P_DIR VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'create directory ' || P_DIRECTORY_NAME || ' as ''' ||
P_DIR || '''';
EXECUTE IMMEDIATE 'grant read,write on directory ' || P_DIRECTORY_NAME ||
' to public';
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
--------------------------------------------分割邮件地址或者附件地址-----------------------------------
PROCEDURE P_SPLITE_STR(P_STR VARCHAR2,
P_SPLITE_FLAG INT DEFAULT 1) IS
L_ADDR VARCHAR2(254) := '';
L_LEN INT;
L_STR VARCHAR2(4000);
J INT := 0; --表示邮件地址或者附件的个数
BEGIN
/*处理接收邮件地址列表,包括去空格、将;转换为,等*/
L_STR := TRIM(RTRIM(REPLACE(REPLACE(P_STR, ';', ','), ' ', ''), ','));
L_LEN := LENGTH(L_STR);
FOR I IN 1 .. L_LEN LOOP
IF SUBSTR(L_STR, I, 1) <> ',' THEN
L_ADDR := L_ADDR || SUBSTR(L_STR, I, 1);
ELSE
J := J + 1;
IF P_SPLITE_FLAG = 1 THEN --表示处理邮件地址
--前后需要加上'<>',否则很多邮箱将不能发送邮件
L_ADDR := '<' || L_ADDR || '>';
--调用邮件发送过程
MY_ADDRESS_LIST(J) := L_ADDR;
ELSIF P_SPLITE_FLAG = 2 THEN --表示处理附件名称
MY_ACCT_LIST(J) := L_ADDR;
END IF;
L_ADDR := '';
END IF;
IF I = L_LEN THEN
J := J + 1;
IF P_SPLITE_FLAG = 1 THEN
--调用邮件发送过程
L_ADDR := '<' || L_ADDR || '>';
MY_ADDRESS_LIST(J) := L_ADDR;
ELSIF P_SPLITE_FLAG = 2 THEN
MY_ACCT_LIST(J) := L_ADDR;
END IF;
END IF;
END LOOP;
END;
------------------------------------------------写邮件头和邮件内容------------------------------------------
PROCEDURE WRITE_DATA(P_CONN IN OUT NOCOPY UTL_SMTP.CONNECTION,
P_NAME IN VARCHAR2,
P_VALUE IN VARCHAR2,
P_SPLITE VARCHAR2 DEFAULT ':',
P_CRLF VARCHAR2 DEFAULT L_CRLF) IS
BEGIN
/* utl_raw.cast_to_raw 对解决中文乱码问题很重要*/
UTL_SMTP.WRITE_RAW_DATA(P_CONN, UTL_RAW.CAST_TO_RAW(CONVERT(P_NAME ||
P_SPLITE ||
P_VALUE ||
P_CRLF, 'ZHS16GBK')));
END;
----------------------------------------写MIME邮件尾部-----------------------------------------------------

PROCEDURE END_BOUNDARY(CONN IN OUT NOCOPY UTL_SMTP.CONNECTION,
LAST IN BOOLEAN DEFAULT FALSE) IS
BEGIN
UTL_SMTP.WRITE_DATA(CONN, UTL_TCP.CRLF);
IF (LAST) THEN
UTL_SMTP.WRITE_DATA(CONN, LAST_BOUNDARY);
END IF;
END;

----------------------------------------------发送附件----------------------------------------------------

PROCEDURE ATTACHMENT(CONN IN OUT NOCOPY UTL_SMTP.CONNECTION,
MIME_TYPE IN VARCHAR2 DEFAULT 'text/plain',
INLINE IN BOOLEAN DEFAULT TRUE,
FILENAME IN VARCHAR2 DEFAULT 't.txt',
TRANSFER_ENC IN VARCHAR2 DEFAULT '7 bit',
DT_NAME IN VARCHAR2 DEFAULT '0') IS

L_FILENAME VARCHAR2(1000);
BEGIN
--写附件头
UTL_SMTP.WRITE_DATA(CONN, FIRST_BOUNDARY);
--设置附件格式
WRITE_DATA(CONN, 'Content-Type', MIME_TYPE);
--如果文件名称非空,表示有附件
DROP_DIRECTORY(DT_NAME);
--创建directory
CREATE_DIRECTORY(DT_NAME, GET_FILE(FILENAME, 1));
--得到附件文件名称
L_FILENAME := GET_FILE(FILENAME, 2);
IF (INLINE) THEN
WRITE_DATA(CONN, 'Content-Disposition', 'inline; filename="' ||
L_FILENAME || '"');
ELSE
WRITE_DATA(CONN, 'Content-Disposition', 'attachment; filename="' ||
L_FILENAME || '"');
END IF;

--设置附件的转换格式
IF (TRANSFER_ENC IS NOT NULL) THEN
WRITE_DATA(CONN, 'Content-Transfer-Encoding', TRANSFER_ENC);
END IF;

UTL_SMTP.WRITE_DATA(CONN, UTL_TCP.CRLF);

--begin 贴附件内容
IF TRANSFER_ENC = 'bit 7' THEN
--如果是文本类型的附件
BEGIN
L_FILE_HANDLE := UTL_FILE.FOPEN(DT_NAME, L_FILENAME, 'r'); --打开文件
--把附件分成多份,这样可以发送超过32K的附件
LOOP
UTL_FILE.GET_LINE(L_FILE_HANDLE, L_LINE);
L_MESG := L_LINE || L_CRLF;
WRITE_DATA(CONN, '', L_MESG, '', '');
END LOOP;
UTL_FILE.FCLOSE(L_FILE_HANDLE);
END_BOUNDARY(CONN);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(L_FILE_HANDLE);
END_BOUNDARY(CONN);
NULL;
END; --结束文本类型附件的处理

ELSIF TRANSFER_ENC = 'base64' THEN
--如果是二进制类型的附件
BEGIN
--把附件分成多份,这样可以发送超过32K的附件
L_FILEPOS := 1;--重置offset,在发送多个附件时,必须重置
L_FIL := BFILENAME(DT_NAME, L_FILENAME);
L_FILE_LEN := DBMS_LOB.GETLENGTH(L_FIL);
L_MODULO := MOD(L_FILE_LEN, L_AMT);
L_PIECES := TRUNC(L_FILE_LEN / L_AMT);
IF (L_MODULO <> 0) THEN
L_PIECES := L_PIECES + 1;
END IF;
DBMS_LOB.FILEOPEN(L_FIL, DBMS_LOB.FILE_READONLY);
DBMS_LOB.READ(L_FIL, L_AMT, L_FILEPOS, L_BUF);
L_DATA := NULL;
FOR I IN 1 .. L_PIECES LOOP
L_FILEPOS := I * L_AMT + 1;
L_FILE_LEN := L_FILE_LEN - L_AMT;
L_DATA := UTL_RAW.CONCAT(L_DATA, L_BUF);
L_CHUNKS := TRUNC(UTL_RAW.LENGTH(L_DATA) / L_MAX_LINE_WIDTH);
IF (I <> L_PIECES) THEN
L_CHUNKS := L_CHUNKS - 1;
END IF;
UTL_SMTP.WRITE_RAW_DATA(CONN, UTL_ENCODE.BASE64_ENCODE(L_DATA));
L_DATA := NULL;
IF (L_FILE_LEN < L_AMT AND L_FILE_LEN > 0) THEN
L_AMT := L_FILE_LEN;
END IF;
DBMS_LOB.READ(L_FIL, L_AMT, L_FILEPOS, L_BUF);
END LOOP;
DBMS_LOB.FILECLOSE(L_FIL);
END_BOUNDARY(CONN);
EXCEPTION
WHEN OTHERS THEN
DBMS_LOB.FILECLOSE(L_FIL);
END_BOUNDARY(CONN);
RAISE;
END; --结束处理二进制附件

END IF; --结束处理附件内容
DROP_DIRECTORY(DT_NAME);
END; --结束过程ATTACHMENT

---------------------------------------------真正发送邮件的过程--------------------------------------------
PROCEDURE P_EMAIL(P_SENDORADDRESS2 VARCHAR2, --发送地址
P_RECEIVERADDRESS2 VARCHAR2) --接受地址
IS
L_CONN UTL_SMTP.CONNECTION; --定义连接
BEGIN
/*初始化邮件服务器信息,连接邮件服务器*/
L_CONN := UTL_SMTP.OPEN_CONNECTION(P_SERVER, P_PORT);
UTL_SMTP.HELO(L_CONN, P_SERVER);
/* smtp服务器登录校验 */
IF P_NEED_SMTP = 1 THEN
UTL_SMTP.COMMAND(L_CONN, 'AUTH LOGIN', '');
UTL_SMTP.COMMAND(L_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_USER))));
UTL_SMTP.COMMAND(L_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_PASS))));
END IF;

/*设置发送地址和接收地址*/
UTL_SMTP.MAIL(L_CONN, P_SENDORADDRESS2);
UTL_SMTP.RCPT(L_CONN, P_RECEIVERADDRESS2);

/*设置邮件头*/
UTL_SMTP.OPEN_DATA(L_CONN);

WRITE_DATA(L_CONN, 'Date', TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
/*设置发送人*/
WRITE_DATA(L_CONN, 'From', P_SENDOR);
/*设置接收人*/
WRITE_DATA(L_CONN, 'To', P_RECEIVER);
/*设置邮件主题*/
WRITE_DATA(L_CONN, 'Subject', P_SUB);

WRITE_DATA(L_CONN, 'Content-Type', MULTIPART_MIME_TYPE);
UTL_SMTP.WRITE_DATA(L_CONN, UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(L_CONN, FIRST_BOUNDARY);
WRITE_DATA(L_CONN, 'Content-Type', 'text/plain;charset=gb2312');
--单独空一行,否则,正文内容不显示
UTL_SMTP.WRITE_DATA(L_CONN, UTL_TCP.CRLF);
/* 设置邮件正文
把分隔符还原成chr(10)。这主要是为了shell中调用该过程,如果有多行,则先把多行的内容合并成一行,并用 l_splite分隔
然后用 l_crlf替换chr(10)。这一步是必须的,否则将不能发送邮件正文有多行的邮件
*/
WRITE_DATA(L_CONN, '', REPLACE(REPLACE(P_TXT, L_SPLITE, CHR(10)), CHR(10), L_CRLF), '', '');
END_BOUNDARY(L_CONN);

--如果文件名称不为空,则发送附件
IF (P_FILENAME IS NOT NULL) THEN
--根据逗号或者分号拆分附件地址
P_SPLITE_STR(P_FILENAME, 2);
--循环发送附件(在同一个邮件中)
FOR K IN 1 .. MY_ACCT_LIST.COUNT LOOP
ATTACHMENT(CONN => L_CONN, FILENAME => MY_ACCT_LIST(K), TRANSFER_ENC => P_ENCODE, DT_NAME => L_DIRECTORY_BASE_NAME ||
TO_CHAR(K));
END LOOP;
END IF;

/*关闭数据写入*/
UTL_SMTP.CLOSE_DATA(L_CONN);
/*关闭连接*/
UTL_SMTP.QUIT(L_CONN);

/*异常处理*/
EXCEPTION
WHEN OTHERS THEN
NULL;
RAISE;

END;

---------------------------------------------------主过程-----------------------------------------------------

BEGIN
L_SENDORADDRESS := '<' || P_SENDOR || '>';
P_SPLITE_STR(P_RECEIVER);--处理邮件地址
FOR K IN 1 .. MY_ADDRESS_LIST.COUNT LOOP
P_EMAIL(L_SENDORADDRESS, MY_ADDRESS_LIST(K));
END LOOP;
/*处理邮件地址,根据逗号分割邮件*/

EXCEPTION
WHEN OTHERS THEN
RAISE;
END;

 查看全文
2jliu 发表于:2007.04.05 10:40 ::分类: ( RDBMS ) ::阅读:(178次) :: 评论 (0)
===========================================================
maximum number of processes () exceeded and ORA-01034
===========================================================

现象:maximum number of processes () exceeded
LGWR: Detected ARCH process failure
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=34
Thu Apr 05 07:34:32 2007
ARC0: Archival started
Thu Apr 05 07:34:32 2007
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: Evaluating archive log 4 thread 1 sequence 12927
ARC0: Unable to archive log 4 thread 1 sequence 12927
Log actively being archived by another process
ARC0: Evaluating archive log 5 thread 1 sequence 12928
ARC0: Beginning to archive log 5 thread 1 sequence 12928
Creating archive destination LOG_ARCHIVE_DEST_4: 'phstdb'

ORA-00444: background process "ARC0" failed while starting
ORA-00020: maximum number of processes () exceeded

起动数据库怎么都不能成功(mount and ORA-01034: ORACLE not available)


2jliu 发表于:2007.04.05 09:50 ::分类: ( RDBMS ) ::阅读:(163次) :: 评论 (0)
===========================================================
Resize of datafile >2GB using Oracle <= 8.1.7 on 2.4 Linux kernels
===========================================================
checked for relevance on 12-03-2007.

@ (AuthWiz 1.2) Click here to edit in wizard.

The information in this article applies to:

Oracle Server - Enterprise Edition - Version: 8.1.7.4 to 8.1.7.4
Linux x86

Errors

ORA 1110 datafile :
ORA 1237 cannot extend datafile %s
ORA 19502 write error on file %s , blockno %s (blocksize=%s)
ORA 19510 failed to set size of %s blocks for file %s (blocksize=%s)
ORA-27046 file size is not a multiple of logical block size
ORA-27059 skgfrsz: could not reduce file size
ORA 27072 skgfdisp: I/O error

Symptoms

When attempting to resize a datafile to a size > 2GB using the [alter database datafile '...' resize...] command with Oracle releases prior to and including 8.1.7, on Linux Advanced/Enterprise Server, some or all of the following errors may be encountered:


ORA-01237: cannot extend datafile 25

ORA-01110: data file 25: '/u01/oradata/index01.dbf'

ORA-19510: failed to set size of 262144 blocks for file "/u01/oradata/index01.dbf" (blocksize=8192)

ORA-27046: file size is not a multiple of logical block size

Additional information: 2


ORA-01237: cannot extend datafile 25

ORA-01110: data file 25: '/u01/oradata/index01.dbf'

ORA-27059: skgfrsz: could not reduce file size

Linux Error: 22: Invalid argument

Additional information: 1


ORA-01237: cannot extend datafile 25

ORA-01110: data file 25: '/u01/oradata/index01.dbf'

ORA-19510: failed to set size of 262144 blocks for file "/u01/oradata/index01.dbf" (blocksize=8192)

ORA-27046: file size is not a multiple of logical block size

Additional information: 2


ORA-19502: write error on file "/u01/oradata/index01.dbf", blockno 262081 (blocksize=8192)

ORA-27072: skgfdisp: I/O error

Linux Error: 9: Bad file descriptor

Additional information: 262081

Cause

Although version 2.4 Linux kernels such as Redhat 2.1AS and 3.0 ES incorporate large file support for files larger than 2GB, Oracle releases prior to Oracle 9i Release 1 (9.0.1.x) do not implement this support. This is due to these releases being written prior to the 2.4 kernel enhancements becoming available and the complexity of introducing this to older releases now, is too great and might involve a risk to system stability.

Fix

Therefore, when running with Oracle releases prior to 9.0.1.x, even when using Linux releases that incorporate large file support, do not attempt to resize datafiles > 2GB.

If this operation is performed it may not be possible to resize the datafile back to the original size <2GB and thus recovery methods may need to be invoked in order to recover affected datafiles and contents.


Cautionary note for AUTOEXTEND

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

If the AUTOEXTEND functionality is used to allow Oracle to dynamically increase the size of datafiles, then ensure that all files are limited to a maximum size of just under 2GB, to ensure that this limit is not exceeded. It is important to set the limit just below 2GB since there is a certain overhead used for header information and thus 2GB of data storage will size a file slightly larger than 2GB. A good approximation for this overhead would be to check the Oracle block size for a datafile and set the maximum size to


2GB - (2 * Oracle block size)


This should allow sufficiently for any overhead. .

2jliu 发表于:2007.03.30 16:07 ::分类: ( RDBMS ) ::阅读:(374次) :: 评论 (0)
===========================================================
Log Block Size
===========================================================


LGWR以block为单位把redo写入磁盘,redo block size是Oracle源代码中固定的,与操作系统相关。

通常的操作系统都是以512 bytes为单位,如:Solaris, AIX, Windows NT/2000, Linux 等

这个Log size可以从Oracle的内部视图中获得:

SQL> select max(lebsz) from x$kccle;

MAX(LEBSZ)
----------
512


也可以从v$sysstat中的统计信息中通过计算粗略得到.
以下几个统计信息如:
redo size------------redo信息的大小
redo wastage---------浪费的redo的大小
redo blocks written--LGWR写出的redo block的数量

额外的信息,每个redo block header需要占用16 bytes.
由此可以粗略的计算redo block size如下

SQL> select name,value from v$sysstat
2 where name in ('redo size','redo wastage','redo blocks written');

NAME VALUE
---------------------------------------------------------------- ----------
redo size 2242628
redo wastage 63904
redo blocks written 4657


SQL> select ceil(16 + (2242628 + 63904)/4657) rbsize from dual;

RBSIZE
----------
512

SQL>

above from egyle


2jliu 发表于:2007.03.29 11:31 ::分类: ( RDBMS ) ::阅读:(152次) :: 评论 (0)
===========================================================
有一个冷备份,但是缺失了其中的一个数据文件,但是存在所有的归档,应该如何恢复数据文件。
===========================================================

问题,如果拥有一个冷备份,但是缺失了其中的一个数据文件,但是存在所有的归档,应该如何恢复数据文件。

如下步骤:

[oracle@jjliu jjliu]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Sun Aug 20 01:22:50 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area 252777592 bytes
Fixed Size 451704 bytes
Variable Size 134217728 bytes
Database Buffers 117440512 bytes
Redo Buffers 667648 bytes
Database mounted.


SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/opt/oracle/oradata/jjliu/jjliu02.dbf'


SQL> alter database create datafile 3 as '/opt/oracle/oradata/jjliu/jjliu02.dbf';

Database altered.

SQL> select name from v$datafile;

NAME
-------------------------------------------------------
/opt/oracle/oradata/jjliu/system01.dbf
/opt/oracle/oradata/jjliu/undotbs01.dbf
/opt/oracle/oradata/jjliu/jjliu02.dbf
/opt/oracle/oradata/jjliu/jjliu01.dbf

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 3 needs media recovery
ORA-01110: data file 3: '/opt/oracle/oradata/jjliu/jjliu02.dbf'


SQL> recover datafile 3;
Media recovery complete.
SQL> alter database open;

Database altered.

SQL>


2jliu 发表于:2007.03.29 11:27 ::分类: ( RDBMS ) ::阅读:(135次) :: 评论 (0)
===========================================================
Peeking绑定变量的控制
===========================================================
从Oracle9i开始,Oracle引入了Peeking of User-Defined Bind Variables的特性,这个特性可以用来在存在数据倾斜时对执行计划纠偏。
然而这一特性也可能带来一些副作用,所以Oracle同时引入了一个内部参数用于控制这一特性:
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.inst_id = USERENV ('Instance')
4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%&par%'
7 /
Enter value for par: peek
old 6: AND x.ksppinm LIKE '%&par%'
new 6: AND x.ksppinm LIKE '%peek%'

NAME VALUE DESCRIB
------------------------------ -------------------- ------------------------------
_optim_peek_user_binds TRUE enable peeking of user binds

这个参数缺省值为True,当设置为False时将禁用peeking of user binds


2jliu 发表于:2007.03.29 07:25 ::分类: ( RDBMS ) ::阅读:(104次) :: 评论 (0)
===========================================================
Oracle 在Linux/Unix下的时间处理
===========================================================

在Linux/Unix上,Oracle在很多地方都从系统取得时间。

记录一下Linux/Unix上的时间处理:

UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。
目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以后,负值则表示1970年以前。我们可以很简单地计算出其时间领域:

2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)

1970+68.0958 = 2038.0958
1970-68.0958 = 1901.9042

时间领域为[1901.9042,2038.0958]。

准确的时间为2038年一月十八日星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成1901年十二月十三日黑色星期五下午三点四十五分五十二秒,然後Jason就会跑出来用斧头砸掉您的电脑。

这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。

在一些64位元的平台上,例如Digital Alpha、SGI、Sparc等等,则用64位元来表示时间。

2^63/86400 ~ 1E14(天) ~ 2.92E11(年)

大约是292亿年。

因此,使用64位元的电脑可能会有Armageddon bug的问题。届时位於猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂大概也已经被重力波震断,银河系大概则已经变成小型似星体了。

虽然许多人认为UNIX的2038年问题会随着科技的进步,而将电脑逐步汰换成64位元电脑,因此无须担心。但我个人相信,在2038年,依然会有许多状况出现。因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。因此,如果有意添购电脑主机,而且有预期会使用到那个时候,最好是选购64位元电脑,确认只有世界末日问题(除非您想要把资料流传给下一个宇宙,那就要另当别论了)。


2jliu 发表于:2007.03.29 07:21 ::分类: ( RDBMS ) ::阅读:(99次) :: 评论 (0)
===========================================================
tns错误
===========================================================

呵呵,装有oraebs11i(windows),forms/report/discover,还自建了一个独立的数据库,还有一个ora805 client。强人啊,说tns不能成功,三天前似乎还好好的,今天死活不行;

赶过去一看,果然烦琐,查看了大半天,终于有了发现:缺少了一个括号,左边的,添加进去问题解决。

没啥说的,觉得牛人真是多


2jliu 发表于:2007.03.26 17:21 ::分类: ( RDBMS ) ::阅读:(124次) :: 评论 (0)
===========================================================
调整应用程序的SQL质量
===========================================================

  1. 不要进行全表扫描(Full Table Scan):全表扫描导致大量的I/O

  2. 尽量建好和使用好索引:建索引也是有讲究的,在建索引时,也不是索引越多越好,当一个表的索引达到4个以上时,ORACLE的性能可能还是改善不了,因为OLTP系统每表超过5个索引即会降低性能,而且在一个sql 中, Oracle 从不能使用超过 5个索引;当我们用到GROUP BY和ORDER BY时,ORACLE就会自动对数据进行排序,而ORACLE在INIT.ORA中决定了sort_area_size区的大小,当排序不能在我们给定的排序区完成时,ORACLE就会在磁盘中进行排序,也就是我们讲的临时表空间中排序, 过多的磁盘排序将会令 free buffer waits 的值变高,而这个区间并不只是用于排序的,对于开发人员我提出如下忠告:

  1)、select,update,delete 语句中的子查询应当有规律地查找少于20%的表行.如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高.

  2)、索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除.表释放的空间可以再用,而索引释放的空间却不能再用.频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片,影响性能.在许可的条件下,也可以阶段性地truncate表,truncate命令删除表中所有记录,也删除索引碎片.

  3)、在使用索引时一定要按索引对应字段的顺序进行引用。

  4)、用(+)比用NOT IN更有效率。

  降低ORACLE的竞争:

  先讲几个ORACLE的几个参数,这几个参数关系到ORACLE的竞争:

  1)、freelists 和 freelist 组:他们负责ORACLE的处理表和索引的空间管理;

  2)、pctfree 及 pctused:该参数决定了freelists 和 freelist 组的行为,pctfree 和pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出

  设置好pctfree 及 pctused对块在freelists的移走和读取很重要。

  其他参数的设置

  1)、包括SGA区(系统全局区):系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。

  主要包括数据库高速缓存(the database buffer cache),

  重演日志缓存(the redo log buffer),

  共享池(the shared pool),

  数据字典缓存(the data dictionary cache)以及其它各方面的信息

  2)、db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。

  3)、share_pool_size (SQL共享缓冲池):该参数是库高速缓存和数据字典的高速缓存。

  4)、Log_buffer (重演日志缓冲区)

  5)、sort_area_size(排序区)

  6)、processes (同时连接的进程数)

  7)、db_block_size (数据库块大小):Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。

  8)、open_links (同时打开的链接数)

  9)、dml_locks

  10)、open_cursors (打开光标数)

  11)、dbwr_io_slaves (后台写进程数)


2jliu 发表于:2007.03.25 19:56 ::分类: ( RDBMS ) ::阅读:(123次) :: 评论 (0)
===========================================================
数据库的硬件配置:CPU、内存、网络条件
===========================================================
1. CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉;

  2. 内存:衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE的内存瓶颈时,我们第一个要考虑的是增加内存,由于I/O的响应时间是影响ORACLE性能的主要参数,我将在这方面进行详细的讲解

  3. 网络条件:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。比如10M的网卡和100的网卡就对NET*SQL有非常明显的影响,还有交换机、集线器等等网络设备的性能对网络的影响很明显,建议在任何网络中不要试图用3个集线器来将网段互联。


2jliu 发表于:2007.03.25 19:41 ::分类: ( RDBMS ) ::阅读:(114次) :: 评论 (0)
===========================================================
命中率
===========================================================

数据字典命中率
1-sum(getmisses)/(sum(gets)+sum(getmisses))
if <=95%,increase share pool

v$sysstat:察看从内存中读取数据的频率(数据块缓冲区的命中率)
select 1-sum(physical reads)/(sum(db block gets)+sum(consistebt gets))
from v$sysstat
>=95%; if 小 需增加 db cache size



2jliu 发表于:2007.03.25 13:58 ::分类: ( RDBMS ) ::阅读:(108次) :: 评论 (0)
===========================================================
v$sysstat
===========================================================

1-sum(phy reads)/sum(dbblockgets)+sum(consis gets)


2jliu 发表于:2007.03.24 13:17 ::分类: ( RDBMS ) ::阅读:(124次) :: 评论 (0)
===========================================================
回滚段的理解
===========================================================

关于oracle回滚段的分配/管理,官方document上有更详细的解说。认真仔细漫漫的读,对回滚的理解也就不那么复杂了。昨天被问及这样的问题,顺手把自己的理解画了出来,今天再看,美中不足的是缺少文字说明,意思还是有了

http://www.itpub.net/showthread.php?s=&threadid=741382


2jliu 发表于:2007.03.22 10:18 ::分类: ( RDBMS ) ::阅读:(152次) :: 评论 (0)
===========================================================
incremental restore (alert.log)
===========================================================

backup incremental level 0/1 database;

restore/recover database;

alter database mount
Tue Mar 20 11:39:45 2007
Setting recovery target incarnation to 4
Tue Mar 20 11:39:45 2007
Successful mount of redo thread 1, with mount id 1823524860
Tue Mar 20 11:39:45 2007
Database mounted in Exclusive Mode
Completed: alter database mount
Tue Mar 20 11:40:07 2007
Incremental restore complete of datafile 4 /u01/app/oracle/oradata/grid/users01.dbf
checkpoint is 162851652
Incremental restore complete of datafile 2 /u01/app/oracle/oradata/grid/undotbs01.dbf
checkpoint is 162851652
Incremental restore complete of datafile 1 /u01/app/oracle/oradata/grid/system01.dbf
checkpoint is 162851652
Incremental restore complete of datafile 3 /u01/app/oracle/oradata/grid/sysaux01.dbf
checkpoint is 162851652
Tue Mar 20 11:40:51 2007
Incremental restore complete of datafile 4 /u01/app/oracle/oradata/grid/users01.dbf
checkpoint is 162869589
Tue Mar 20 11:41:38 2007
Incremental restore complete of datafile 2 /u01/app/oracle/oradata/grid/undotbs01.dbf
checkpoint is 162869589
Tue Mar 20 11:41:54 2007
Incremental restore complete of datafile 1 /u01/app/oracle/oradata/grid/system01.dbf
checkpoint is 162869589
Incremental restore complete of datafile 3 /u01/app/oracle/oradata/grid/sysaux01.dbf
checkpoint is 162869589
Tue Mar 20 11:41:58 2007
alter database recover datafile list clear
Tue Mar 20 11:41:58 2007
Completed: alter database recover datafile list clear
Tue Mar 20 11:41:58 2007
alter database recover datafile list
1 , 2 , 3 , 4
Completed: alter database recover datafile list
1 , 2 , 3 , 4
Tue Mar 20 11:41:58 2007
alter database recover if needed
start until cancel using backup controlfile
Media Recovery Start
parallel recovery started with 3 processes
ORA-279 signalled during: alter database recover if needed
start until cancel using backup controlfile
...
Tue Mar 20 11:41:59 2007
alter database recover logfile '/u01/app/oracle/arch/1_1951_613397329.dbf'
Tue Mar 20 11:41:59 2007
Media Recovery Log /u01/app/oracle/arch/1_1951_613397329.dbf
ORA-279 signalled during: alter database recover logfile '/u01/app/oracle/arch/1_1951_613397329.dbf'...
Tue Mar 20 11:42:00 2007
alter database recover cancel
Tue Mar 20 11:42:01 2007
Media Recovery Canceled
Completed: alter database recover cancel
Tue Mar 20 11:42:35 2007
alter database open
Tue Mar 20 11:42:35 2007
ORA-1589 signalled during: alter database open...
Tue Mar 20 11:42:49 2007
alter database open resetlogs
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/grid/redo01.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/grid/redo01.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/grid/redo02.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/grid/redo02.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/grid/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:49 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/grid/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:50 2007
RESETLOGS after incomplete recovery UNTIL CHANGE 162870050
Resetting resetlogs activation ID 1819188917 (0x6c6e9eb5)
Tue Mar 20 11:42:50 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/grid/redo01.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:42:57 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/grid/redo02.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:43:05 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/grid/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:43:12 2007
Setting recovery target incarnation to 5
Tue Mar 20 11:43:12 2007
Assigning activation ID 1823524860 (0x6cb0c7fc)
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=20, OS id=9715
Tue Mar 20 11:43:12 2007
ARC0: Archival started
ARC1: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC1 started with pid=21, OS id=9717
Tue Mar 20 11:43:12 2007
Thread 1 opened at log sequence 1
Current log# 1 seq# 1 mem# 0: /u01/app/oracle/oradata/grid/redo01.log
Successful open of redo thread 1
Tue Mar 20 11:43:12 2007
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Tue Mar 20 11:43:12 2007
ARC0: STARTING ARCH PROCESSES
Tue Mar 20 11:43:12 2007
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
Tue Mar 20 11:43:12 2007
SMON: enabling cache recovery
Tue Mar 20 11:43:12 2007
ARC2: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
ARC0: Becoming the heartbeat ARCH
ARC2 started with pid=22, OS id=9719
Tue Mar 20 11:43:13 2007
Successfully onlined Undo Tablespace 1.
Dictionary check beginning
Tue Mar 20 11:43:13 2007
Errors in file /u01/app/oracle/admin/grid/bdump/grid_dbw0_9410.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/u01/app/oracle/oradata/grid/temp01.dbf'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Tue Mar 20 11:43:13 2007
Errors in file /u01/app/oracle/admin/grid/bdump/grid_dbw0_9410.trc:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/u01/app/oracle/oradata/grid/temp01.dbf'
Tue Mar 20 11:43:13 2007
File 201 not verified due to error ORA-01157
Tue Mar 20 11:43:13 2007
Dictionary check complete
Tue Mar 20 11:43:13 2007
SMON: enabling tx recovery
Tue Mar 20 11:43:13 2007
Re-creating tempfile /u01/app/oracle/oradata/grid/temp01.dbf
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=23, OS id=9721
Tue Mar 20 11:43:14 2007
LOGSTDBY: Validating controlfile with logical metadata
Tue Mar 20 11:43:14 2007
LOGSTDBY: Validation complete
Tue Mar 20 11:43:14 2007
db_recovery_file_dest_size of 2048 MB is 34.26% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Tue Mar 20 11:43:15 2007
Starting control autobackup
Tue Mar 20 11:43:17 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
Tue Mar 20 11:43:17 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
Tue Mar 20 11:43:17 2007
Errors in file /u01/app/oracle/admin/grid/udump/grid_ora_9429.trc:
Control autobackup written to DISK device
handle '/u01/app/oracle/flash_recovery_area/GRID/autobackup/2007_03_20/o1_mf_s_617715795_2zyp2ng5_.bkp'
Completed: alter database open resetlogs


2jliu 发表于:2007.03.20 11:55 ::分类: ( RDBMS ) ::阅读:(193次) :: 评论 (0)
===========================================================
如何更改监听器日志文件名称
===========================================================

今天一个数据库的监听器日志出了点问题,用set log_file命令重新定位一个日志文件得以解决。

发现以下两个命令很有用:

LSNRCTL> set current_listener <listener name>
LSNRCTL> set log_file <sid name>.log

使用set current_listener可以访问非缺省监听器,使用set log_file更改名称后,原来有问题的日志文件可以清除或实现日志重定位:

[oracle@jumper admin]$ lsnrctl


LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 10-NOV-2006 16:54:16


Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.


Welcome to LSNRCTL, type "help" for information.


LSNRCTL> set current_listener LISTENER1
Current Listener is LISTENER1
LSNRCTL> set log_file
Parameter Value: a.log
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
LISTENER1 parameter "log_file" set to a.log
The command completed successfully
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER1
Version TNSLSNR for Linux: Version 9.2.0.4.0 - Production
Start Date 10-NOV-2006 16:54:12
Uptime 0 days 0 hr. 2 min. 6 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /opt/oracle/product/9.2.0/network/admin/listener.ora
Listener Log File /opt/oracle/product/9.2.0/network/log/a.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.33.11)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "conner" has 1 instance(s).
Instance "conner", status UNKNOWN, has 1 handler(s) for this service...
Service "eygle" has 1 instance(s).
Instance "eygle", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>

如果需要将这个修改永久化,需要使用save_config命令保存一下:

LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
Saved LISTENER1 configuration parameters.
Listener Parameter File /opt/oracle/product/9.2.0/network/admin/listener.ora
Old Parameter File /opt/oracle/product/9.2.0/network/admin/listener.bak
The command completed successfully

此时listener.ora文件会被增加如下记录:

[oracle@jumper oracle]$ tail -5 /opt/oracle/product/9.2.0/network/admin/listener.ora


#----ADDED BY TNSLSNR 14-NOV-2006 16:39:12---
LOG_FILE_LISTENER1 = a.log
#--------------------------------------------

记录一下。转


2jliu 发表于:2007.03.15 15:29 ::分类: ( RDBMS ) ::阅读:(111次) :: 评论 (0)