㈠ 我想在linux下的oracle11g資料庫實行導入導出,具體應該怎麼做,用戶有syst
一、設置Linux電腦字元集,使其跟電腦上的Oracle資料庫字元集一致;
在Linux命令行界面,
查詢Oracle資料庫字元集:
select * from nls_database_parameters t where t.parameter=』NLS_CHARACTERSET』;
查詢結果:ZHS16CGB231280
然後vi /home/oracle/.bash_profile
export NLS_LANG=american_america.ZHS16CGB231280
source /home/oracle/.bash_profile
二、導出屬於wcall用戶的Oracle資料庫
exp wcall/wcall@eoss file=wcall.dmp owner=wcall; //導出資料庫
三、在Windows中安裝Oracle.10g.for.Windows,(示例中資料庫安裝在D盤,如果按照在其他磁碟,下面創建表空間的時候,需要做相應的修改)然後創建資料庫eoss,注意安裝的資料庫字元集要跟原來資料庫的相同。然後打開sqlPLUS,用system帳戶登陸後創建用戶wcall。
create user wcall identified by wcall; //創建用戶
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 wcall; //授予許可權
create tablespace CC_CALL
logging
datafile 'D:\oracle\proct\10.1.0\Db_1\cc.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local; //創建表空間CC_CALL
create tablespace CC_CALL_HIS
logging
datafile 'D:\oracle\proct\10.1.0\Db_1\cc_his.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local; //創建表空間CC_CALL_HIS
四、導入資料庫
IMP wcall/wcall@eoss fromuser=wcall touser=wcall file=wcall.dmp STATISTICS =none;
㈡ oracle11g導出資料庫時怎麼設置把空表也導出
1、Oracle11g默認對空表不分配segment,故使用exp導出Oracle11g資料庫時,空表不會導出。
2、設置deferred_segment_creation 參數為FALSE後,無論是空表還是非空表,都分配segment。
在sqlplus中,執行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設置後只對後面新增的表產生作用,對之前建立的空表不起作用。
3、可以使用手工為空表分配Extent的方式,來解決導出之前建立的空表的問題。說明如下:
3.1 使用ALLOCATE EXTENT的說明
使用ALLOCATE EXTENT可以為資料庫對象分配Extent。其語法如下:
-----------
ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
-----------
可以針對數據表、索引、物化視圖等手工分配Extent。
ALLOCATE EXTENT使用樣例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer [K | M])
ALLOCATE EXTENT(DATAFILE 'filename')
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename')
ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)
針對數據表操作的完整語法如下:
-----------
ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
-----------
故,需要構建如下樣子簡單的SQL命令:
-----------
alter table aTabelName allocate extent
-----------
3.2 構建對空表分配空間的SQL命令,
查詢當前用戶下的所有空表(一個用戶最好對應一個默認表空間)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根據上述查詢,可以構建針對空表分配空間的命令語句,如下:
-----------
SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
-----------
批量輸出上述生成的SQL語句,建立C:createsql.sql,其內容如下:
-----------
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:allocate.sql;
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off;
-----------
執行C:createsql.sql,命令如下:
-----------
SQL>@ C:createsql.sql;
-----------
執行完畢後,得到C:allocate.sql文件。
打開該文件會看到,已經得到對所有空表分配空間的命令SQL語句。
3.4 執行SQL命令,對空表分配空間:
執行C:allocate.sql,命令如下:
-----------
SQL>@ C:allocate.sql;
-----------
執行完畢,表已更改。
3.4 此時執行exp命令,即可把包括空表在內的所有表,正常導出。
另外:Oracle11g中,對密碼是大小寫敏感的,即密碼中的字母是區分大小寫的。
在Oracle10g中及以前,密碼中的字母大小寫無所謂。
㈢ 如何實現oracle11g和oracle10g的數據互相導入導出
方法/步驟
打開開始菜單中的運行
7
以上是導出的步驟,導入與導出的步驟基本一樣,有不清楚的可以聯系我。
㈣ 關於oracle11g,以用戶的方式導備份資料庫,,
Export/Import有三個級別: 表級, 用戶級和全資料庫級.
table model(按表處理的模式)
backupone user's table(備份一個用戶下的表)
exp test/test
rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0
file=exp_table_yyyymmdd.dmp log=exp_table_yyyymmdd.log
tables=test_table1,test_table2
recoverall table(導入全部備份的表)
imp test2/test2
fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 file=exp_table_yyyymmdd.dmp
log=imp_table_yyyymmdd.log
recoversome table of all table(導入備份的部分表)
imp test2/test2
fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 file=exp_table_yyyymmdd.dmp
log=imp_table_yyyymmdd.log tables=test_table1
user model(用戶模式)
backupall someone's object(備份一個用戶的所有的數據對象)
exp test/test
rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 owner=test file=exp_user_yyyymmdd.dmp
log=exp_user_yyyymmdd.log
recoverall someone's object
imp test2/test2
fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 file=exp_user_yyyymmdd.dmp
log=imp_user_yyyymmdd.log
recoversome table of all someone's object
imp test2/test2
fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 file=exp_user_yyyymmdd.dmp log=imp_user_yyyymmdd.log
tables=test_table1,test_table2,test_table3
full model
backupthe full db for all
exp system/manager
rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y
inctype=complete file=exp_fulldb_yyyymmdd.dmp log=exp_fulldb_yyyymmdd.log
backupthe full db for increment
exp system/manager
rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y
inctype=incremental file=exp_fulldb_zl_yyyymmdd.dmp
log=exp_fulldb_zl_yyyymmdd.log
注意:inctype是8i的9i已經不用了
recoverall date for full backup
imp system/manager
rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0
full=y file=exp_fulldb_yyyymmdd.dmp log=imp_fulldb_yyyymmdd.log
recoverall date for increment backup
imp system/managerrows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y vol
size=0
full=y inctype=restore file=exp_fulldb_zl_yyyymmdd.dmplog=imp_fulldb_zl_yyyymmdd.log