A. sql plus如何正确导出dmp文件
sqlplus中
$exp username/password@servername owner=username rows=y file=D:\sample.dmp
log=D:\sample.log;
或者
$exp username/password@servername owner=username rows=y file=D:\sample.dmp
log=D:\sample.log statistics=none;
$imp username/password@servername fromuser=fromUserName touser=toUserName
file=D:\sample.dmp rows=y log=D:\sample.log;
B. 怎么在SQLplus下导出建表脚本
spool 你想要导入的目录/schema.sql
conn user/password;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
spool off;
C. 如何用命令在PLSQL脚本中导出oracle数据库中的多个表
--逻辑备份
--导出ORACLE参数
参数 说明
USERID 确定执行导出实用程序的用户名和口令
BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示
FILE 指定导出的二进制文件名称,默认的扩展名是.dmp
FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数
OWNER 要导出的数据库用户列表
HELP 指定是否显示帮助消息和参数说明
ROWS 确定是否要导出表中的数据
TABLES 按表方式导出时,指定需导出的表和分区的名称
PARFILE 指定传递给导出实用程序的参数文件名
TABLESPACES 按表空间方式导出时,指定要导出的表空间名
--导出
--全库导出
exp system/accp@accp --在后面的参数中选择E
--按用户方式导出
exp system/accp@newer file=d:\exp.dmp owner=scott,system
--按表方式导出
exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab
--按表分区方式导出
exp scott/tiger@accp tables=(emp:p3) file=scott_back_tab
--按表空间方式导出
exp system/aptech@accp tablespaces=(users) file=tbs_users
--按参数文件方式导出,将要导出的命令写在文本文件中
exp system/aptech parfile='C:\parameters.txt'
--导入ORACLE参数
参数 说明
USERID 指定执行导入的用户名和密码
BUFFER 指定用来读取数据的缓冲区大小,以字节为单位
COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交
FILE 指定要导入的二进制文件名
FROMUSER 指定要从导出转储文件中导入的用户模式
TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同
FULL 指定是否要导入整个导出转储文件
TABLES 指定要导入的表的列表
ROWS 指定是否要导入表中的行
PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数
IGNORE 导入时是否忽略遇到的错误,默认为N
TABLESPACES 按表空间方式导入,列出要导入的表空间名
--导入
--整个文件导入
imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y
--特定用户的表导入到指定的用户下面
imp system/aptech@accp file=d:\item_back.dmp fromuser=scott touser=martin tables=(emp,dept)
--参数文件方式导入,将要导入的命令文本写在文件中
imp system/oracle parfile='C:\parameters.txt'
--物理备份
冷备份
1. connect sys/sys@newer as sysdba
2. shutdown immediate
3. 复制 oracle目录中的oradata\oradb的子目录中的所有文件 到备份的目录中
冷恢复
1.将数据文件还原回所在位置 ,然后启动数据库
2.starup
进行热备份必须处于“归档日志模式下”
1.启动sqlplus ,并以sysdba方式链接到数据库系统,输入下列命令看看是否处于归档模式
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 d:\oracle\ora92\RDBMS
最早的概要日志序列 1
当前日志序列 3
2. 启动归档日志模式
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 109051904 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list
数据库日志模式 存档模式
自动存档 禁用
存档终点 d:\oracle\ora92\RDBMS
最早的概要日志序列 1
下一个存档日志序列 3
当前日志序列 3
3.关闭存档模式, alter data base noarchivelog
--查看归档日志方式,在SQL_PLUS中,不能在PL/SQL中
conn sys/accp@accp as sysdba;
archive log list;
--查看归档日志信息
SELECT DEST_ID,DEST_NAME,STATUS,DESTINATION
FROM V$ARCHIVE_DEST WHERE STATUS='VALID';
--查看归档日志的日志
SELECT DEST_ID,NAME,ARCHIVED
FROM V$ARCHIVED_LOG;
--在命令行中操作数据库
--登录
sqlplus sys/accp@newer as sysdba
--关闭数据库
shutdown immediate
--启动数据库
startup restrict
startup mount
--修改归档日志模式
alter database archivelog
ARCHIVELOG模式的优点:
·有可能进行完全恢复。由于对数据库所做的全部改动就保存在日志文件中,如果因为包括介质失效在内的某种失效而导致数据库文件丢失的话,可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。所有已经提交的事务都可以查到。
·有可能进行联机备份。允许用户在进行数据备份的同时使用数据库。
·表空间可以立即脱机。
·如果一个分布式数据库系统的所有节点都运行在ARCHIVELOG模式下,可以进行分布式恢复。
·提供更多的恢复选择。
·通过使用一个备用数据库,能够提供最大限度的灾难保护手段。
ARCHIVELOG模式的缺点:
·保存归档日志文件需要更多的磁盘空间。
·DBA需要更多的时间来管理数据库。
NOARCHIVELOG模式的特点:
·由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。
·必须进行完整的数据库备份,不能仅备份部分数据库。
·不能进行联机备份,脱机备份过程中不能使用数据库。
·表空间不能立即脱机。
·DBA的管理的工作减少
采用Oracle ArchiveLog模式和非ArchiveLog模式对备份恢复的影响
备份的目的在于,当系统或数据库出现问题时,能够快速将数据库进行恢复。对于Oracle数据库,一般有两种备份方式:“物理备份”和“逻辑备份”。“物理备份”指的是以数据文件方式进行备份;“逻辑备份”指的是用export等方式将数据从数据库中抽取出来。物理备份又可以分为冷备份和热备份。以下是各种备份的说明及前提条件。
- Cold Backup(冷备份) 主要指在关闭数据库的状态下进行的数据库完全备份,备份内容包括所有数据文件、控制文件、联机日志文件、ini文件。
- Hot Backup(热备份) 指在数据库处于运行状态下,对数据文件和控制文件进行备份,要使用热备份必须将数据库运行在(Archive Log)归档方式下。
- Export(逻辑备份)这是最简单的备份方法,可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三种方式。使用这种方法,数据库必须处于打开状态,而且如果数据库不是在restrict状态将不能保证导出数据的一致性。
“物理备份”方式以相当于数据文件的方式进行备份,恢复时可以快速以相当于的方式将备份的数据回来,所以备份速度特别是恢复速度非常快。
如果不采用Archive Log模式运行Oracle数据库,只有两种可用的备份方法:冷备份或export逻辑备份。根据关键业务服务器的特点,停下数据库进行冷备份是根本不可能的,因此如果不采用Archive Log,只能进行逻辑备份。
如果仅采用“逻辑备份”方式,恢复时会有以下两个主要问题:
1. 无法恢复到最近时间点的数据。只能恢复到上一次export时的数据状态,当天的数据将丢失。Archive Log模式下的物理备份可以用数据文件备份及Archive Log备份,将数据库恢复到数据库失败前的时间点,不会丢失数据。
2. 完成恢复可能需要很长时间。恢复只能用import方法进行,所以需要的时间包括:
a. create database及所有的tablespace: 以每2分钟初始化一个2G的数据文件来计算,建立一个400G的Oracle数据库需要约6.7个小时。
b. import。时间较难确定,但保守估计应在10个小时以上(如果import过程中出现问题,恢复时间将延长)
3. 恢复时步骤较多,易出现人为故障。
由于 这些原因,一般备份/恢复时都把export/import的方式做为辅助备份/恢复方式,对一些重要的表进行二级保护。这种备份方式也称为“逻辑备份”方式,当某些重要的表被意外删除时可进行逻辑import恢复。
而对于整个数据库的日常备份/恢复,需要采用“物理备份”方式,即以相当于数据文件的方式进行备份,恢复时可以快速以相当于的方式将备份的数据回来。一般物理备份/恢复都采用Oracle RMAN工具来进行。
下面是“逻辑备份”与“物理备份”在数据库故障时的恢复比较:
1. Oracle逻辑错误造成无法启动
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将所有datafile 回来,并利用archivelog将数据库recover到故障前的状态
2. 某一个datafile故障或丢失
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将该datafile 回来
3. 某一个tablespace故障
逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据
物理恢复: 将该tablespace 回来
4. 意外drop table
逻辑恢复: Import 该table
物理恢复: 将备份恢复到另一服务器上,export该table,在原数据库中import
5. 意外drop user
逻辑恢复: Import 该user
物理恢复: 将备份恢复到另一服务器上,export该user,在原数据库中import
6. 意外drop tablespace
逻辑恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析
物理恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析
在进行数据库的恢复时,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况:
- Oracle程序文件损坏?
- control file损坏?
- Online redo log损坏?
- datafile损坏?
- archive log损坏?
- table或其中数据被意外删除?
不同情况下需要采用的恢复手段都是不尽相同的,需根据损坏的情况进行相应的恢复步骤。
D. sql plus 中数据怎么输出
可以导出到excel中,你可以使用一个工具,plsql developer,很好用的。
把EXCEL倒入数据库,你可以用pb来做,不过首先你要用把excel变成txt文件,具体方法你可以在网上找,很多的。或者borland的导入导出工具,等等,很容易实现!
当然如果你实在不情愿用其他软件导的话
使用SQLPLUS自带的SPOOL命令也可以完成。
通过sql*plus输出xls,html两种格式文件.
首先创建两个脚本:
1.main.sql
用以设置环境,调用具体功能脚本
2.功能脚本-get_tables.sql
为实现具体功能之脚本
通过这样两个脚本可以避免spool中的冗余信息,参考:
如何去除SQLPLUS中SPOOL的冗余信息
示例如下:
1.main.sql脚本:
[oracle@jumper utl_file]$ more main.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
spool tables.xls
@get_tables.sql
spool off
exit
2.get_tables.sql脚本:
[oracle@jumper utl_file]$ more get_tables.sql
select owner,table_name,tablespace_name,blocks,last_analyzed
from all_tables order by 1,2;
3.执行并获得输出:
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @main
SQL*Plus: Release 9.2.0.4.0 - Proction on Mon Apr 25 10:30:11 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls
E. SQL plus 中数据怎么样输出
/ as {sysdba|sysopr}:使用操作系统用户验证,以osdba或osopr一员的身份登录,如验证通过,被赋予sysdba或sysopr的权限
使用格式:sqlplus "/ as sysdba"
/nolog:不执行connect操作,直接进入sqlplus操作界面
-s:silent模式,不显示sqlplus启动信息和提示符
<:接受sql脚本从标准输入重定向
<<:立即文档
4.4.2 提示符命令
accept variable [number|char|date] [format format] [default default] [prompt text] [hide]:接受输入变量
例子:accept pwd char format a8 prompt Password: hide
column column [format format] [heading heading]:设定对某个域的显示格式
如果要同时改变某域的输出长度和标题,必须使用column命令
见emp的定义,name本为char(20),输出缩为10位,ty本为 char(1),扩张为6位,以便有足够的空间显示中文标题。
SQL>column name format a10 heading 姓名;
SQL>column ty format a6 heading 职位;
SQL>column age format 999999 heading 年龄;
SQL>column upd_ts format a14 heading 更新时间;
SQL>select name,ty,age,upd_ts from emp;
show option:显示SET的选项
spool [filename|off]:输出重定向文件
timing [start text|show|stop]:定时器
4.4.3 SET选项
autocommit:自动提交insert、update、delete带来的记录改变,缺省为off
colsep:域输出分隔符
define:识别命令中的变量前缀符,缺省为on,也就是&,碰到变量前缀符,后面的字符串作为变量处理
如果待更新内容包含&(在URL中很常见),而define非设为off,sqlplus会把&后面紧跟的字符串当成变量,提示输入,这里必须重新输入&和那个字符串,才能实现正常更新。将define设为off,就不再进行变量判断。
SQL>set define off;
SQL>update bbs_forum set url=http://www.xxx.com/bbs/show.php&forum_id=1 where forum_id=1;
echo:显示start启动的脚本中的每个sql命令,缺省为on
feedback:回显本次sql命令处理的记录条数,缺省为on
heading:输出域标题,缺省为on
linesize:输出一行字符个数,缺省为80
如果一行输出超过linesize,会回车到第二行,这样格式就会混乱。
markup html:html格式输出,缺省为off
通常需要与spool配合,否则html输出就没有意义。
numwidth:输出number类型域长度,缺省为10
长number类型的域常常因为输出长度的问题,引起误会。
pagesize:输出每页行数,缺省为24
为了避免分页,可设定为0。
termout:显示脚本中的命令的执行结果,缺省为on
timing:显示每条sql命令的耗时,缺省为off
trimout:去除标准输出每行的拖尾空格,缺省为off
trimspool:去除重定向(spool)输出每行的拖尾空格,缺省为off
4.4.4 例子
以文本形式下载表数据
oracle缺乏将表中数据输出至文本文件的工具,因此只能利用sqlplus和unix工具做变通的处理
sqlplus -s dbuser/oracle </dev/null
set colsep |;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 1000;
set numwidth 12;
set termout off;
set trimout on;
set trimspool on;
spool tmp.txt;
select * from emp;
spool off;
exit
EOF
tr -d < tmp.txt >emp.txt 删除空格,可选
注意:一定要用spool,如果在命令行中直接用>tmp.txt可能会造成数据缺失,至少在Unixware7上如此
假定某域是char(n),如中间出现回车\n,则下载出的这条记录的格式将会错乱,不宜采用此方法
F. 如何使用SQL语句将Oracle数据库表导出为TXT文件
可用spool的方式将oracle的数据导出成文本。
1、登录sqlplus到指定数据库。
2、在某一路径,如c盘data目录下,创建脚本,文件名为:导出脚本.sql 内容如下:
set colsep '|' --设置|为列分隔符
settrimspoolon
setlinesize120
setpagesize2000
setnewpage1
setheadingoff
settermoff
setnum18
setfeedbackoff
spoolc:data导出.txt
select*fromemp;
spooloff
3、执行命令:
@C:data导出脚本.sql
4、执行结束后,c盘data目录下会生成导出.txt的文件,里边内容就是导出表中的内容。
G. 如何用SQLPLUS导出建表的脚本
您好,我来为您解答:
select dbms_metadata.get_ddl('TABLE','T') from al;
希望我的回答对你有帮助。
H. 怎么在SQLplus下导出建表脚本
应该是工具栏里有个 f9 你截图出来 我也记不清了,,就两三个步骤
I. 如何使用sqlplus导出oracle数据库
1、获取帮助:
exp help=y
2. 导出一个完整数据库
exp user/pwd@instance file=path full=y
示例:exp system/system@xc file = c:/hehe full =y
3 、导出一个或一组指定用户所属的全部表、索引和其他对象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
示例:exp system/system@xc file=c:/hehe owner=uep
4、导出一个或多个指定表
exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)
5、导入一个数据库文件
imp username/password@orcl file=F:/work/ahsxmgl/db/ahsxmgl0630.DMP full=y
J. oracle sqlplus导入数据脚本 如何输出日志
如果用命令,需要在命令提示符下操作,如果用PLSQL的话,直接有导出工具,各自方法如下:命令提示符