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