参数使用说明

对于所有的参数,有的为默认值输入,有的没有默认值,必须自己输入。另外参数的输入不区分大小写。

参数命令调用格式:

osrimp Connetion-Parameter Restlevel-Parameter General-Parameter

1、连接参数(Connetion-Parameter)

-hhost

指定服务器运行的机器的主机名;

-pport

指定TCP端口或者服务器监听连接的本地UNIX域名socket文件扩展。默认为2003

-k

指定以操作系统用户登录恢复。

-uusername/password

连接到指定的用户。

-ddatabase

指定连接数据库。

-susername/password

连接到指定的安全管理员,指定该参数将备份安全策略的对象信息。

2、恢复级别参数(Restlevel-Parameter)

指定恢复级别,可指定的restore级别为:full、schema、table三种级别,不同级别下操作权限均不同。调用格式为:level=full;或level=schema,schema=(schema1,schema2,…);或level=table,table=(table1,table2,…); 该级别实现了向下的兼容性,即full级别的备份文件能够在schema、table级别下还原;schema级别的备份文件能够在table级别下还原。

(1)全库级别:

level=full

在不指定level参数时吗,默认为full, 即不指定恢复级别时则进行全库导入。

举例:

osrimp -usysdba/szoscar55 -hlocalhost -p2003 -dosrdb level=full
file=d:/backup log=d:/rt.log mode=entirety ignore=y recreateschema=false
view=true sequence=true procedure=true recreateotherobject=true
recreatetable=true constraint=true deletetabledata=true trigger=true
index=true

(如果recreateschema=true 则后面的recreateotherobject=true recreatetable=true无效了)

注解

进行全库导入时,如果要导入的目标库与原来备份库不一样时,则需要注意几点:目标库中没有备份库中所包含的模式时,如果指定recreateschema=true则在目标库中新建这个模式并导入这个模式下所有的数据,如果指定recreateschema=false则会提示模式不存在;目标库中的模式名与备份库中的模式名相同且这两个模式所对应的用户相同时,则目标库中的这个模式下的所有数据将被备份库中的同名模式数据覆盖;如果目标库中的模式名与备份库中的模式名相同但这两个模式所对应的用户不相同时,则会先把目标库中的模式删除掉,然后导入备份库中的模式。如果不是全库导入时,recreateschema无效,则程序假设目标库中已经存在将要恢复的模式,如果目标库中没有将要恢复的模式,则需要手动创建,否则程序会报错。

(2)模式级别:

level=schema

schema=(schemaname1,schemaname2,...)

指定schema=(schema1,schema2,…) 用于还原备份文件中指定的模式信息,若模式信息错误如schema2在备份文件中不存在,系统将提示参数给予错误并退出。在指定的模式名如果含有特殊字符,请参照关于表名含有特殊字符的处理。

举例:

osrimp -usysdba/szoscar55 -hlocalhost -p2003 -dosrdb level=schema
file=d:/backup log=d:/rt.log mode=entirety ignore=true
schema=(sysdba,public) recreateschema=false view=true sequence=true
procedure=true recreateotherobject=true
excludetable=(sysdba.test,public.test) recreatetable=false
constraint=false deletetabledata=true trigger=false index=false

(3)表级别:

level=table

table=(tablename1,tablename2,…)

举例:

osrimp -usysdba/szoscar55 -hlocalhost -p2003 -dosrdb level=table
file=d:/backup log=d:/rt.log mode=entirety ignore=true
recreateschema=false view=false procedure=false sequence=true
recreateotherobject=false table=(sysdba.test,public.test)
recreatetable=true constraint=true deletetabledata=true trigger=true
index=true

(recreatetable=true 后面的trigger=true index=true才有效)

single=true|false

指定导入为表模式的导入并且列出表名供导入;table参数限制了导入的指定表以及其关联的对象,single只有在表名含有%字符时有效,下面会介绍到他的用法。Tablename指定了导入的一个或者多个表。

Tablename可以包含符号%进行部分字符匹配在导出文件中包含一个或者多个该字符的表名;但如果表名含有’%’字符,如’a%b’,而且只想导入这个表本身,则需要指定single=true。

同时,表名有如下限制因素。

默认情况下,数据库里的表名是按大写字母存储的;如果用户想使用混合或者小写输入表名,并且为了保护表名的实例的敏感性,必须采用将表名封装至引用标记方法;此时,名字必须与数据库里存储的表明严格匹配才有效。

一些操作系统要求引用语标记在命令行格式下优先与分离的字符,下面的例子显示了事例敏感性在不同的导入模式怎样被优先:

命令行模式:

TABLE = (“””Emp “””)

参数文件模式:

TABLE = (\”Emp\”)

表名指定了命令行不能包含#字符,除非表名是被附上引用语标志;同样,在参数文件中,如果表名附加了#字符,导出机制会将其识别成注释,除非表名是被附上引用标记;例如下面句子,参数文件会将#后面的内容翻译成注释内容而不是表dept、mydata;

TABLE = (emp# , dept , mydata)

但是如果格式是如下示例,则导出机制将成功到处3个表,因为#被包含进了引用语标志;

TABLE = (“””emp#””” , dept , mydata)

注解

Linux5操作系统中参数值左右括号需要加上双引号。例如:schema="(schemaname1,schemaname2,…)" table="(tablename1,tablename2,…)"。