數(shù)據(jù)庫(kù)操作
(1)數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出expdp捡遍,impdp
在導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的時(shí)候锌订,經(jīng)常會(huì)用到exp和imp,在數(shù)據(jù)量小的情況下可以隨意使用画株,但是當(dāng)數(shù)據(jù)量大瀑志,表中數(shù)據(jù)有百萬,千萬條的時(shí)候污秆,就要等好久好久好久劈猪。。
oracle官方肯定也考慮到了這樣的問題良拼,于是出現(xiàn)了expdp和impdp战得,這是oracle 10g版本出的一個(gè)新功能,使用數(shù)據(jù)泵導(dǎo)入導(dǎo)出數(shù)據(jù)庸推,據(jù)官方推薦說使用數(shù)據(jù)泵導(dǎo)入導(dǎo)出會(huì)比普通的導(dǎo)入導(dǎo)出快十倍常侦,可以說是非常強(qiáng)大了浇冰。
首先連接到數(shù)據(jù)庫(kù),使用cmd執(zhí)行以下命令
sqlplus /nolog
conn / as sysdba
數(shù)據(jù)庫(kù)泵的步驟(以下是在數(shù)據(jù)庫(kù)所在的電腦上操作)
導(dǎo)出數(shù)據(jù)
-
(a)創(chuàng)建DIRECTORY
即在數(shù)據(jù)庫(kù)所在電腦上創(chuàng)建一個(gè)文件夾聋亡,用來存放導(dǎo)出的dmp文件
create directory expdp_dmp as 'F:/dmpfile'
-
(b)授權(quán)
給當(dāng)前數(shù)據(jù)庫(kù)用戶賦予讀寫文件的權(quán)限
grant read,write on directory expdp_dmp to salespa;
查看權(quán)限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
- (c)執(zhí)行導(dǎo)出
expdp SALESPA/SALESPA@SALESPA directory=expdp_dmp dumpfile=salespa.dmp
導(dǎo)入數(shù)據(jù)
impdp E43001/E43001 directory=expdp_dmp dumpfile=salespa.dmp remap_schema=salespa:E43001 transform=OID:N
REMAP_SCHEMA
該參數(shù)的含義是將一個(gè)用戶的的數(shù)據(jù)遷移到另外一個(gè)用戶肘习,如上從salespa用戶遷移到 E43001用戶上。
transform
在導(dǎo)入數(shù)據(jù)的時(shí)候坡倔,之前的數(shù)據(jù)庫(kù)中可能存在type漂佩,把一個(gè)Object從一個(gè)schema導(dǎo)入到另外一個(gè)schema的時(shí)候(在同一個(gè)數(shù)據(jù)庫(kù)上),如果這個(gè)OID也保持不變的話罪塔,那么就會(huì)出現(xiàn)多個(gè)Object共享同一個(gè)object id的問題投蝉,會(huì)出現(xiàn)invalid object identifier。
設(shè)置transform 參數(shù)為OID:N征堪,意思是新創(chuàng)建的表或這個(gè)類型會(huì)賦予新的OID瘩缆,而不是dmp文件中包含的OID的值。
參考博客地址:
數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出exp和expdp以及imp和impdp的區(qū)別
ORACLE EXPDP命令使用詳細(xì)
ORA-02304: ORACLE導(dǎo)入TYPE
(2)cmd執(zhí)行sql文件
往數(shù)據(jù)庫(kù)中插入數(shù)據(jù)量較大時(shí)佃蚜,例如幾萬庸娱,十幾萬條的時(shí)候,使用PLSQL工具的時(shí)候就會(huì)卡死谐算。這里就要在命令行中執(zhí)行sql語句涌韩。
//1.首先連接到要連的數(shù)據(jù)庫(kù)
sqlplus scott/scott@orcl
//2.@+“sql文件放置的路徑”
SQL> @C:\people.sql
(3)查看Oracle數(shù)據(jù)庫(kù)表空間的使用率
SELECT C.TABLESPACE_NAME,
A.BYTES / 1048576 MEGS_TOTAL,
(A.BYTES - B.BYTES) / 1048576 MEGS_USED,
B.BYTES / 1048576 MEGS_FREE,
(A.BYTES - B.BYTES) / A.BYTES * 100 PCT_USED,
B.BYTES / A.BYTES * 100 PCT_FREE
FROM (SELECT TABLESPACE_NAME,
SUM(A.BYTES) BYTES,
MIN(A.BYTES) MINBYTES,
MAX(A.BYTES) MAXBYTES
FROM SYS.DBA_DATA_FILES A
GROUP BY TABLESPACE_NAME) A,
(SELECT A.TABLESPACE_NAME, NVL(SUM(B.BYTES), 0) BYTES
FROM SYS.DBA_DATA_FILES A, SYS.DBA_FREE_SPACE B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
AND A.FILE_ID = B.FILE_ID(+)
GROUP BY A.TABLESPACE_NAME) B,
SYS.DBA_TABLESPACES C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
AND A.TABLESPACE_NAME = C.TABLESPACE_NAME
ORDER BY 6;
查看所有表空間大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
手動(dòng)修改表空間的大小
查看表空間的目錄
select * from dba_data_file
更改表空間的大小為30G
alter database datafile 'E:\APP\LABOGUEST\SALESPA\SALESPA_INDEX.DBF' resize 30720
(4)ORA-24247: 網(wǎng)絡(luò)訪問被訪問控制列表 (ACL) 拒絕
- 創(chuàng)建訪問控制列表
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'email_server.xml', --這里為任意的文件名,用于刪除時(shí)標(biāo)識(shí)
description => 'ACL for 123.125.50.112',
principal => 'PRODUCE', --此為將來要進(jìn)行操作的用戶
is_grant => TRUE,
privilege => 'connect');
END;
- 將用戶或角色添加到訪問控制列表中
BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
acl => 'email_server.xml', --和創(chuàng)建訪問控制列表中的acl名相同
principal => 'PRODUCE', --要添加的用戶
is_grant => TRUE,
privilege => 'resolve');
END;
- 給網(wǎng)絡(luò)分配訪問控制列表(ACL與郵件服務(wù)器相關(guān)聯(lián))
BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'email_server.xml', --和創(chuàng)建訪問控制列表中的acl名相同
host => '123.125.50.112', --主機(jī)名,域名,ip地址或分配的子網(wǎng)
lower_port => '25',
upper_port => NULL);
END;
- 查詢創(chuàng)建的ACL
SELECT host, lower_port, upper_port, acl FROM dba_network_acls;
SELECT acl,
principal,
privilege,
is_grant,
TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
FROM dba_network_acl_privileges;
- 刪除ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.drop_acl(acl => 'email_server.xml');
COMMIT;
END;
(5)解鎖被鎖的表
在調(diào)試程序的時(shí)候氯夷,有時(shí)debug忘記點(diǎn)結(jié)束臣樱,又去數(shù)據(jù)庫(kù)中操作表,很有可能會(huì)造成鎖表腮考,無法對(duì)該表進(jìn)行操作雇毫。以下是查看被鎖的表和解鎖表的語句。
select a.object_name,b.session_id,c.serial#,c.username,c.command,c.machine,c.lockwait
from all_objects a,v$locked_object b,v$session c where a.object_id=b.object_id and c.sid=b.session_id;
alter system kill session'SID,serial# ';