今天在研究了一下關于ORACLE的導入導出的功能,周五快要下班的時候給同事新建一個表空間,將同一個數據庫中的某個用戶下的表導入新的表空間上,建好表空間和用戶后,直接用 exp ,imp 來導入數據到新的表空間,查是發現后來導入的數據還在原來的表空間上,(周五那天的我是用工具編輯DMP文件,修改里的表空間名后導入的),后來想起來了eygle的書上寫了關于這個的問題,于是今天就來試驗了一下。
第一種:修改用戶的一些權限。
首先使用sytem帳戶登陸
--創建新表空間的用戶
SQL> create user pangzi identified by pangzi default tablespace pangzi temporary tablespace temp;
用戶已創建。
--授給新用戶一般的權限
SQL> grant export full database to pangzi;
授權成功。
SQL> grant import full database to pangzi;
授權成功。
SQL> grant connect,resource to pangzi;
授權成功。
SQL> grant create procedure to pangzi;
授權成功。
SQL> grant create job to pangzi;
授權成功。
SQL> grant create view to pangzi;
授權成功。
SQL> grant create synonym to pangzi;
授權成功。
--從這里開始將是增加的,為了使導入的數據,不放在原來的表空間上
SQL> grant dba to pangzi;
--收回用戶的umlimited tablespace權限
SQL> revoke unlimited tablespace from pangzi;
--設置新創建的用戶可使用syb表空間的大小0(原數據所在的表空間為syb)
SQL> alter user pangzi quota 0 on syb;
--設置新創建的用戶可使用pangzi表空間的大小不限制
SQL> alter user pangzi quota unlimited on pangzi;
--收回DBA權限
SQL> revoke dba from pangzi;
執行導入數據
C:\Users\dyspangzi>imp pangzi/pangzi@testdev file=syb.dmp full=y
Import: Release 10.2.0.3.0 - Production on 星期六 4月 21 17:48:54 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 創建的導出文件
警告: 這些對象由 SYB 導出, 而不是當前用戶
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入
. 正在將 SYB 的對象導入到 PANGZI
. . 正在導入表 "ALL_SALES"導入了 360 行
. . 正在導入表 "COUPONS"導入了 6 行
. . 正在導入表 "CUSTOMERS"導入了 5 行
. .中間部分內容省略,都是導入的信息
. . 正在導入表 "REG_EXPS"導入了 1 行
. . 正在導入表 "SALARY_GRADES"導入了 4 行
即將啟用約束條件...
成功終止導入, 沒有出現警告。
導入成功,我們看導的表已經在新的表空間中了
SQL> show user
USER 為 "PANGZI"
SQL> select table_name,tablespace_name from user_tables;
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
DYSPANGZI PANGZI
CUSTOMERS PANGZI
PRODUCT_TYPES PANGZI
PRODUCTS PANGZI
PURCHASES PANGZI
EMPLOYEES PANGZI
SALARY_GRADES PANGZI
PURCHASES_WITH_TIMESTAMP PANGZI
PURCHASES_TIMESTAMP_WITH_TZ PANGZI
PURCHASES_WITH_LOCAL_TZ PANGZI
COUPONS PANGZI
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
PROMOTIONS PANGZI
ORDER_STATUS PANGZI
PRODUCT_CHANGES PANGZI
MORE_PRODUCTS PANGZI
MORE_EMPLOYEES PANGZI
DIVISIONS PANGZI
JOBS PANGZI
EMPLOYEES2 PANGZI
ALL_SALES PANGZI
PRODUCT_PRICE_AUDIT PANGZI
REG_EXPS PANGZI
已選擇22行。
第二種:使用EXPDP和IMPDP來導入和導出
使用expdp來導出,首先要為一個參數來指定一個路徑——directory,expdp是在服務器端工作,導出的文件需要放在本地目錄,這個參數就是保存導出文件的位置。這個可以自己創建,也可以是默認的,我自己創建了一個,名字是expdir
SQL> CREATE OR REPLACE DIRECTORY expdir AS '/var/backup';
目錄已創建。
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------- ------------------------------- -----------------------------------------
SYS ADMIN_DIR /ade/aime_10.2_lnx_push/oracle/md/admin
SYS DATA_PUMP_DIR /usr/app/oracle/product/10.2.0/db_1/rdbms/log/
SYS WORK_DIR /ade/aime_10.2_lnx_push/oracle/work
SYS EXPDIR /var/backup
--給用戶授予讀寫權限
SQL> grant read,write on directory expdir to syb;
開始導出數據
[oracle@dyspangzi ~]$ expdp dumpfile=syb.dmp directory=expdir;
Export: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:06:46
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYB"."SYS_EXPORT_SCHEMA_01": dumpfile=syb.dmp directory=expdir
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 1.375 MB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
. . exported "SYB"."DYSPANGZI" 48.50 KB 659 rows
. . exported "SYB"."ALL_SALES" 13.68 KB 360 rows
中間導出信息省略
. . exported "SYB"."REG_EXPS" 5.437 KB 1 rows
. . exported "SYB"."SALARY_GRADES" 5.710 KB 4 rows
. . exported "SYB"."PRODUCT_PRICE_AUDIT" 0 KB 0 rows
Master table "SYB"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYB.SYS_EXPORT_SCHEMA_01 is:
/var/backup/syb.dmp
Job "SYB"."SYS_EXPORT_SCHEMA_01" successfully completed at 18:07:11
導出成功后查看一下剛才創建目錄里邊的內容
[root@dyspangzi var]# cd backup
[root@dyspangzi backup]# ls -l
總計 720
-rw-r--r-- 1 oracle oinstall 3472 04-21 18:07 export.log
-rw-r----- 1 oracle oinstall 729088 04-21 18:07 syb.dmp
多了兩個文件,一個是日志文件一個是導出的數據文件,在導入的時候需要這兩個文件。下面開始導入。
===================================================================================
出現了第一個錯誤
[oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi
Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:45:35
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name EXPDIR is invalid
出現了錯誤,后來發現這個是因為新用戶pangzi沒有對目錄的讀寫權限造成的,于是加上權限
SQL> grant read,write on directory expdir to pangzi;
授權成功。
==================================================================================
出現了第二個錯誤
[oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi
Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:47:38
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-31655: no data or metadata objects selected for job
ORA-39154: Objects from foreign schemas have been removed from import
Master table "PANGZI"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "PANGZI"."SYS_IMPORT_FULL_01": pangzi/******** dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Job "PANGZI"."SYS_IMPORT_FULL_01" successfully completed at 18:47:41
這個是由于原來的用戶和現在的不一樣了,加上這個參數就好了 remap_schema=syb:pangzi
=====================================================================================================
下面是沒有任何錯誤的導入了
[oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_schema=syb:pangzi remap_tablespace=syb:pangzi
Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:49:24
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "PANGZI"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "PANGZI"."SYS_IMPORT_FULL_01": pangzi/******** dumpfile=syb.dmp directory=expdir remap_schema=syb:pangzi remap_tablespace=syb:pangzi
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "PANGZI"."DYSPANGZI" 48.50 KB 659 rows
. . imported "PANGZI"."ALL_SALES" 13.68 KB 360 rows
中間部分導入信息省略
. . imported "PANGZI"."PURCHASES_WITH_TIMESTAMP" 5.609 KB 1 rows
. . imported "PANGZI"."REG_EXPS" 5.437 KB 1 rows
. . imported "PANGZI"."SALARY_GRADES" 5.710 KB 4 rows
. . imported "PANGZI"."PRODUCT_PRICE_AUDIT" 0 KB 0 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Job "PANGZI"."SYS_IMPORT_FULL_01" successfully completed at 18:49:37
成功導入!!??!
查看默認的表空間
SQL> select table_name,tablespace_name from user_tables;
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
DYSPANGZI PANGZI
CUSTOMERS PANGZI
PRODUCT_TYPES PANGZI
PRODUCTS PANGZI
PURCHASES PANGZI
EMPLOYEES PANGZI
SALARY_GRADES PANGZI
PURCHASES_WITH_TIMESTAMP PANGZI
PURCHASES_TIMESTAMP_WITH_TZ PANGZI
PURCHASES_WITH_LOCAL_TZ PANGZI
COUPONS PANGZI
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
PROMOTIONS PANGZI
ORDER_STATUS PANGZI
PRODUCT_CHANGES PANGZI
MORE_PRODUCTS PANGZI
MORE_EMPLOYEES PANGZI
DIVISIONS PANGZI
JOBS PANGZI
EMPLOYEES2 PANGZI
ALL_SALES PANGZI
PRODUCT_PRICE_AUDIT PANGZI
REG_EXPS PANGZI
已選擇22行。
此表空間中沒有索引,所以第一種方法也沒有報錯,如果出現有索引的第一種方法還得增加幾步,等我明天找到周五那個數據再來再著做試驗。
-----------------------------------------------------------
今天特意去公司找來了那天導的數據庫,回來做實驗。采用第一種方法不可行,雖然說可以使用IMP 加indexs參數來導出一些索引,但是導入的時候總有莫名其妙的錯誤,估計還是我沒弄好,所以為了省事還是直接用第二種吧,方便,無錯。
1.在Oracle中可以用下面兩種:
01:
create table newtable as select * from oldtable;//用于復制前未創建新表newtable不存在的情況
02:
insert into newtable select * from oldtable;//已經創建了新表newtable 的情況
注意:第一種方式只是復制了表結構,但是主鍵什么的并沒有復制進去,所以用的時候要小心在意。
2.如果想簡單快速的復制表結構,而不需要oldtable里面的數據,可以用下面的語句:
create table newtable as select * from oldtable where 1=2;(把數據過濾掉)
3.如過newtable 和oldtable的表結構不同,可以使用下面的方式:
create table newtable as select s.c1,s.c2 from oldtable s;
4.如果想重新命名newtable的列名:
在oracle中:
create table newtable(id,name1) as select s.c1,s.c2 from oldtable s;
或者
create table newtable as select s.c1 ,s.c2 from oldtable s;
在mysql中恐怕只能用第二種方式了。
5.如果是只需要把一部分的oldtable中的數據添加到newtable中??梢赃@樣:
create table newtable as (select * from oldtable where ...);//加where過濾條件
6.最常見的情況是id列新表中要用,并且和舊表中的不同,使用下面的語句就可以了(我們可以重新建一個sequence)
create table yang(id,name) as select hibernate_sequence.nextval,t.ename from emp t;
7.要注意,導出表的時候不能用select...into語句。
1、查看操作系統版本和內核版本#uname –a
#more /etc/redhat-release
2、創建相關目錄/usr/src/redhat/SOURCES //存放源代碼,補丁,圖標等文件。
/usr/src/redhat/SPECS //存放用于管理rpm制作進程的spec文件。
/usr/src/redhat/BUILD //解壓后的文件存放在這里。
/usr/src/redhat/RPMS //存放由rpmbuild制作好的二進制包。
/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源碼包。
#mkdir -p /usr/src/redhat/
#cd /usr/src/redhat/
#mkdir SOURCES SPECS BUILD RPMS SRPMS
3、下載Nginx源碼包下載源碼包到SOURCES目錄,不需要解壓
#wget http://nginx.org/download/nginx-1.3.9.tar.gz
4、手工創建SPEC文件由于spec文件是由spec語言編寫的,請注意spec語言的語法。
#cd /usr/src/redhat/SPECS/
#cat < nginx.spec > EOC
Summary: High Performance Web Server Name: nginx Version: 1.3.9 Release: el5 License: GPL Group: Applications/Server Source: http://nginx.org/download/nginx-1.3.9.tar.gz URL: http://nginx.org/ Distribution: Linux Packager: JingSheng <jingsheng1@staff.sina.com.cn> %description nginx [engine x] is a HTTP and reverse proxy server %prep useradd nginx -s /sbin/nologin rm -rf $RPM_BUILD_DIR/nginx-1.3.9 zcat $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf - %build cd $RPM_BUILD_DIR/nginx-1.3.9 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module make %install cd $RPM_BUILD_DIR/nginx-1.3.9 make install %preun if [ -z "`ps aux | grep nginx | grep -v grep`" ];then killall nginx >/dev/null exit 0 fi %files /usr/local/nginx |
#:以#開頭是注釋,rpm會忽略它。
Summary:簡單描述軟件。
Name :定義rpm的名稱。
Version: 定義軟件版本
Release: 發行版本
License: 定義許可證
Group: 軟件分類
Source: 源碼下載地址
URL: 源碼相關網站
Distribution: 發行版系列
Packager: 打包人的信息
scription:軟件詳細描述,可多行
%prep :軟件編譯之前的處理,如解壓。
%build :開始編譯軟件,如make
%install :開始安裝軟件,如make install
%files :指定哪些文件需要被打包,如/usr/local/nginx
%preun :定義卸載之前的動作,如殺掉進程。
5、開始RPM制作在制作RPM包之前,需要安裝必要的編譯工具
#yum install -y gcc rpm-build pcre-devel
開始編譯生成rpm包
# rpmbuild-bb nginx.spec
注意:如果安裝生成報錯,請將安裝過的東東全部去除,再重新打包
# rpm –qpl *.rpm 查看rpm包含哪些
最近一直在折騰linux,centos、redhat裝了又裝,到最后還是裝了redhat。
以前多少接觸過linux,但是都不深入(這次雖然也是皮毛,但是稍微知道了一些東東,現在就賣了),這次從零開始自己折騰linux,確實是被linux折騰了。linux跟windows確實有很多不同,有機會再繼續介紹,這次先說一下使用Xmanager遠程連接Redhat的經歷。
Xmanager不多說了,是一款非常不錯的管理工具。但是,如果要讓Xmanager遠程連接redhat,其實遠程連接,主要還是想要做成跟windows的遠程桌面一樣的東西,圖形界面方便啦!
只是這次配置Xmanager相當痛苦,按照網上各種資料對redhat進行配置,然后不停的reboot,但是,xmanager總是連不上。
這其中,修改的文件包括:
/usr/share/gdm/defaults.conf這個gdm的配置文件,主要是以下內容:
Enable=true
DisplaysPerHost=10
Port=177
還有/etc/inittab文件,主要是首先默認級別為5,這個文件貌似在安裝的時候就已經默認為5了。id:5:initdefault:
然后最后一行的“x:5:respawn:/etc/X11/prefdm -nodaemon”調整為:
x:5:respawn:/usr/sbin/gdm
當然,還得改!
依然是/usr/share/gdm/defaults.conf,在[security]中調整以下的值:
AllowRoot=true
AllowRemoteRoot=true
AllowRemoteAutoLogin=true
如果開著防火墻,那還是要放開177端口,我暫時把防火墻關了。
reboot!reboot總是很重要的!
如果上述調整完成之后,依然無法連接,我就是這樣的情況,連接不上啊!?。?!
又隨便找了幾篇文章,也許跟hosts文件有關系哦!
打開/etc/hosts文件一看,空的?。。?/p>
在其中加上127.0.0.1 localhost,reboot,我總是喜歡reboot,這樣比較干凈!比較徹底!
在Xstart中配置好相應的參數,一定要在Commond中選擇“GNOME”,這樣再Run,Xbrowser將久違的redhat桌面打開了!