﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-alexprefect-文章分类-oracle</title><link>http://www.blogjava.net/alexprefect/category/52412.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Aug 2012 12:50:02 GMT</lastBuildDate><pubDate>Fri, 17 Aug 2012 12:50:02 GMT</pubDate><ttl>60</ttl><item><title>oracle命令</title><link>http://www.blogjava.net/alexprefect/articles/385612.html</link><dc:creator>alexprefect</dc:creator><author>alexprefect</author><pubDate>Thu, 16 Aug 2012 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/alexprefect/articles/385612.html</guid><wfw:comment>http://www.blogjava.net/alexprefect/comments/385612.html</wfw:comment><comments>http://www.blogjava.net/alexprefect/articles/385612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexprefect/comments/commentRss/385612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexprefect/services/trackbacks/385612.html</trackback:ping><description><![CDATA[
<div>查看是否是rac<br />查询v$option表，如果&#8220;Real Application Clusters&#8221;的value为TRUE说明你的oracle已经安装RAC了，如果为FALSE说明没有安装RAC。<br /><br /><br /><u><font color="#0066cc"><strong style="font-size: 18pt;">oracle表空间的物理文件被删除后的解决办法</strong></font></u><br />C:\&gt;sqlplus /nolog<br />SQL&gt; conn / as sysdba<br />已连接接。<br />SQL&gt; shutdown<br />SQL&gt;startup mount<br />--ARCHIVELOG模式命令，文件名要大写<br />SQL&gt;alter database datafile '数据文件名' offline;<br />--NOARCHIVELOG模式命令<br />SQL&gt;alter database datafile '数据文件名' offline drop;<br />SQL&gt;;alter database open;<br />SQL&gt;; select file#,name,status from v$datafile;<br />SQL&gt;; drop tablespace 表空间名;<br /><br />//创建临时表空间<br /><br />create temporary tablespace zfmi_temp<br />tempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf'<br />size 32m<br />autoextend on<br />next 32m maxsize 2048m<br />extent management local;<br /><br />//tempfile参数必须有<br /><br /><br />//创建数据表空间<br /><br />create tablespace zfmi<br />logging<br />datafile 'D:\oracle\oradata\zfmi\zfmi.dbf'<br />size 100m<br />autoextend on<br />next 32m maxsize 2048m<br />extent management local;<br /><br />//datafile参数必须有<br /><br /><br />//删除用户以及用户所有的对象<br /><br />drop user zfmi cascade;<br /><br />//cascade参数是级联删除该用户所有对象，经常遇到如用户有对象而未加此参数则用户删不了的问题，所以习惯性的加此参数<br /><br /><br />//删除表空间<br />前提：删除表空间之前要确认该表空间没有被其他用户使用之后再做删除<br /><br />drop tablespace zfmi including contents and datafiles cascade onstraints;<br /><br />//including contents 删除表空间中的内容，如果删除表空间之前表空间中有内容，而未加此参数，表空间删不掉，所以习惯性的加此参数<br />//including datafiles 删除表空间中的数据文件<br />//cascade constraints 同时删除tablespace中表的外键参照<br /><br /><br />如果删除表空间之前删除了表空间文件，解决办法:<br /><br />如果在清除表空间之前，先删除了表空间对应的数据文件，会造成数据库无法正常启动和关闭。<br />可使用如下方法恢复（此方法已经在oracle9i中验证通过）：<br />下面的过程中，filename是已经被删除的数据文件，如果有多个，则需要多次执行；tablespace_name是相应的表空间的名称。<br />$ sqlplus /nolog<br />SQL&gt; conn / as sysdba;<br />如果数据库已经启动，则需要先执行下面这行：<br />SQL&gt; shutdown abort<br />SQL&gt; startup mount<br />SQL&gt; alter database datafile 'filename' offline drop;<br />SQL&gt; alter database open;<br />SQL&gt; drop tablespace tablespace_name including contents;<br /><br />//创建用户并指定表空间<br /><br />create user zfmi identified by zfmi<br />default tablespace zfmi temporary tablespace zfmi_temp;<br /><br />//identified by 参数必须有<br /><br /><br />//授予message用户DBA角色的所有权限<br /><br />GRANT DBA TO zfmi;<br /><br /><br />//给用户授予权限<br /><br />grant connect,resource to zfmi; (db2：指定所有权限)<br /><br /><br />导入导出命令：<br /><br />Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件， imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库，一个用来测试，一个用来正式使用。<br /><br />执行环境：可以在SQLPLUS.EXE或者DOS（命令行）中执行，<br />DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径，<br />该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。<br />oracle用java编写，SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。<br />SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类，完成导入导出功能。<br /><br />下面介绍的是导入导出的实例。<br />数据导出：<br />1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中<br />&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp full=y<br />2 将数据库中system用户与sys用户的表导出<br />&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)<br />3 将数据库中的表inner_notify、notify_staff_relat导出<br />&nbsp;&nbsp;&nbsp; exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)<br /><br />4 将数据库中的表table1中的字段filed1以"00"打头的数据导出<br />&nbsp;&nbsp; exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"<br /><br />上面是常用的导出，对于压缩，既用winzip把dmp文件可以很好的压缩。<br />也可以在上面命令后面 加上 compress=y 来实现。<br /><br />数据的导入<br />1 将D:daochu.dmp 中的数据导入 TEST数据库中。<br />&nbsp;&nbsp; imp system/manager@TEST file=d:daochu.dmp<br />&nbsp;&nbsp; imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y<br />&nbsp;&nbsp; 上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<br />&nbsp;&nbsp; 在后面加上 ignore=y 就可以了。<br />2 将d:daochu.dmp中的表table1 导入<br />imp system/manager@TEST file=d:daochu.dmp tables=(table1)<br /><br />基本上上面的导入导出够用了。不少情况要先是将表彻底删除，然后导入。<br /><br />注意：<br />操作者要有足够的权限，权限不够它会提示。<br />数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。<br /><br />附录一：<br />给用户增加导入数据权限的操作<br />第一,启动sql*puls<br />第二，以system/manager登陆<br />第三，create user 用户名 IDENTIFIED BY 密码 （如果已经创建过用户，这步可以省略）<br />第四，GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,<br />&nbsp;&nbsp; DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字<br />第五, 运行-cmd-进入dmp文件所在的目录,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imp userid=system/manager full=y file=*.dmp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者 imp userid=system/manager full=y file=filename.dmp<br /><br />执行示例:<br />F:WorkOracle_Databackup&gt;imp userid=test/test full=y file=inner_notify.dmp<br /><br />屏幕显示<br />Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006<br />(c) Copyright 2000 Oracle Corporation. All rights reserved.<br /><br />连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production<br />With the Partitioning option<br />JServer Release 8.1.7.0.0 - Production<br /><br />经由常规路径导出由EXPORT:V08.01.07创建的文件<br />已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入<br />导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)<br />. 正在将AICHANNEL的对象导入到 AICHANNEL<br />. . 正在导入表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "INNER_NOTIFY"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4行被导入<br />准备启用约束条件...<br />成功终止导入，但出现警告。<br /><br /><br />附录二：<br />Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.<br />先建立import9.par,<br />然后，使用时命令如下：imp parfile=/filepath/import9.par<br />例 import9.par 内容如下：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROMUSER=TGPMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOUSER=TGPMS2&nbsp;&nbsp;&nbsp;&nbsp; （注：把表的拥有者由FROMUSER改为TOUSER，FROMUSER和TOUSER的用户可以不同）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROWS=Y<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEXES=Y<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRANTS=Y<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONSTRAINTS=Y<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BUFFER=409600<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file==/backup/ctgpc_20030623.dmp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log==/backup/import_20030623.log<br /><br />服务器端<br />select userenv('language') from dual;<br />select * from nls_database_parameters<br />客户端<br />select * from nls_instance_parameters;<br /></div> 
 
 
<img src ="http://www.blogjava.net/alexprefect/aggbug/385612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexprefect/" target="_blank">alexprefect</a> 2012-08-16 15:45 <a href="http://www.blogjava.net/alexprefect/articles/385612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>