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的話,直接有導出工具,各自方法如下:命令提示符