2009年7月24日 星期五

ORA-01031: insufficient privileges

Arcsight安裝完arcsight db後,要安裝arcsight manager..
但出現

SQL> conn /
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory


網路上找了一些解決方法,簡單的有為重起instance..
但我重起的時候發生

ORA-01031: insufficient privileges




後來發現arcsight db安裝oracle 預設的user/group是oracle/oracle..
但大概我在安裝arcsight db前就先把oracle環境用好(包含add oracle user),所以設到oracle user group為oinstall...

故後續更改了oracle user group就解決了~~

....繼續閱讀

2009年7月13日 星期一

OC4J Configuration issue.

前些日重灌oracle環境,下達emctl status dbconsole看oem狀態~
出現

[oracle@localhost bin]$ ./emctl start dbconsole
TZ set to ROC
OC4J Configuration issue. /home/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_localhost.localdomain_ORCL not found.




結果原因為$ORACLE_SID變數未設定,而且預設的orcl db為小寫的
,設成大寫的會有問題,記錄一下。

....繼續閱讀

2009年7月6日 星期一

adump、bdump.....etc

*.audit_file_dest='/export/home/oracle/admin/ora10g/adump'
*.background_dump_dest='/export/home/oracle/admin/ora10g/bdump'
*.core_dump_dest='/export/home/oracle/admin/ora10g/cdump'
*.user_dump_dest='/export/home/oracle/admin/ora10g/udump' ....繼續閱讀

2009年6月30日 星期二

Linux Oracle 10gR2 OEM 按鈕亂碼

參考自椰子殼
以CentOS為平台安裝Oracle Linux..
安裝完發現OEM的按鈕都是亂碼...
搜尋了一下google,看到上述網頁的解決方案...
順便記錄一下...

先停止oem
emctl stop dbconsole
分別進入以下三個路徑

$ORACLE_HOME/jdk/jre/lib
$ORACLE_HOME/jre/1.4.2/lib
$ORACLE_HOME/javavm/lib/ojvmfonts

在每個目錄都透過以下指令覆蓋檔案
cp font.properties.zh_TW.Redhat font.properties
進入 OEM 的圖示路徑,清除之前的檔案

cd $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zht
rm *.gif
rm *.imx

啟動 OEM
emctl start dbconsole

做完上述..還是失敗了...
後來發現是沒有該字形的關係~
font.properties.zh_TW.Redhat 的最後一行:
filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_TW/TrueType/bsmi00lp.ttf

PS:在文章 http://tw.myblog.yahoo.com/bullock0425/article?mid=464&prev=467&next=462 有提到: bsmi00lp.ttf 字體可以在 http://cle.linux.org.tw/fonts/Arphic/bsmi00lp.ttf 下載。

下載完放置該指定目錄...再做一次上述rm *.gif等動作,重新啟動OEM即可了~~
....繼續閱讀

2009年6月1日 星期一

Oracle中password file的作用及說明

作者: 發表於 2004-06-26 11:59 最後更新於 2006-12-11 12:14 | English Version
版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明。
http://www.eygle.com/archives/2004/06/passwordfile.html

在數據庫沒有啟動之前,數據庫內建用戶是無法通過數據庫來驗證身份的

口令文件中存放sysdba/sysoper用戶的用戶名及口令
允許用戶通過口令文件驗證,在數據庫未啟動之前登陸
從而啟動數據庫

如果沒有口令文件,在數據庫未啟動之前就只能通過操作系統認證.



使用Rman,很多时候需要在nomount,mount等状态对数据库进行处理
所以通常要求sysdba权限如果属于本地DBA组,可以通过操作系统认证登陆
如果是远程sysdba登陆,需要通过passwordfile认证.

1.remote_login_passwordfile = NONE

此时停用口令文件验证,Oracle数据库不允许远程SYSDBA/SYSOPER身份登录
无法通过远程进行数据库起停等操作管理

local:



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

SQL*Plus: Release 9.2.0.3.0 - Production on Thu Apr 15 09:58:45 2004

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


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> alter user sys identified by oracle;

User altered.

SQL> show parameter pass

NAME TYPE VALUE
--------------------- ----------- ------------------------------
remote_login_passwordfile string NONE



remote:



E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 -
Production on 星期四 4月 15 09:39:22 2004

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

SQL> connect sys/oracle@hsjf as
sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

此处实际上是无法通过口令文件验证

2.remote_login_passwordfile = exclusive







SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.

SQL> startup force;
ORACLE instance started.

Total System Global Area 131142648 bytes
Fixed Size 451576 bytes
Variable Size 104857600 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> show parameter pass

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
SQL> alter user sys identified by oracle;

User altered.


remote:





E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 -
Production on 星期四 4月 15 09:47:11 2004

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

SQL> connect sys/oracle@hsjf as
sysdba
已连接。
SQL> show user
USER 为"SYS"
SQL>



这实际上就是通过口令文件验证登录的

3.进一步测试

如果此时我们删除passwdfile,sysdba/sysoper将无法认证,也就无法登陆数据库

Server:



SQL> !
[oracle@jumper oracle]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ ls orapwhsjf
orapwhsjf
[oracle@jumper dbs]$ mv orapwhsjf orapwhsjf.bak
[oracle@jumper dbs]$



Remote:



E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 - Production on 星期四 4月 15 09:50:14 2004

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

SQL> connect sys/oracle@hsjf as sysdba
ERROR:
ORA-01031: insufficient privileges


SQL>



这实际上就是无法通过口令文件验证身份



4.如果丢失了passwdfile

如果使用passwdfile却意外丢失,此时将不能启动数据库





SQL> startup force;
ORACLE instance started.

Total System Global Area 131142648 bytes
Fixed Size 451576 bytes
Variable Size 104857600 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01990: error opening password file '/opt/oracle/product/9.2.0/dbs/orapw'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3




此时可以通过orapwd重建口令文件来解决
此处我们恢复口令文件既可



SQL> !
[oracle@jumper oracle]$ mv $ORACLE_HOME/dbs/orapwhsjf.bak orapwhsjf
[oracle@jumper oracle]$ exit
exit

SQL> alter database open;

Database altered.

SQL>





大致就是如此.



5. remote_login_passwordfile = shared

我们看一下Oracle9i文档中的说明:

SHARED

More than one database can use a password file. However, the only user recognized by the password file is SYS.

意思是说多个数据库可以共享一个口令文件,但是只可以识别一个用户:SYS



SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE

SQL> grant sysdba to eygle;
grant sysdba to eygle
*
ERROR at line 1:
ORA-01994: GRANT failed: cannot add users to public password file

SQL> show parameter password

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED


我们看到,此时的口令文件中是不能添加用户的.

很多人的疑问在于:口令文件的缺省名称是orapw,怎么能够共享?

实际上是这样的: Oracle数据库在启动时,首先查找的是orapw的口令文件,如果该文件不存在,则开始查找,orapw的口令文件
如果口令文件命名为orapw,多个数据库就可以共享.

我们看一下测试:



[oracle@jumper dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Tue Jul 6 09:40:34 2004

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


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !
[oracle@jumper dbs]$ ls
hsjf initdw.ora inithsjf.ora init.ora lkHSJF orapwhsjf spfilehsjf.ora
[oracle@jumper dbs]$ mv orapwhsjf orapwhsjf.bak
[oracle@jumper dbs]$ exit
exit

SQL> startup
ORACLE instance started.

Total System Global Area 235999908 bytes
Fixed Size 451236 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
ORA-01990: error opening password file '/opt/oracle/product/9.2.0/dbs/orapw'--这是最后查找的文件
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3




我们建立orapw口令文件,这时候可以打开数据库.

SQL> !
[oracle@jumper dbs]$ ls
hsjf initdw.ora inithsjf.ora init.ora lkHSJF orapwhsjf.bak spfilehsjf.ora
[oracle@jumper dbs]$ cp orapwhsjf.bak orapw
[oracle@jumper dbs]$ exit
exit

SQL> alter database open;

Database altered.

SQL> show parameter passw

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED
SQL>



那么你可能会有这样的疑问,多个Exclusive的数据库是否可以共享一个口令文件(orapw)呢?

我们继续这个实验:

SQL> show parameter password

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED

[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A

注意这里仅记录着INTERNAL/SYS的口令

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 时

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.

SQL> startup force;
ORACLE instance started.

Total System Global Area 235999908 bytes
Fixed Size 451236 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> !

[oracle@jumper bin]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
HSJF
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
[oracle@jumper dbs]$ exit
exit

注意这里,以EXCLUSIVE 方式启动以后,实例名称信息被写入口令文件.

此时如果有其他实例以Exclusive模式启动仍然可以使用这个口令文件,口令文件中的实例名称同时被改写.

也就是说,数据库只在启动过程中才读取口令文件,数据库运行过程中并不锁定该文件,类似于pfile/spfile文件.

SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE

SQL> grant sysdba to eygle;

Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
EYGLE TRUE FALSE

SQL> !
[oracle@jumper bin]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
HSJF
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
>EYGLE
B726E09FE21F8E83


注意此时可以增加SYSDBA用户,并且这些信息可以被写入到口令文件.

一旦口令文件中增加了其他SYSDBA用户,此文件不再能够被其他Exclusive的实例共享.

实际上,口令文件对于其他用户来说就是启到了一个 sudo 的作用.

6.重建口令文件

如果口令文件丢失,可以使用orapwd可以重建口令文件,语法如下:

[oracle@jumper oracle]$ orapwd
Usage: orapwd file= password= entries=

where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.

....繼續閱讀

2009年5月20日 星期三

爸媽的背影

今天爸媽到渴望來看我~~
在宿舍門口等著我下班,匆匆一撇又接著一起去附近吃飯~~
吃飯的時候總是老樣子,雖然在家都是一直念我胖,但是看到我住在外面,還是點了牛肉麵,小菜等要我記得吃營養一點~~

吃飯其實吃的很趕,因為爸媽從台北騎摩托車到龍潭來看我,晚回去天色都暗了,一方面怕路不好找一方面也危險......

回程時我開著車跟在父母後面一小段,看著爸媽的背影,鼻頭就有點酸~~
爸媽騎那麼遠的車,我開著車卻沒法送她們回家,想到她們的付出~~ 內心就難過~

我想我能體會當初三菱汽車的廣告~~
雖然有時候真的覺得父母真的很煩~~但是世界上對你完全付出,沒有一點私心,除了家人,還會有誰~~


....繼續閱讀

2009年5月15日 星期五

Drop Database的意涵~

Prerequisites

You must have the SYSDBA system privilege to issue this statement. The database must be mounted in exclusive and restricted mode, and it must be closed.

Syntax


drop_database::=
Description of drop_database.gif follows


Semantics

When you issue this statement, Oracle Database drops the database and deletes all control files and datafiles listed in the control file. If the database used a server parameter file (spfile), it is also deleted.

Archived logs and backups are not removed, but you can use Recovery Manager (RMAN) to remove them. If the database is on raw disks, this statement does not delete the actual raw disk special files.

....繼續閱讀