2004年10月20日

(OS:2k)
fullbackup.bat

RMAN TARGET sys/oracle@allen CATALOG rman/rman@allen CMDFILE fullALLEN.rcv LOG fullALLEN.log
RMAN TARGET sys/oracle@allen CATALOG rman/rman@allen CMDFILE archbackup.rcv LOG Archbackup.log
RMAN TARGET sys/oracle@allen CATALOG rman/rman@allen CMDFILE ctlALLEN.rcv LOG ctlALLEN.log
copy D:\tools\oracle\ora92\database\spfileallen.ora D:\backup\spfileallen.ora.bak;

fullALLEN.rcv

run {
allocate channel fd1 type disk;
sql ‘alter database backup controlfile to trace’;
backup
full
tag full_allen_db
filesperset 1
format ‘D:\backup\db_allen_full_%t_%s_%p’
(database include current controlfile);
release channel fd1;
}

archbackup.rcv

run {
allocate channel ad1 type disk;
sql ‘alter system archive log current’;
backup
format ‘D:\backup\arch_allen_%s_%p’
(archivelog all delete input);
release channel ad1;
}

ctlALLEN.rcv

run {
allocate channel cd1 type disk;
copy current controlfile to ‘D:\backup\control01.bak’;
release channel cd1;
}

coldback.bat

sqlplus /nolog @C:\coldbackup/cold_create.sql
sqlplus /nolog @C:\shutdown/shutdown.sql
C:\coldbackup\COLDg_exec_allen.bat

cold_create.sql

connect /as sysdba
set feedback off
set heading off
set pagesize 0
set linesize 128
set verify off
set termout oN
set echo off
set trim on
set trims on

spool COLDg_exec_allen.bat
– Create Script to backup actual files to a directory

select
‘copy ‘||file_name||’ D:\coldbackup\’ ||substr(file_name,instr(rtrim(file_name),’\',-1,1)+1,length(rtrim(file_name)))||’.bak’ c1
FROM dba_data_files;
select
‘copy ‘||name||’ D:\coldbackup\’ ||
substr(name,instr(rtrim(name),’\',-1,1)+1,length(rtrim(name)))||’.bak’ c1
from v$controlfile;
select
‘copy ‘||member||’ D:\coldbackup\’ ||
substr(member,instr(rtrim(member),’\',-1,1)+1,length(rtrim(member)))||’.bak’ c1
from v$logfile;
select
‘copy ‘||’D:\tools\oracle\ora92\database’||’\spfile’||’allen’||’.ora ‘||’ D:\coldbackup’ || ‘\’ ||’spfile’||’allen’||’.ora.bak’ c1
from dual;
spool off
exit

shutdown.sql

connect /as sysdba
shutdown immediate
exit

2004年10月19日

看了一下资料,更改数据文件的方法如下:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\SYSTEM01.DBF’ to ‘G:\oradata\SYSTEM01.DBF’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\UNDOTBS01.DBF’ to ‘g:\oradata\undotbs01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\CWMLITE01.DBF’ to ‘g:\oradata\cwmlite01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\DRSYS01.DBF’ to ‘g:\oradata\drsys01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\EXAMPLE01.DBF’ to ‘g:\oradata\example01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\INDX01.DBF’ to ‘g:\oradata\indx01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\ODM01.DBF’ to ‘g:\oradata\odm01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\TOOLS01.DBF’ to ‘g:\oradata\tools01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\USERS01.DBF’ to ‘g:\oradata\users01.dbf’;

数据库已更改。

SQL> alter database rename file ‘C:\ORACLE\ORADATA\DRACO\XDB01.DBF’ to ‘g:\oradata\xdb01.dbf’;

数据库已更改。

SQL> alter database open;

数据库已更改。

 

在shutdown immediate后复制数据文件到g:\oradata\
然后再接着startup mount
。。。。

更改控制文件储存位置的方法:

C:\>sqlplus

SQL*Plus: Release 9.2.0.1.0 – Production on 星期二 10月 19 15:14:29 2004

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

请输入用户名: /as sysdba

连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 – Production
SQL> select * from v$controlfile;

STATUS
——-
NAME
————————————————————————

——–

C:\ORACLE\ORADATA\DRACO\CONTROL01.CTL

C:\ORACLE\ORADATA\DRACO\CONTROL02.CTL

C:\ORACLE\ORADATA\DRACO\CONTROL03.CTL

SQL> create pfile=’c:\init.ora’ from spfile;

文件已创建。

<<修改init.ora文件中的内容:
*.control_files=’\oradata\ocp\control01.ctl’,'\oradata\ocp\control02.ctl’

,’\oradata\ocp\control03.ctl’
路径更改为要储存的目录位置。>>

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

<<复制控制文件到要存储的目录里〉〉

SQL> startup pfile=’c:\init.ora’;《 从init.ora启动 》
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> create spfile from pfile=’c:\init.ora’;

文件已创建。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select * from v$controlfile;

STATUS
——-
NAME
————————————————————————

——–

G:\ORADATA\CONTROL01.CTL

G:\ORADATA\CONTROL02.CTL

G:\ORADATA\CONTROL03.CTL

SQL>

 

果不改system表空间的数据文件

可以不用shutdown。
step1:sql>offline tablespace
step2困惑s>mv datafile
step3:sql>alter rename
step4:sql>online tablespace

redo log:
alter database rename file ‘xxxto ‘xxx’;

或删除重建

 

 

我更改日志文件储存路径时执行一下命令:
startup mount
alter database rename file ‘C:\ORACLE\ORADATA\DRACO\REDO03.LOG’ to ‘g:\oradata\REDO03.LOG’
然后重新启动数据库就出现如下错误,请问如何解决?谢谢!
SQL> startup force
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-00322: 日志 1 (线程 1) 不是当前副本
ORA-00312: 联机日志 1 线程 1: ‘G:\ORADATA\REDO01.LOG’

 

 

改了日志文件储存路径后出现如下错误:
ORA-00322: 日志 1 (线程 1) 不是当前副本
ORA-00312: 联机日志 1 线程 1: ‘G:\ORADATA\REDO01.LOG’

怎么办啊???

2004年10月13日

dear all:
oracle 进程memory每天增长,直至100%,再也降不下来,除非系统重新开机,oracle 启用归档。操作系统HPUNIX,

烦请大家帮忙大概是什么原因造成的?找Hp的工程师看过,他们说和OS 没有关系?

 

   1, 从什么时候开始?用top和vmstat查的结果是什么?贴上你的alertsid.log文件。并发session有多少?如果是9i,v$pgastat的结果是什么?

    2, pga使用过多,可能是排序引起的! 抓出占大量内存的sql 看看有没有问题
8i的话 看看sort_area_size 是不是太大了!

 

    3,在Oracle耗费的内存中除了SGA是固定的,内存不停的大量增长,只能怀疑连接消耗的内存了

如果是8i,检查sort_area_size 的大小
如果是9i检查pga_aggregate_target的大小

oracle8I

’sort_area_size’

SQL>select  name,value from v$parameter  where name=’sort_area_size’; 或者  show parameter sort;

oracle9i 

pga_aggregate_target

SQL>select  name,value from v$parameter  where name=’pga_aggregate_target‘ 或者 show parameter pga;

 

如果不是这2个造成的,那只能怀疑Oracle以外的因素了,比如操作系统,其他的应用耗费的内存等等

经常看到各位观察系统,然后说ORACLE用户进程占用了多大的内存,
请问是怎样看出来的?
是通过:
select buffer_gets from v$sql 得到吗?

2004年10月12日

 

1.       Server Information:

Name: iasdemo.areschina.com

IP Add: 218.107.252.13

User: root/aplusoft  oracle/oracle

2.       System software requirement

a)         kernel and glibc version are: 2.4.21-15.ELsmp and glibc-2.3.2-95.3

b)        Required software package(same or higher)

l         gcc-3.2.3-20

l         setarch-1.3-1

l         pdksh-5.2.14

l         openmotif21-2.1.30-8

l         gnome-libs-1.4.1.2.90-34.1

l         compat-glibc-7.x-2.2.4.32.5

l         compat-gcc-7.3-2.96.122

l         compat-libstdc++-7.3-2.96.122

l         compat-libstdc++-devel-7.3-2.96.122

l         compat-gcc-c++-7.3-2.96.122

l         sysstat-4.0.7

To determine the package is installed, use the following command

$ rpm –qa|grep package-name

c)        Check whether the following symbolic links exist:

# cd /usr/bin

# ls -l gcc g++

gcc -> gcc296

g++ -> g++296

l         If not, create them as follows:

a)         Create a backup of the existing files:

# mv /usr/bin/gcc /usr/bin/gcc.backup

# mv /usr/bin/g++ /usr/bin/g++.backup

b)        Create the symbolic links:

# ln -s /usr/bin/gcc296 /usr/bin/gcc

# ln -s /usr/bin/g++296 /usr/bin/g++

d)        If the hugemem kernel is used, set the architecture using following command:

# setarch i386

e)         Apply patch 3006854.

This patch creates the /etc/libcwait.so file and appends the following line to the /etc/ld.so.preload file: /etc/libcwait.so

3.       Configuring the Kernel Parameters on Linux

Parameter

Value

File

Semmsl

256

/proc/sys/kernel/sem

semmns1

32000

Semopm

100

Semmni

142

Shmall

2097152

/proc/sys/kernel/shmall

Shmmax

2147483648

/proc/sys/kernel/shmmax

Shmmni

142

/proc/sys/kernel/shmmni

Msgmax

8192

/proc/sys/kernel/msgmax

Msgmnb

65535

/proc/sys/kernel/msgmnb

Msgmni

2878

/proc/sys/kernel/msgmni

file-max

131072

/proc/sys/fs/file-max

ip_local_port_range

1024 65000

/proc/sys/net/ipv4/ip_local_port_range

 

a)         Use the followed command to check the current value

l         # /sbin/sysctl -a | grep parameters-name

b)        To modify the parameter values, edit the /etc/sysctl.conf file and add or edit lines similar to the following :

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

# semaphores: semmsl, semmns, semopm, semmni

kernel.sem = 256 32000 100 142

fs.file-max = 131072

net.ipv4.ip_local_port_range = 1024 65000

kernel.msgmni = 2878

kernel.msgmax = 8192

kernel.msgmnb = 65535

c)        to enable the kernel parameter, reboot or use the follow command

l         /sbin/sysctl -p

 

4.       set shell limits for ias user

a)         Add the following lines to /etc/security/limits.conf file where -> represents the tab character:

* -> -> soft -> nproc -> -> 16384

* -> -> hard -> nproc -> -> 16384

* -> -> soft -> nofile -> -> 65535

* -> -> hard -> nofile -> -> 65535

b)        Add the following line to the /etc/pam.d/login file, if it does not already exist:

session required /lib/security/pam_limits.so

c)        Add the follow line in user’s profile

ulimit -u 16384 -n 16384

 

5.       Create user and groups

a)         Create a group ias for inventory directory

a)         # /usr/sbin/groupadd ias

b)        Create a two groups dba, oper for database administrator

a)         # /usr/sbin/groupadd dba

b)        # /usr/sbin/groupadd dba

c)        Create user ias for operation system user

a)         # /usr/sbin/useradd -g ias -G dba,oper ias

b)        # passwd ias ias100

c)        # chmod –R 777 /etc/oraInventory

 

6.       Check the environment variables

a)         In the .bash_profile file, add the follow lines: 

DISPLAY=192.1681.2:0.0

Export DISPLAY

TMP=/tmp

TMPDIR=/tmp

Export TMP, TMPDIR

 

7.       Create target directory for iAS 10g

# cd /d01

# mkdir ias

# chown oracle ias

# chgrp oracle ias

 

8.       start Installing OracleAS Infrastructure 10g

a)         cd /home/oracle/stage/ias10g/Disk1

b)        ./runInstaller

c)        complete the first several steps to begin installer

d)        [Welcome]: next

e)         [Inventory]:/etc/oraInventory

f)         [UNIX Group]: oracle

g)        [Root job]: run /etc/oraInventory/orainstRoot.sh as root

h)        [Specify file location]

Path: /home/oracle/stage/ias10g/Disk1/stage/products.jar

Name: infra

Path: /d01/ias/infra

i)          [Select a Product to install]: OracleAS Infrastructure 10g

[Languages]: English, Simplified Chinese, Traditional Chinese

[Select Installation Type]: Identity Management and OracleAS Metadata Repository

j)          Verify that your computer meets all the requirements. Click Next.

k)        [Suggested Namespace]: dc=areschina, dc=com

l)          [Database Admin&Operator Group (OSDBA & OSOPER)]: oracle

m)      [Database Identification]

[Global Database Name]: asdb.areschina.com

[SID]: asdb

n)        [Set SYS and SYSTEM Passwords]: system and system

o)        [Database File Location]: /d01/ias/infra/oradata

p)        [Database Character Set]: UTF8

q)        [Instance Name]: infra  [ias_admin password]: ias100

r)         Begin install:

Log files: /etc/oraInventory/logs/installActions2004-10-10_03-22-15PM.log

s)         Atfer install, test the installation use the follow URL:

http://iasdemo.areschina.com:7777   Oracle HTTP Server

http://iasdemo.areschina.com:1810   Oracle Enterprise Manager server

username : ias_admin  password : ias100

9.       Start installation for Middle ties

a)         cd /home/oracle/stage/ias10g/Disk1

b)        ./runInstaller

c)        complete the first several steps to begin installer

d)        [Welcome]: next

e)         [Specify file location]

Path: /home/oracle/stage/ias10g/Disk1/stage/products.jar

Name: mid

Path: /d01/ias/mid

f)         [Select a Product to install]: Oracle Application Server 10g

[Languages]: English, Simplified Chinese, Traditional Chinese

[Select Installation Type]: Bussiness Intelligence and Forms

g)        Verify that your computer meets all the requirements. Click Next.

h)        Select all components

i)          [Register with the Oracle Internet Directory]

Host: iasdemo.areschina.com

Port: 3060

j)          [Specify Login for Oracle Internet Directory]

Username: cn=orcladmin  Password: ias100

k)        [Select OracleAS Metadata Repository]: Database connection string:

Iasdemo.areschina.com:1521:asdb.areschina.com:asdb.areschina.com

l)          [Instance Name]: mid  [ias_admin password]: ias100

m)      Atfer install, test the installation use the follow URL:

http://iasdemo.areschina.com:7778   Oracle HTTP Server

http://iasdemo.areschina.com:1811   Oracle Enterprise Manager server

Username : ias_admin  password : ias100

10.   Start and stop scripts for Infrastructure and Middle ties

a)         Start Infrastructure

a. Set the ORACLE_HOME environment variable to the Infrastructure Oracle home.

b. Set the ORACLE_SID environment variable to the Metadata Repository SID (default is asdb).

c. Start the Net Listener:

d. Start the Metadata Repository instance:

e. Start components:

f.  Start Application Server Control:

 

ORACLE_HOME=/d01/ias/infra

export ORACLE_HOME

PATH=$ORACLE_HOME/jdk/bin:$ORACLE_HOME/bin:$ORACLE_HOME/dcm/bin:$PATH

export PATH

ORACLE_SID=asdb

export ORACLE_SID

LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH

ORACLE_HOME/bin/lsnrctl start

ORACLE_HOME/bin/sqlplus /nolog

SQL> connect SYS as SYSDBA

SQL> startup

SQL> quit

ORACLE_HOME/opmn/bin/opmnctl startall

ORACLE_HOME/bin/emctl start iasconsole

 

b)        Start Middle tie

a. If the middle-tier instance uses Infrastructure services, such as Identity Management or a Metadata Repository, make sure they are started.

b. Start components:

c. Start the Application Server Control:

ORACLE_HOME/opmn/bin/opmnctl startall

ORACLE_HOME/bin/emctl start iasconsole

 

c)        Stop Middle tie

a. Stop Application Server Control:

b. Stop components:

ORACLE_HOME/bin/emctl stop iasconsole

ORACLE_HOME/opmn/bin/opmnctl stopall

 

d)        Stop Infrastructure

a. Stop Application Server Control:

b. Stop components:

c. Set the ORACLE_HOME environment variable to the Infrastructure Oracle home.

d. Set the ORACLE_SID environment variable is set to the Metadata Repository SID (default is asdb).

e. Stop the Metadata Repository instance:

f.  Stop the Net Listener:

ORACLE_HOME/bin/emctl stop iasconsole

ORACLE_HOME/opmn/bin/opmnctl stopall

ORACLE_HOME/bin/sqlplus /nolog

SQL> connect SYS as SYSDBA

SQL> shutdown

SQL> quit

ORACLE_HOME/bin/lsnrctl stop

 

e)          

f)         Aa

g)        Aa

h)         

11.   aa

12.   aa

13.   aa

14.   Oracle official installation example:

http://www.oracle.com/technology/obe/obe_as_10g/install/index.html

 

1.使用急救盘组进行维护

  急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具。用它可以独立地启动和运行一个完整的Linux系统。实际 上,急救盘组中的第2张盘上就有一个完整的Linux系统,包括root文件系统;而第1张盘则存放了可启动的内核。

  使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是root账户。为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如,用下面的命令可在/mnt目录中安装/dev/hda2盘上的ext2fs类型的Linux文件系统:

  # monut -t ext2/dev/hda2/mnt

  注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目枷隆U庋绻才躺衔募低嘲沧霸?mmt目录下,则硬盘上原来的/etc/passwd文件的路径就是/mnt/etc/passwd

  2、文件系统被破坏时的处理方法

  当文件系统被破坏时,如果使用的是ext2fs类型的文件系统,就可从软盘运e2fsck命令来修正文件系统中被损坏的数据。对于其他类型的文件系统,可以使用相应的fsck命令。 当从软盘上检查文件系统时,最好不要mount安装

  注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能安装它了,即使采用e2fsck命令也不能处理这个问题。

  不过,ext2fs类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)边界。可以用如下的命令通知e2fsck使用超级块的备份

  # e2fsck -b 8193

  是指文件系统所在的分区,-b 8193选项用于显示使用存放在文件系统中的8193块的超级块的备份数据

  3、恢复丢失的文件

  如果不小心删除了重要的文件,那么没有办法直接恢复。但是还可以将相应的文件从急救盘复制到硬盘上。例如,如果删除了文件/bin/login,此时系统无法正常进到登录界面,可以用急救盘组启动系统,将硬盘文件系统安装到/mnt目录下,然后使用下述命令:

  #cp -a /bin/login /mnt/bin

  “-a”选项用于告诉cp在拷贝时保持文件的访问权限。 当然如果被删除的基本文件不在“急救盘组”中,也就不能用这种方法了。如果以前做过系统备份的话,那么也可以用以前的备份来恢复。

  4.函数库破坏时的处理方法

  如果不小心将系统函数库文件破坏了,或者破坏了/lib目录下符号链接,那么将导致依赖这些库的命令无法执行。最简单的解决办法是用急救盘组启动系统,在/mnt目录中安装硬盘文件系统,然后修复/mnt/lib目录下的库。

  5、无法用root账号登录系统

  由于系统管理员的疏忽,或者由于系统受到黑客的入侵,系统管理员可能无法用root帐号登录系统。

  对于第1种情况,可能是系统管理员忘记了rootFrethem/index.htm” target=”_blank” style=’text-decoration: underline;color: #0000FF’>密码,用急救盘组就可以解决问题。

  对于第2种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系统,也就是说,Linux系统完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root权限后,还应检查系统被破坏的情况,以防被黑客再次入侵。

  需要做的最主要的工作就是重新设置root的密码,获得Linux操作系统的控制权。首先用急救盘组启动系统,然后将硬盘的文件系统安装到/mnt目录下,编辑/mnt/etc/passwd文件,将其对应于root账户的一行加密口令域置空,如下所示:

  root::00root/rootbin/bash注: 如果系统使用 shadow工具,就需要对文件/etc/shadow进行上述的操作,使root登录系统不需要口令。

  这样,root账户就没有口令了。当重新从硬盘启动Linux系统时,就可以用root账户登录(系统不会要求输入密码)。进

 

入系统后,再用命令passwd设置新的口令。

  6Linux系统不能启动

  一般来说,如果系统管理员不能正常进入系统,就需要考虑使用急救盘组进入急救模式排除系统的故障。但在没有制作急救盘组的情况下,Linux系统不能启动,该怎么办?

  在个人计算机使用 Linux系统时,通常都是LinuxMS Windows 9xMS Windows NT并存的。由于重新安装其他的操作系统,经常会导致原有的Linux不能启动。这主要是因为,这些操作系统默认为计算机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),冲掉了LinuxLILO系统引导程序。

  如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的Linux系统,重新运行LILO命令,就可以将LILO系统引导程序写回硬盘的主引导记录。再次开机即可。

  如果没有系统启动盘,怎样恢复硬盘上的Linux呢?在这种情况下,如果知道Linux在硬盘上的确切安装分区,且有loadlin程序,就可以重新返回Linux. loadlin程序是DOS下的程序,运行它可以从DOS下直接启动Linux,快速进入Linux环境。在 Red Hat Linux 6.0光盘的 dosutil/目录下就有这个程序。除此之外,还需要一个 Linux启动内核的映像文件。在 Red Hat linux 6.0光盘的 images/目录下有这个文件——vmlinuz.

  例如,在Windows 98系统下面,进入DOS的单用户模式,然后运行下述的loadlin命令,即可重新进入Linux系统:

  loadlin vmlinuz root=/dev/hda8

  /dev/hda8Linuxroot文件系统所在的硬盘分区位置。命令执行后,就引导Linux系统。用root登录后,运行LILO命令,则重新将LILO装入MBR,回到以前多操作系统并存使用的状态。

 

RMAN(Recovery Manager) 是 DBA 的一个重要工具,用于备份、还原和恢复 oracle 数据库,前一段时间有网友找我要,可惜没时间,趁这两天出差在外没什么事,就写了一下,供初学的朋友参考。本文将介绍 RMAN 的基本操作,更多的信息请参考《 Oracle8i Backup & Recovery Guide 》及 RMAN 手册,或者是 OCP Student Guide M09096 《 Backup and Recovery Workshop 》 Volume 2 ,也可以通过 mailto:gototop@ncn.cn和我联系。 Oracle 自带的例子参考 $ORACLE_HOME/rdbms/demo 目录下的 *.rcv 脚本。

一、 RMAN 简介

RMAN 可以用来备份和恢复数据库文件、归档日志和控制文件,也可以用来执行完全或不完全的数据库恢复。 RMAN 有三种不同的用户接口: COMMAND LINE 方式、 GUI 方式(集成在 OEM 中的备份管理器)、 API 方式(用于集成到第三方的备份软件中)。具有如下特点:

1 )功能类似物理备份,但比物理备份强大 N 倍,从下面的特点可以看到;

2 )可以压缩空块;

3 )可以在块水平上实现增量;

4 )可以把备份的输出打包成备份集,也可以按固定大小分割备份集;

5 )备份与恢复的过程可以自动管理;

6 )可以使用脚本(存在 Recovery catalog 中)

7 )可以做坏块监测

二、相关术语解释

1 ) Backup sets 备份集

备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以 oracle 专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。

2 ) Backup pieces 备份片

一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。

3 ) Image copies 映像备份

映像备份不压缩、不打包、直接 COPY 独立文件(数据文件、归档日志、控制文件),类似操作系统级的文件备份。而且只能 COPY 到磁盘,不能到磁带。可以作为增量备份的 0 级,一般用来备份控制文件。

4 ) Full backup 全备份

全备份是指对数据文件中使用过的数据块进行备份,没有使用过的数据块是不做备份的,也就是说, RMAN 进行备份是进行压缩的。

5 ) Incremental backup 增量备份

增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份相同,增量备份也进行压缩。增量备份虽然概念很好,备份也很简单,但恢复起来却是另外一回事,不仅麻烦而且容易出错,所以实际中越来越少使用,到了 Oracle 9i 已经建议不再使用,以后版本会逐渐取消对增量备份的支持。

6 ) Recovery catalog 恢复目录

恢复目录用于记录 RMAN 使用过程中的控制信息,恢复目录应该经常被同步(这在后面会讲到)。尽管我们可以使用 nocatalog 方式来使用 RMAN ,此时控制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据库的控制文件损坏就意味着所有的 RMAN 备份失效。同样的道理恢复目录应该建立在另外一个数据库中,在下面的例子中我们称作“目录数据库”。

三、创建恢复目录

1 、在目录数据库中创建恢复目录所用表空间

SQL> create tablespace rmants datafile ‘c:\oracle\oradata\cc\rmants.ora’ size 20M ;

表空间已创建。

2 、在目录数据库中创建 RMAN 用户并授权

SQL> create user rman identified by rman default tablespace rmants temporary tablespace temp quota

unlimited on rmants;

用户已创建

SQL> grant recovery_catalog_owner to rman ;

授权成功。

3 、在目录数据库中创建恢复目录

C:\>rman catalog rman/rman

恢复管理器:版本 8.1.7.0.0 – Production

RMAN-06008 :连接到恢复目录数据库

RMAN-06428 :未安装恢复目录

RMAN>create catalog tablespace rmants;

RMAN-06431 :恢复目录已创建

4 、注册目标数据库到恢复目录

注意哦,这里我的目标数据库使用的服务名称是 rman ,意思为要使用 RMAN 进行备份的数据库,而目录

数据库使用的服务名称是 CC 。

C:\>rman target sys/sys@rman

恢复管理器:版本 8.1.7.0.0 – Production

RMAN-06005 :连接到目标数据库: RMAN (DBID=1303772234)

RMAN>connect catalog rman/rman@cc

RMAN-06008 :连接到恢复目录数据库

RMAN>register database;

RMAN-03022 :正在编译命令: register

RMAN-03023 :正在执行命令: register

RMAN-08006 :注册在恢复目录中的数据库

RMAN-03023 :正在执行命令: full resync

RMAN-08002 :正在启动全部恢复目录的 resync

RMAN-08004 :完成全部 resync

好了,到此为止前面的准备工作都做好了,下面就可以使用 RMAN 来进行备份和恢复了。

四、使用 RMAN

下面通过具体的例子来说明 RMAN 的使用,这里会涉及到除了恢复以外的所有 RMAN 操作,关于使用 RMAN 进行恢复的内容请参考我以前写的另外一篇文章: RMAN 恢复实践。

1 、备份整个数据库

RMAN>run {

2> allocate channel c1 type disk;

3> backup database format ‘e:\dbbackup\2db.dmp’;

4> }

2 、复制数据文件

RMAN>run {

2> allocate channel c1 type disk;

3> copy datafile ‘c:\oracle\oradata\rman\users01.dbf’ to ‘e:\dbbackup\u.dbf’ tag

=u1215;

4> }

3 、查看备份及复制的信息

RMAN>list backup;

RMAN-03022 :正在编译命令: list

备份集列表

关键字 Recid 标记 LV 集合标记集合计数完成时间

——- ———- ———- — ———- ———- ———————-

216 1 417347013 0 417346992 1 26-12 月 -00

备份段列表

关键字 Pc# Cp# 状态完成时间段名

——- — — ———– ———————- ————————

217 1 1 AVAILABLE 26-12 月 -00 E:\DBBACKUP\2DB.DMP

数据文件包括列表

文件名称 LV 类型检查点 SCN 检查点时间

—- ————————————- — —- ———- ————-

1 C:\ORACLE\ORADATA\RMAN\SYSTEM01.DBF 0 Full 33224 26-12 月 -00

2 C:\ORACLE\ORADATA\RMAN\RBS01.DBF 0 Full 33224 26-12 月 -00

3 C:\ORACLE\ORADATA\RMAN\USERS01.DBF 0 Full 33224 26-12 月 -00

4 C:\ORACLE\ORADATA\RMAN\TEMP01.DBF 0 Full 33224 26-12 月 -00

5 C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF 0 Full 33224 26-12 月 -00

6 C:\ORACLE\ORADATA\RMAN\INDX01.DBF 0 Full 33224 26-12 月 -00

RMAN>list copy of datafile ‘c:\oracle\oradata\rman\users01.dbf’;

RMAN-03022 :正在编译命令: list

数据文件备份列表

关键字文件状态完成时间检查点 SCN 检查点时间名称

——- —- – ————— ———- ————— ——

226 3 A 26-12 月 -00 33226 26-12 月 -00 E:\DBBACKUP\U.DBF

4 、在备份是设置相关参数

format — 文件输出格式,

%d–database name,

%s–backup sets sequence number,

%p–backup pieces sequence number

filesperset — 每个备份集中所包括的文件数

更多参数请参考本文开始时列出的书。

RMAN>run {

2> allocate channel c1 type disk;

3> set limit channel c1 kbytes 8000;

4> backup

5> format ‘e:\dbbackup\db_%d_%s_%p.bck’

6> (database filesperset=2 );

7> }

RMAN-03022 :正在编译命令: allocate

RMAN-03023 :正在执行命令: allocate

RMAN-08030 :分配的通道: c1

RMAN-08500 :通道 c1 : sid=9 devtype=DISK

RMAN-03022 :正在编译命令: set limit

RMAN-03023 :正在执行命令: set limit

RMAN-03022 :正在编译命令: backup

RMAN-03023 :正在执行命令: backup

RMAN-08008 :通道 c1 :正在启动 full 数据文件备份集

RMAN-08502 : set_count=6 set_stamp=417351064 creation_time=26-12 月 -00

RMAN-08010 :通道 c1 :正在指定备份集中的数据文件

RMAN-08522 :输入数据文件 fno=00003 name=C:\ORACLE\ORADATA\RMAN\USERS01.DBF

RMAN-08522 :输入数据文件 fno=00005 name=C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF

RMAN-08013 :通道 c1 :已创建 1 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_6_1.BCK comment=NONE

RMAN-08525 :备份集完成,经过时间: 00:00:03

RMAN-08008 :通道 c1 :正在启动 full 数据文件备份集

RMAN-08502 : set_count=7 set_stamp=417351067 creation_time=26-12 月 -00

RMAN-08010 :通道 c1 :正在指定备份集中的数据文件

RMAN-08522 :输入数据文件 fno=00002 name=C:\ORACLE\ORADATA\RMAN\RBS01.DBF

RMAN-08522 :输入数据文件 fno=00006 name=C:\ORACLE\ORADATA\RMAN\INDX01.DBF

RMAN-08013 :通道 c1 :已创建 1 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_7_1.BCK comment=NONE

RMAN-08525 :备份集完成,经过时间: 00:00:04

RMAN-08008 :通道 c1 :正在启动 full 数据文件备份集

RMAN-08502 : set_count=8 set_stamp=417351071 creation_time=26-12 月 -00

RMAN-08010 :通道 c1 :正在指定备份集中的数据文件

RMAN-08522 :输入数据文件 fno=00001 name=C:\ORACLE\ORADATA\RMAN\SYSTEM01.DBF

RMAN-08011 :备份集中包括当前控制文件

RMAN-08013 :通道 c1 :已创建 1 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_1.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 2 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_2.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 3 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_3.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 4 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_4.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 5 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_5.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 6 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_6.BCK comment=NONE

RMAN-08013 :通道 c1 :已创建 7 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_8_7.BCK comment=NONE

RMAN-08525 :备份集完成,经过时间: 00:00:19

…. ….

RMAN-08008 :通道 c1 :正在启动 full 数据文件备份集

RMAN-08502 : set_count=9 set_stamp=417351090 creation_time=26-12 月 -00

RMAN-08010 :通道 c1 :正在指定备份集中的数据文件

RMAN-08522 :输入数据文件 fno=00004 name=C:\ORACLE\ORADATA\RMAN\TEMP01.DBF

RMAN-08013 :通道 c1 :已创建 1 段

RMAN-08503 :段 handle=E:\DBBACKUP\DB_RMAN_9_1.BCK comment=NONE

RMAN-08525 :备份集完成,经过时间: 00:00:07

RMAN-03023 :正在执行命令: partial resync

RMAN-08003 :启动部分恢复目录的 resync

RMAN-08005 :完成部分 resync

RMAN-08031 :释放的通道: c1

5 、使用脚本功能

使用脚本的目的在于方便我们操作中的方便,操作上和存储过程相似。

RMAN>create script l0dbbackup {

2> allocate channel c1 type disk;

3> backup

4> format ‘e:\dbbackup\db_%d_%s_%p.bck’

5> (database filesperset=2 );

6> }

RMAN-03022 :正在编译命令: create script

RMAN-03023 :正在执行命令: create script

RMAN-08085 :已创建脚本 l0dbbackup

RMAN>run {execute script l0dbbackup; }

创建恢复目录步骤:
1 、连接目录数据库并为目录创建表空间:
create tablespace rman_ts datafile ‘E:\ORACLE\ORADATA\MYUSR\rman.dbf’ size 20M default storage(initial 100k next 100k pctincrease 0);

2 、创建恢复管理器用户:
create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;

3 、授予该用户维护恢复目录和执行备份与恢复操作的角色和权限:
grant recovery_catalog_owner to rman;
grant connect,resource to rman;

4 、确保在表空间和回滚段有足够的空间。目录需要大约 20m 的空间,回滚段大约为 5m ;

5 、登录到 os ,运行 rman 命令调用 rman 命令编译器并创建目录。使用 MSGLOG(8I 中为 LOG) 选项允许 rman 将信息和命令输出到文件中。
$rman catalog rman/rman msglog=catalog.log
RMAN> create catalog tablespace rman_ts
RMAN> exit

6 、检查 rman 创建的 catalog.log 文件(如果没指定应在进入 rman 前的目录下),注意在创建恢复目录过程中是否有错误。如果发现了任何错误,应该删除目录拥有者的所有对象并重建它们。

7 、使用 rman 命令连接到包含目标数据库的服务器。应以具有 sysdba 权限的用户身份登录到目标数据库执行所有的备份和恢复操作。
$rman target ’sys/pass as sysdba’
RMAN> connect catalog rman/rman

注意:前提条件是已经把数据库置于 archivelog 状态
( shutdown immediate;– 注意不能用 abort
startup mount
alter database archivelog;
alter database open;

8 、在恢复目录中注册目标数据库。
RMAN> register database;

注意: rman 是使用内部数据库标志符( DBID )作为该数据库的唯一性标识, DBID 是在第一次创建数据库时计算出的。如果试图注册一个新的数据库,而这个数据库是通过拷贝已有数据库然后更名创建的,那么注册将失败。要备份拷贝的数据库,需要创建一个新的恢复目录拥有者,然后在这个新帐号创建恢复目录

$rman catalog rman/rman
rman: can’t open catalog
提示这样的错误,
RMAN> 提示符出现不了。

为什么?

原来我运行的 rman 命令是 /usr/X11R6/bin/rman
而不是 $ORACLE_HOME/bin/rman

Chapter 10   Configuring Oracle Databases

This chapter describes how to configure your Oracle database for use within the SilverStream server environment as a SilverMaster or an application database.

    For the latest information on supported database versions, see the Release Notes. In Windows, you can access the Release Notes from the SilverStream program group or from SilverStream online help.

This chapter includes these sections:

§ Setting up Oracle databases

§ Creating a SilverStream application database on Oracle

§ Installation requirements for HP-UX and AIX

§ Using synonyms

§ Troubleshooting


Setting up Oracle databases

SilverStream connects to Oracle using a Type 2 JDBC driver written by and provided by SilverStream. This driver interfaces with the Oracle SQL Net Client to achieve connectivity to the Oracle Server.

You must have the Oracle SQL Net Client software loaded onto the SilverStream server PC. Your version of the SQL Net client must not be 2.3.3.0.0 or you will experience problems when starting the SilverStream server or when trying to run databound forms/views from the SilverStream server. SilverStream recommends that you run with Version 2.3.4.0.0 of the SQL Net client.

To configure an Oracle database for use as a SilverMaster or application database, you need to:

1.   Install the Oracle SQL Net client onto the machine where the SilverStream server resides

2.   Create a SQL Net Alias for use by the SilverStream server

3.   Create an Oracle Tablespace to hold the SilverMaster tables

4.   Create an Oracle User for the SilverStream server

The sections that follow explain these tasks.

Once you have completed these tasks, you can install the SilverStream server.


Step 1: Install Oracle SQL Net Client

If Version 2.3.4.0.0 of the Oracle SQL Net Client is not installed on the SilverStream server machine, install it now before you continue. If you do not have this version of SQL Net, obtain it from Oracle Corporation.

Obtain the Oracle CD and follow the steps to install the client for an application user.

If you already have the client installed, you can run Oracle Installer (from the Oracle for Windows NT Program Folder) to determine the version of SQL Net that is installed.


Step 2: Create an Oracle SQL Net Alias

In order to connect to the Oracle Server, you must have a valid Oracle SQL Net Alias that references the target Oracle Server.

To create an Oracle SQL Net Alias:

1.   Run SQL Net Easy Configuration from the Oracle for Windows NT Program Group.

NOTE   On UNIX, run net8wiz.sh from the $ORACLE_HOME/bin/ directory.

2.   Choose Add a New Database Alias.

3.   Enter the name of the alias (you specified this name during the SilverStream server installation).

A suggested name for this alias is SilverMasterORCL.

4.   Choose TCP/IP as the protocol and select OK to continue.

5.   Enter the TCP/IP Host Name for the Oracle Server and enter the correct Instance name.

6.   Choose OK to continue.

7.   Choose Yes to create the new alias. At this point you can exit the SQL Net Easy Configuration utility.

8.   Test the newly created SQL Net Alias by using SQL Plus to connect to the Oracle database server.


Step 3: Create an Oracle Tablespace for use with SilverMaster

Creating a new Oracle Tablespace for use with SilverMaster ensures optimal performance and ease of installation. To create one, run SQL Plus and connect to Oracle as System or SYSDBA.

For example, this statement creates a Tablespace with an initial size of 30 MB.

  CREATE TABLESPACE SilverTablespace 
  DATAFILE `c:\databases\silvertablespace.dbf' SIZE 30M; 

You can issue this statement from a SQL Plus prompt.

If you choose to use an existing Tablespace, make sure there is enough space available.


Step 4: Create an Oracle user for the SilverStream server

To connect the SilverStream server to Oracle, create a new Oracle user for exclusive use by SilverStream. This user will own the SilverMaster tables.

Issue the following statements using the SQL Plus utility. These statements create the user and set the user’s privileges.

  CREATE USER smuser identified by password 
  DEFAULT TABLESPACE SilverTablespace 
  QUOTA UNLIMITED ON SilverTablespace; 
  GRANT CONNECT, RESOURCE to smuser; 
  REVOKE UNLIMITED TABLESPACE from smuser; 


Creating a SilverStream application database on Oracle

Adding an Oracle database to SilverStream equates to adding an Oracle Database User.

You use the SilverStream Designer Add Database option to make an existing database available as an application database. The Add Database option does two things:

§ Adds all the tables and views that the database user has access to (application tables)

§ Creates SilverStream system tables to store metadata


Before adding Oracle databases

Create a new unique SQL Net Alias, as outlined in the previous section.

Optional: if you want to store the SilverStream system tables in a separate database account, create an additional database user as described in the previous section and create a new Oracle SQL Net Alias. SilverStream system tables may also be stored in any other databases supported by SilverStream.

Database name

When adding an Oracle database to SilverStream, you are asked for the name of the database. This refers to the Oracle SQLNet Alias or TNSNAMES.ORA entry. The SQLNet Alias points to a specific Oracle Database Instance on a specific server. Typically you have one per Oracle database.

SilverStream requires a unique database name. This means that SilverStream requires you to create a unique SQLNet Alias for each Oracle Database User you add.

That means that if you have SilverMaster, application tables, and the SilverStream system tables stored in three different Oracle Database Users, you need three unique SQLNet Aliases–one for each user. Each SQLNet Alias points to the same Oracle database.

    Optionally, if you do not want to configure multiple SQLNet Aliases, see Using one SQLNet Alias.


Adding a database

If you already have data in an Oracle database, all you need to do for the SilverStream server to recognize it is:

§ Install the Oracle client on the SilverStream server machine.

§ Set up a TNS alias using the Oracle Easy Configuration utility.

§ Add the database through the SilverStream Designer, specifying the TNS Alias and the SilverStream Oracle Driver.


Using one SQLNet Alias

This is an optional advanced feature. The Add Database steps describe how to add an Oracle database with a separate SQLNet Alias (TNS NAME) for each Oracle database user that you use in the SilverStream environment.

The steps that follow are for experienced users. They document how you can install using a single SQLNet Alias:

To install using a single SQLNet Alias:

1.   When adding a new database to SilverStream, do not enter the SQLNet Alias (TNS NAME) in the database name box; enter any name you want.

2.   Now enter the user name and password as before and select Oracle 7 or Oracle 8 as the database platform.

3.   Choose User-specified JDBC driver for the driver set.

4.   Click Next.

You can now enter the JDBC connection string.

5.   For the JDBC URL, enter:

6.      jdbc:sssw:oracle:TNSNAME

replacing TNSNAME with the TNS NAME in your TNSNAMES.ORA file.

You can now connect as many databases as you like using the same TNS NAME.

Make sure you store the system tables separately.

What to avoid   You can reduce the chance of encountering problems if you follow these rules:

§ Do not put anything else in the same Oracle database user as your SilverMaster.

§ Do not put multiple system tables in the same Oracle Database User. These would conflict with each other. When adding multiple databases to SilverStream, you should keep their system tables separate.

Terminology differences   Different databases use different terminology. The SilverStream terminology might be confusing for Oracle users. For example, SilverStream Database means Oracle Database User. SilverStream uses the word databases, but on Oracle these map to Oracle Database Users. The following table describes other differences.

SilverStream term

Oracle term

SilverMaster Database

Oracle Database USER that owns the SilverMaster tables

Add a database

Add a specific USER in an Oracle database


Installation requirements for HP-UX and AIX

Accessing an Oracle database on HP-UX   To access an Oracle database that resides on HP-UX, you must have at least the following Oracle components installed:

§ Net8

§ Net8 External Naming Adapters

§ Net8 Protocol Adapters

§ Oracle Intelligent Agent

§ PL/SQL

§ SQL*Plus

In addition, during the Oracle installation process you will be asked if you want to relink Oracle product executables. You must answer yes. By default, the relinking will not occur.

If the Oracle installation is not sufficient for SilverStream, you will get the following error during SilverMasterInit:

  /usr/lib/dld.sl: Unresolved symbol: opinit (code) from /home/username/silverstream/bin/libagora_jni.sl

If you encounter this error or another type of connection error, verify that you have installed the Oracle components listed above and can connect to your database using SQL *Plus.

Accessing an Oracle 7 database on HP-UX or AIX   HP-UX and AIX users who want to connect to an Oracle 7 database either as a SilverMaster or application database must be using the following:

§ An Oracle 7 server

§ Oracle 8 client software

§ The SilverStream Oracle 7 driver


Using synonyms

The SilverStream server provides support for Oracle 8 synonyms for tables and views. You can see synonyms for tables and views in the SilverStream Designer’s list of tables.

NOTE   With Oracle 8, you can also define synonyms for other kinds of objects, including object tables, object views, and stored procedures. SilverStream supports synonyms only for tables and views.

Specifying the driver   The default SilverStream driver set for Oracle 8–SilverStream JDBC driver–does not support synonyms.

In order to enable synonym support, you need to specify the driver set SilverStream JDBC driver with synonym/mixed case support when adding the Oracle 8 database to the SilverStream server.

Once you have chosen this driver set for an Oracle 8 database, synonyms defined for tables and views are displayed in the Designer’s list of tables, as long as you have access to the synonyms, as described next.

Types of synonyms   Synonyms can be either private or public. A public synonym is owned by the special user group PUBLIC; every user of a database can access it.

A private synonym is in the schema of a specific user, who has control over its availability to others (see the Oracle manual Oracle 8 Release 8.0 Concepts, Volume 1). Individual users can see only the public synonyms and their own private synonyms.

How synonyms behave   A synonym that displays in the table list behaves exactly like its underlying table or view–because support for synonyms is built into the JDBC method calls, which access the underlying tables and views to retrieve the required information.

The following JDBC implementation methods have synonym support built in: getTables, getTableTypes, getTablePrivileges, getColumnPrivileges, getPrimaryKeys, getImportedKeys, getExportedKeys, getCrossReference, and getIndexInfo.

Enabling and disabling synonym support   There is a property called includeSynonyms in the platforms.dbl file in the SilverStreamInstallDir/Resources directory that specifies whether a driver supports synonyms. The property is in the PROPERTIES section for the driver.

By default, the property is set to true for SilverStream JDBC driver with synonym/mixed case support.

  DRIVER
  /Name ...
  /JdbcDriver ...
  /DriverSet ...
  ...
  
  PROPERTIES
  /includeSynonyms       "true"

If you want to use this driver but want synonym support disabled, set the includeSynonyms property to false.

Similarly, if you have written your own Oracle 8 driver and have implemented synonym support, to enable the support you need to set the includeSynonyms property to true in the PROPERTIES section for your driver.


Troubleshooting

This section describes the most common errors and workarounds if available.

ORA-01019 “unable to allocate memory in the user side”   If you receive this message while running with a Net8 Oracle Client, free up available memory on the machine where the SilverStream server is installed.

ORA-01460 “unimplemented or unreasonable conversion requested”   If you receive this message when SilverMasterInit is creating an Oracle SilverMaster or when you are attempting to add an Oracle database to your SilverStream server, you must upgrade to at least Version 8.0.4 of the Oracle client software. This problem occurs on versions before 8.0.4.

ORA-01631, 00000, “max # extents (%s) reached in table %s.%s”   This message is caused when a table tried to extend past maxextents. To solve this problem, check your INITIAL, NEXT, and PCTINCREASE parameters on the DEFAULT TABLESPACE for the SilverMaster user. You must get your DBA to increase them. For example:

  SELECT DEFAULT_TABLESPACE 
  FROM dba_users 
  WHERE username = 'MYUSER'; 
  SELECT * 
  FROM dba_tablespaces 
  WHERE tablespace_name = 'MYTABLESPACE'; 
  ALTER TABLESPACE MYTABLESPACE 
  DEFAULT STORAGE (INITIAL 10K, NEXT 10K, PCTINCREASE 50); 

ORA-01950, 00000, “no privileges on tablespace ‘%s’”   This message is caused when a user does not have privileges to allocate an extent in the specified tablespace. To solve this problem, grant QUOTA to the user on the mentioned database. For example:

  ALTER USER MYUSER 
  QUOTA UNLIMITED ON MYTABLESPACE; 

TNS-12154 “TNS: could not resolve service name”   If you receive this message, you must verify that you have correctly created the SQL Net Alias as described in Step 2: Create an Oracle SQL Net Alias.

Adding large numbers of tables   If you are planning to connect SilverStream to a large Oracle tablespace, open the SilverStream Management Console (SMC) and change the value of the timeout for server requests to 30,000 seconds.

You must modify this value before attempting to add any large Oracle application. Once the application has been added successfully, reset the value back to the default value (3,000).

The SilverStream server must be restarted for these changes to be applied.

    For more information, see the section on setting performance parameters in the Administrator’s Guide.

SilverStream server hangs    If the SilverStream server hangs during server startup or when you try to test a databound form or view, check to see if you are running SQLNet Client Version 2.3.3.0.0. SilverStream does not support this version of SQL Net and recommends that you upgrade the SQLNet client to 2.3.4. You can obtain this upgrade from Oracle Corporation

Export/Import 使用技巧与常见错误

Export Import 是一对读写Oracle数据的工具. Export Oracle 数据库中的数据输出到操作系统文件中, Import 把这些文件中的数据读到Oracle 数据库中. Export/Import可以用来完成以下工作: 数据归档, 数据库升级, 备份数据库, 把数据从一个数据库移到另一个数据库, 回收数据库存储碎片等等.
  
   
使用Export除了要保证磁盘或磁带上有足够的空间, 还必须执行expvew.sqlexpvew.sql来创建Export使用的示图, 并创建EXP_FULL_DATABASE ROLE. 使用Export的用户应具有CREATE SESSION的权限, 若要Export其他用户的表还要有EXP_FULL_DATABASE ROLE.同样, 使用Import必须用catex.sql来创建IMP_FULL_DATABASE ROLE. 使用Import的用户应具有CREATE SESSION的权限. Import只能读入用Export创建的文件. 如果该文件是全库Export, 使用Import的用户还要有IMP_FULL_DATABASE ROLE.   

   Export/Import有三个级别: 表级, 用户级和全数据库级.

   表级允许Export/Import指定的表而不涉及其他数据库对象. 用户级Export/Import只针对属于指定用户的全部数据库对象. 只有拥有EXP_FULL_DATABASE/IMP_FULL_DATABASE ROLE 的用户才能使用全数据库级的Export/Import.

      有三种方式执行Export/Import: 参数文件方式, 命令行方式和交互式.

      使用参数文件是一种比较好的方式, 格式为:

         Exp <username/password> PARFILE = <filename>

         Imp <username/password> PARFILE = <filename>

      命令行方式是指在命令行中指定参数:

         Exp <username/password> TABLES = (emp,dept) GRANTS = y

         Imp <username/password> FROMUSER = scott TOUSER = test TABLES = (emp,dept)

      交互式只要敲入ExpImp然后回答屏幕上的提问即可.

下面介绍一些EXPORT/IMPORT的使用技巧 0

   - 把数据库对象从一个用户移到另一个用户

      Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

      假设要把表 T 的拥有者User1改为User2,  具体步骤是:

         - exp system/manager tables = User1.T

         - imp system/manager fromuser = User1 touser = User2 tables = T

         - drop table User1.T

         - 把数据库对象从一个表空间移到另一个表空间

      建表时可以指定表空间, 表空间一经确定就部能随意改变. 若要表 T 从表空间 tbs1移到表空间 tbs2, 就要采用以下方法:

         - exp <user/passwd> tables = T

         - imp <user/passwd> tables = T indexfile =  temp.sql

         - drop table T

         - 编辑 temp.sql 只保留所需的建表命令并指定表空间为tbs2

         - 以表的所有者执行temp.sql

         - imp <user/passwd> tables = T ignore = Y

     - 只输出一个的表空间

      通常数据库设计成用户若属于某个表空间, 那么这个用户创建的数据库对象也在该表空间内.

   Export某个表空间可用如下方法:

         - 查看表空间内所有用户

             spool owners
           
             select owner

             from dba_segments

             where tablespace_name = ‘<TablespaceName>’;
           

            spool off

            
         - 查看表空间内所有数据库对象

             spool objects

             select owner, object_name, object_type

             from  dba_objects

             where owner = ‘owner1′

             or   owner = ‘owner2′

                  …

             or   owner = ‘ownern’;

             spool off

        - 作表级Export         

   - Exp文件中提取创建数据库对象的命令

     IMPORT时使用 ‘INDEXFILE =  FileName’, IMPORT把创建数据库对象的命令输出到指定的文件中, 编辑后运行这个文件就能建立数据库对象.

   

下面介绍Export/Import 使用中几个常见的问题和解决办法

   - Export/Import 使用不同的字符集

      Export文件中包含着字符信息. 如过输入/输出都使用担字节字符集, EBCDICUS7ASCII, 输入时将自动进行字符集转换. 转换过程中, 若输出文件中含有的目标字符集中不能匹配的字符会自动设成缺省字符.

      对于多字节字符集, ZHS16CGB231280, 通常不能自动转换, 只有在字符串长度不变的情况下才能自动转换.      

   - 空间不够碎片问题

      有些时候, 即使数据库仍有足够的空间, 使用IMPORT时却出空间不够的错误. 出现这种现象通常是由于数据库中存在碎片, 即有很多小的不连续的空闲空间. 解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库, 重新建库(CREATE DATABASE)后用IMPORT FULL=Y恢复数据.

   - ROLLBACK段不够

      Export/Import使用过程中, 如果数据量很大会出现‘ROLLBACK段不够的错误. 这时要建一个足够大的ROLLBACK, 使它ONLINE而其他ROLLBACKOFFLINE. 这样, Export/Import使用这个大ROLLBACK, 从而避免上述现象.

 

 

 

 

不同观点。

/* 空间不够碎片问题

解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库归类于: 未分类 — ivan @ 5:44 pm 评论关闭

Export/Import 使用技巧与常见错误

Export Import 是一对读写Oracle数据的工具. Export Oracle 数据库中的数据输出到操作系统文件中, Import 把这些文件中的数据读到Oracle 数据库中. Export/Import可以用来完成以下工作: 数据归档, 数据库升级, 备份数据库, 把数据从一个数据库移到另一个数据库, 回收数据库存储碎片等等.
  
   
使用Export除了要保证磁盘或磁带上有足够的空间, 还必须执行expvew.sqlexpvew.sql来创建Export使用的示图, 并创建EXP_FULL_DATABASE ROLE. 使用Export的用户应具有CREATE SESSION的权限, 若要Export其他用户的表还要有EXP_FULL_DATABASE ROLE.同样, 使用Import必须用catex.sql来创建IMP_FULL_DATABASE ROLE. 使用Import的用户应具有CREATE SESSION的权限. Import只能读入用Export创建的文件. 如果该文件是全库Export, 使用Import的用户还要有IMP_FULL_DATABASE ROLE.   

   Export/Import有三个级别: 表级, 用户级和全数据库级.

   表级允许Export/Import指定的表而不涉及其他数据库对象. 用户级Export/Import只针对属于指定用户的全部数据库对象. 只有拥有EXP_FULL_DATABASE/IMP_FULL_DATABASE ROLE 的用户才能使用全数据库级的Export/Import.

      有三种方式执行Export/Import: 参数文件方式, 命令行方式和交互式.

      使用参数文件是一种比较好的方式, 格式为:

         Exp <username/password> PARFILE = <filename>

         Imp <username/password> PARFILE = <filename>

      命令行方式是指在命令行中指定参数:

         Exp <username/password> TABLES = (emp,dept) GRANTS = y

         Imp <username/password> FROMUSER = scott TOUSER = test TABLES = (emp,dept)

      交互式只要敲入ExpImp然后回答屏幕上的提问即可.

下面介绍一些EXPORT/IMPORT的使用技巧 0

   - 把数据库对象从一个用户移到另一个用户

      Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

      假设要把表 T 的拥有者User1改为User2,  具体步骤是:

         - exp system/manager tables = User1.T

         - imp system/manager fromuser = User1 touser = User2 tables = T

         - drop table User1.T

         - 把数据库对象从一个表空间移到另一个表空间

      建表时可以指定表空间, 表空间一经确定就部能随意改变. 若要表 T 从表空间 tbs1移到表空间 tbs2, 就要采用以下方法:

         - exp <user/passwd> tables = T

         - imp <user/passwd> tables = T indexfile =  temp.sql

         - drop table T

         - 编辑 temp.sql 只保留所需的建表命令并指定表空间为tbs2

         - 以表的所有者执行temp.sql

         - imp <user/passwd> tables = T ignore = Y

     - 只输出一个的表空间

      通常数据库设计成用户若属于某个表空间, 那么这个用户创建的数据库对象也在该表空间内.

   Export某个表空间可用如下方法:

         - 查看表空间内所有用户

             spool owners
           
             select owner

             from dba_segments

             where tablespace_name = ‘<TablespaceName>’;
           

            spool off

            
         - 查看表空间内所有数据库对象

             spool objects

             select owner, object_name, object_type

             from  dba_objects

             where owner = ‘owner1′

             or   owner = ‘owner2′

                  …

             or   owner = ‘ownern’;

             spool off

        - 作表级Export         

   - Exp文件中提取创建数据库对象的命令

     IMPORT时使用 ‘INDEXFILE =  FileName’, IMPORT把创建数据库对象的命令输出到指定的文件中, 编辑后运行这个文件就能建立数据库对象.

   

下面介绍Export/Import 使用中几个常见的问题和解决办法

   - Export/Import 使用不同的字符集

      Export文件中包含着字符信息. 如过输入/输出都使用担字节字符集, EBCDICUS7ASCII, 输入时将自动进行字符集转换. 转换过程中, 若输出文件中含有的目标字符集中不能匹配的字符会自动设成缺省字符.

      对于多字节字符集, ZHS16CGB231280, 通常不能自动转换, 只有在字符串长度不变的情况下才能自动转换.      

   - 空间不够碎片问题

      有些时候, 即使数据库仍有足够的空间, 使用IMPORT时却出空间不够的错误. 出现这种现象通常是由于数据库中存在碎片, 即有很多小的不连续的空闲空间. 解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库, 重新建库(CREATE DATABASE)后用IMPORT FULL=Y恢复数据.

   - ROLLBACK段不够

      Export/Import使用过程中, 如果数据量很大会出现‘ROLLBACK段不够的错误. 这时要建一个足够大的ROLLBACK, 使它ONLINE而其他ROLLBACKOFFLINE. 这样, Export/Import使用这个大ROLLBACK, 从而避免上述现象.

 

 

 

 

不同观点。

/* 空间不够碎片问题

解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库, 重新建库(CREATE DATABASE)后用IMPORT FULL=Y恢复数据.
*/

不同观点:

解决碎片,应该在表空间这个层次上就可以了,
1
exp 出要整理的表空间的各个用户。
2
。删除表空间,重新建立该表空间
3
。再imp

   - ROLLBACK段不够

  /*    Export/Import使用过程中, 如果数据量很大会出现‘ROLLBACK段不够的错误. 这时要建一个足够大的ROLLBACK, 使它ONLINE而其他ROLLBACKOFFLINE. 这样, Export/Import使用这个大ROLLBACK, 从而避免上述现象.

*/

imp时使用参数 commit=y ,就可以避免要求很大的回退段,
imp
到底用哪个ROLLBACK段是没法指定的,
如果系统刚启动,oracle顺序地用 初始化参数文件中指定的ROLLBACK
而后,事务以“最少使用原则”选取使用ROLLBACK段。
除非,在imp前,让一个大ROLLBACKonline,紧接着imp
否则很难说,oralce就正好用大ROLLBACK段。

以上想法如果有不当之处,恳请指教。