oracle資料備份經歷

2021-08-26 22:00:51 字數 2972 閱讀 3700

前段時間,領導安排個任務,從現有開發庫整理乙個初始資料環境出來。各種沒有文件沒有頭緒,各種抱怨拋開不說。連環境也沒有,網路也不好。於是,悲劇開始。主要是字符集的問題。

一篇較好的oralce字符集教程:[url]

由於沒有空的庫供我使用,只能自己弄乙個。有由於網路超級差,下個oralce服務端慢的要命,所以別人那裡拿了個oracle 10g express edition。不過oracle xe目前的beta2預設安裝的字符集是we8mswin1252,不是中文字符集,而且不能在安裝時配置。並且因為zhs16gbk不是預設字符集的超集,所以不能通過直接執行

alter  database  character  set  zhs16gbk  ;
來修改。

檢視當前字符集的**:

select userenv('language') from dual;

於是,網上搜了一圈,找到乙個還算勉強的辦法:

connect  system/oracle9i  as  sysdba 

shutdown immediate

startup mount

alter system enable restricted session ;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open ;

alter database character set internal_use zhs16gbk ;

shutdown immediate

startup

不過這個辦法會使得web控制台不可用。

所以各種操作需要使用sqlplus來執行命令列。

以dba身份登入到資料庫

connect sys/sys123456 as sysdba;

建立臨時表空間

create temporary tablespace test_temp 

tempfile 'e:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'

size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

建立表空間

create tablespace test_data

logging

datafile 'e:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'

size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

建立使用者並指定表空間

create user testserver_user identified by testserver_user

default tablespace test_data

temporary tablespace test_temp;

授權

grant connect,resource to testserver_user;

由於一開始字符集的問題沒搞清楚,所以匯入的時候報錯,經常需要刪除重建。

drop user testserver_user cascade;

各種方式的資料匯出

--將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d:daochu.dmp中

exp system/manager@test file=d:daochu.dmp full=y

--將資料庫中system使用者與sys使用者的表匯出

exp system/manager@test file=d:daochu.dmp owner=(system,sys)

--將資料庫中的表inner_notify、notify_staff_relat匯出

exp aichannel/aichannel@testdb2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

--將資料庫中的表table1中的字段filed1以"00"打頭的資料匯出

exp system/manager@test file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"

資料的匯入

--將d:daochu.dmp 中的資料匯入 test資料庫中。

imp system/manager@test file=d:daochu.dmp

--如果表已存在,忽略錯誤

imp aichannel/aichannel@hust full=y file=d:datanewsmgnt.dmp ignore=y

--將d:daochu.dmp中的表table1 匯入

imp system/manager@test file=d:daochu.dmp tables=(table1)

資料在匯入匯出時,會有幾個地方發生字符集轉換:

1.匯出時,服務端到當前session的字符集轉換

2.匯入時,dmp的字符集到目標資料庫的字符集轉換

所以一般統一字符集為上,主要是修改nls_lang環境變數。

oracle資料備份

資料庫備份 dmp檔名稱 log檔名稱 true 備份成功 false 備份失敗 public static bool dbbackup string dmpfilename,string logfilename 如果log檔案不存在,建立檔案並釋放 if file.exists logfilena...

oracle 資料備份

1 匯出別的主機上使用者的所有資訊 直接在dos下寫就可以了,不需要進入資料庫 匯出所有物件 表 儲存過程 檢視 觸發器.exp gjfj web gggggg wangzhan file d 1129.dmp full y compress y log d x exp.log 匯出固定表 exp ...

ORACLE 備份查詢資料

oracle 備份查詢資料 create table 表名 as select 語句insert insert into 表名 列名1,列名2,列名3.values 值1,值2,值3.在 oracle 中,乙個 insert 命令可以把乙個select結果集一次性插入到一張表中。insert int...