2/27/2008

如何在oracle中导入dmp数据库文件?(转)

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。

下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。

数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp

执行示例:
F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp

屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表 "INNER_NOTIFY" 4行被导入
准备启用约束条件...
成功终止导入,但出现警告。


附录二:
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
先建立import9.par,
然后,使用时命令如下:imp parfile=/filepath/import9.par
例 import9.par 内容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log

2/25/2008

Install VMware Tools 6.02 59824 on RHEL5

1.在虚拟机下菜单VM下选择install vmware tools。

[root@localhost /]# mount -t iso9660 /dev/cdrom /mnt
[root@localhost /]# cd /mnt
[root@localhost mnt]# cp *.tar.gz /tmp
[root@localhost mnt]# cd /tmp
[root@localhost tmp]# tar zxvf *.tar.gz
[root@localhost tmp]# cd vmware-tools-distrib
[root@localhost vmware-tools-distrib]#./vmware-install.pl

2.一路回车选择默认的选择。

3.在分辨率选择界面下选择合适的分辨率,推出reboot即可。

btw:可能出的问题

A.默认的的路径找不到内核库头

What is the location of the directory of C header files that match your running kernel?[/usr/src/linux/include]

a.如果是RHEL系统,可能是该系统所在的内核源码没装,解决方法:
在系统光盘中找到,kernel,kernel-devel两个rpm安装后,再执行vmware-install.pl即可

b.如果是ubuntu版的linux解决方法如下:

You need to install the headers for the release of the kernel you have installed. To find this out you can type

>> uname -r

to get the header you can apt-get install them,

>> sudo apt-get install linux-headers-`uname -r`

or select the appropriate package in synaptic.

Note: you'll also need gcc etc which if you don't have already you can get with

>> sudo apt-get install build-essential

After installation the vmware installer should just pick up the right place and not require anything but the defaults.

If it's still being stupid, the path to include can be found in /lib/modules/<>/build/include

B.安装后提示安装失败

可能是执行安装过程中有2个过程默认是NO的选择,这俩个是和本机信息通讯的俩个,改成yes执行即可。

2/09/2008

install Oracle11.1 on rhel5 u1 手札

1.首先先检查安装oracle所需的包

[root@localhost /]# rpm -qa binutils libgcc make sysstat
binutils-2.17.50.0.6-2.el5
libgcc-4.1.1-52
make-3.81-1.1
sysstat-7.0.0
[root@localhost /]# rpm -qa grep elfutils
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
[root@localhost /]# rpm -qa grep glibc
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12

[root@localhost /]# rpm -qa grep gcc
gcc-4.1.1-52
gcc-c++-4.1.1-52
[root@localhost /]# rpm -qa grep unixODBC
unixODBC-2.2.11
unixODBC-devel-2.2.11
[root@localhost /]# rpm -qa grep libstdc
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
compat-libstdc++-33-3.2.3-61

[root@localhost /]# rpm -qa grep libaio
libaio-0.3.106
libaio-devel-0.3.106
btw:没有的就安装之,有些包需要一起安装 eg(rpm -ivh glibc-devel-2.5-12.i386.rpm glibc-headers-2.5-12.i386.rpm )


2.Oracle用户权限的设置


[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -m -g oinstall -G dba oracle
[root@localhost ~]# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@localhost ~]# passwd oracle

3.设置系统环境参数


修改/etc/sysctl.conf 文件,增加绿色字体部分内容

kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144


shmmax 最大共享内存1GB物理内存,如果小的话可以按实际情况而定(一般为物理内存的一半)
shmmni 最小共享内存4096KB(固定大小4096)
shmall 所有内存大小sem 4个参数依次是SEMMSL(每个用户拥有信号量最大数),SEMMNS(系统信号量最大数),SEMOPM(每次semopm系统调用操作数),SEMMNI(系统辛苦量集数最大数)。(这4个参数为固定内容大小)
file-max (固定大小65536)
ip_local_port_range 端口的范围(为指定的内容)

然后重新启动使系统设置成功.

4.设置Shell Limits(系统资源限制),提高软件的运行效率

a.在/etc/security/limits.conf后面加入如下语句

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536



b.在/etc/pam.d/login后加入以下语句:

session required /lib/security/pam_limits.so
session required pam_limits.so


c.在/etc/profile后加入以下语句:

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

5.创建Oracle安装目录

[root@localhost home]# mkdir -p /opt/ora11/product/11.1
[root@localhost home]# chown -R oracle:dba /opt/ora11


6.设置oracle用户的环境变量

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
[oracle@localhost ~]$ vi .bash_profile


将以下语句加入:

PATH=$PATH:$HOME/bin
export ORACLE_BASE=/opt/ora11
export ORACLE_HOME=$ORACLE_BASE/product/11.1
export ORACLE_SID=Ryan
export NLS_LANG=AMERICAN
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
export DISPLAY=127.0.0.1:0.0
export TEMP=/tmp
export TMPDIR=/tmp
unset USERNAME
export PATH

7.正式安装

[oracle@localhost ~]$ unzip linux_x86_11gR1_database.zip
[oracle@localhost ~]$ cd database/
[oracle@localhost database]$ ./runInstaller





启动图形安装界面后,设置相应的参数next即可
可能在开始的时候出现目录权限的问题会出现:
OUI-10035 / OUI-10033的提示,点忽略即可,稍后会提示让你手动选择目录。
安装最后会提示执行两个脚本,按照路径以root身份执行即可