一、建立用戶/表空間/分配權限/刪除表空間
1)注意表空間存放目錄
2)/*分為四步 */
/*第1步:創建臨時表空間? */
create temporary tablespace yuhang_temp
tempfile 'D:\oracledata\yuhang_temp.dbf'
size 50m?
autoextend on?
next 50m maxsize 20480m?
extent management local;?
/*第2步:創建數據表空間? */
create tablespace yuhang_data?
logging?
datafile 'D:\oracledata\yuhang_data.dbf'
size 50m?
autoextend on?
next 50m maxsize 20480m?
extent management local;?
/*第3步:創建用戶并指定表空間? */
create user yuhang identified by yuhang?
default tablespace yuhang_data?
temporary tablespace yuhang_temp;?
/*第4步:給用戶授予權限? */
grant connect,resource,dba to yuhang;
對于不使用的表空間要徹底刪除
drop tablespace TS_DATA_DB_ZZWK including contents and datafiles;
二:導出oracle的dmp遇到空表的情況
昨天晚上按徐大姐要求給開發導一份測試庫,在導測試庫的過程中遇到了一個情況是,oracle11g,在使用
export時候不支持導出空表,以下是一個簡單的辦法:
1、導出前查詢一下有多少張空表
SELECT TABLE_NAME FROM USER_TABLES WHERE NUM_ROWS=0,如下18張
2、oracle11g不給空表分片Segment(段,自己百度看下),那么我們就給這些空表分配
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
將執行結果導出為tsv文件,如下:
3、將tsv中的語句復制,在sql窗口中執行,然后再導出dmp文件。如下:
再點擊工具欄Tools—Export tables ,打開如下對話框:
三、exp導出dmp
如果oracle的plsql中不能使用export tables命令。那么可以打開cmd窗口,輸入:
2) 導出一張表,如:
Exp bzsf/iflytek2015@BZSF? file=D:/T_RYJBXX.dmp ?tables=(T_RYJBXX)
3) 導出多張表,如:
exp bzsf/iflytek2015@BZSF ?file= D:/T_RYJBXX.dmp ?tables=(T_RYJBXX, T_CLJBXX)
?? 3)導出表中某些值,如:
將數據庫中的表t_uaac_organization中的字段code含有"34180"打頭的數據導出
?exp gsb_test/passwd!@sgy file=E:\xuancheng.dmp tables=(t_uaac_organization) query=\" where code like '%3418%' \"
4) 導出某一個用戶下所有對象,要用超級管理員
exp? workflow_test/123456@192.168.57.180:1521/sgy? file=d:/work.dmp owner=workflow_test
四、導出遇到特殊字符
比如密碼中含有@符號。或者/符號
五、imp導入dmp
1)可以直接通過plsql工具導入。
2)imp workflow_test/123456@192.168.78.121:1521/zzora? file=d:/work.dmp? full=y? ignore=y
六、查看mysql表的詳細信息
登陸mysql服務器,進入mysql數據庫,輸入:
Mysql>Show table status like 'mytable'
Name: mytable #表名
Engine: InnoDB #存儲引擎偉InnoDB
?Version: 10 #mysql版本
Row_format: Compact #行格式。有Dynamic,fixed,Compact等格式。Dynamic是動態行,表字段里面寶航varchar,BloB等不定長字段。fixed是定長行。Compact是行壓縮。
?Rows: 0 #表中的行數
Avg_row_length: 0 #平均每行的字節數
Data_length: 16384 #整個表的數據量(字節)
Max_data_length: 0 #表最大的容量。0表示無限
Index_length: 0 #索引數據占用磁盤空間的大小
Data_free: 10485760 #表示已分配但還未被使用的空間大小。Auto_increment: NULL #下一個AUto_increment的值
Create_time: 2011-08-0622:39:46 #創建時間
Update_time: NULL #更新時間
Check_time: NULL #使用check table等命令時的檢查時間
Collation: utf8_general_ci #默認字符集和字符列排列順序
?Checksum: NULL #如果啟動,則表示整個表的校驗和Create_options: max_rows=4294967295avg_row_length=32 #表創建時的選項 Comment: 1 row inset (0.00 sec)
七、oracle復制表結構和數據
Oracle:
復制表結構及其數據:create table table_name_new as select * from table_name_old
只復制表結構:create table table_name_new as select * from table_name_old where 1=2;
八、查看oracle表空間使用查看
SELECT UPPER(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%'"使用比",
F.TOTAL_BYTES "空閑空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
使用情況
Select
total.tablespace_name,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%'as Used_Pct
from
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
From dba_data_files
Group by tablespace_name) total
Where free.tablespace_name = total.tablespace_name;
九、登錄oracle數據提示異常:表空間問題
擴大表空間:
更改system表空間的數據文件SYSTEM.dbf分配空間
alter database datafile ‘/u04/oradata/truth/system.dbf’ resize 2048M
十、linux?下啟動Oralce
?? a、root用戶關閉防火墻??service?iptables?stop
? ?b、oracle用戶開啟監聽?:
?su?-?oracle?;
lsnrctl?start;
????c、開啟數據庫:
? ???sqlplus?"/as?sysdba"?;?
startup?;?
exit?;
十一、查看oracle字符集、版本、修改字符集
select version from v$instance;
select userenv('language') from dual;--服務端字符集
client字符集修改:在 /home/oracle與 /root用戶目錄下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句;
修改數據庫字符集為UTF-8
1.以DBA登錄
2.執行轉換語句:
復制代碼 代碼如下:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
十二、添加表空間大小
先查看表空間當前情況:
select?tablespace_name,?file_id,?file_name,
round(bytes/(1024*1024),0)?total_space
from?dba_data_files
order?by?tablespace_name
重設大:1:
alter?database?datafile ?'\oracle\oradata\anita_2008.dbf'?resize?4000m
重設大小2:
alter?tablespace?ESPS_2008?add?datafile?'\oracle\oradata\anita_2010.dbf'?size?1000m
十三、數據庫啟動 startup報錯,
啟動的時候提示鄭:MEMORY_TARGET?not?supported?on?this?system
請看:http://www.linuxidc.com/Linux/2012-12/76976.htm 進行學習
vi /etc/fstab 調整內存:
十四、oracle自啟動設置
請看
http://jingyan.baidu.com/article/b2c186c8fe4306c46ef6ff16.html
十五、導入和導出dmp操作
imp?workflow_test/123456@192.168.78.121:1521/zzora?file=d:/work.dmp?full=y
exp?workflow_test/123456@192.168.57.180:1521/sgy?file=d:/work.dmp?owner=workflow_test
十六、表空間名字錯了,修改表空間名字
Alter tablespace XX rename to YY
十七、oracle執行select提示如下
grant select on v_$statname to yztv1_test;
grant select on v_$sesstat to yztv1_test;
grant select on v_$session to yztv1_test;
grant select on v_$mystat to yztv1_test;
?十八、一個用戶yztv1_test查詢另一個用戶workflow_test的表
grant select on workflow_test.wfworkitem to yztv1_test;
grant select on workflow_test.wfwiparticipant to yztv1_test;
十九、數據庫回滾日志文件UNDOTBS01.DBF太大了
?以SYS用戶登錄Oracle 自帶的SQL*PLUS的方法:
1-- 創建一個新的小空間的UNDO TABLESPACE
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF' SIZE 100M REUSE AUTOEXTEND ON;
?2-- 設置新的表空間為系統UNDO_TABLESPACE
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;
3—在配置文件中修改undo_tablespace的設置??????????????????????????????????
D:\oracle\product\10.1.0\db_1\database\initoracle.ora
將其中的undo_tablespace=UNDOTBS1 改為 UNDOTBS2
4—重啟數據庫???????????????????????????????????????????????????????????????
采用命令SHUTDOWN IMMEDIATE 關閉數據庫,然后再采用命令STARTUP 重新開啟數據庫;
二十、建立表空間遇到的問題,權限不足問題
解決方法?對要創建文件的目錄執行?“chown?-R?oracle:oinstall?目錄”,
比如chown -R oracle:oinstall /u01所以這個命令的作用是:
把/u01目錄下的所有文件和目錄的擁有者改為oracle 。
二十一、oracle數據庫日志歸檔滿了
登陸數據庫,彈出如下提示框:
辦法:登陸oracle數據庫服務器
Su - oracle
rman
connect?target?/;
crosscheck archivelog all;
delete?expired?archivelog?all;
DELETE?ARCHIVELOG?ALL?COMPLETED?BEFORE?'SYSDATE-7';
二十二、低效率sql語句(時間長)
select *
?from (select v.sql_id,
?v.child_number,
?v.sql_text,
?v.elapsed_time,
?v.cpu_time,
?v.disk_reads,
?rank() over(order by v.elapsed_time desc) elapsed_rank
?from v$sql v) a
?where elapsed_rank <= 10;
二十三、占用CPU高的sql
select *
from (select v.sql_id,
v.child_number,
v.sql_text,
v.elapsed_time,
v.cpu_time,
v.disk_reads,
rank() over(order by v.cpu_time desc) elapsed_rank
from v$sql v) a
where elapsed_rank <= 10;
二十四、鎖表查詢
--鎖表查詢(用超級管理)
SQLSELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
找到被
ALTER system kill session '23, 1647'鎖定的表,解鎖:
二十五、導出表和表結構
導出表:export tables是一個dmp文件
導出表結構:export users object是一個sql文件
選擇要導出的表名稱。
對于一個sql文件再導入時候,可以點擊File—New—Command Window,
彈出框中,輸入@,選擇導入的sql文件名稱。
二十六、從開發那里導出的dmp文件導入測試庫提示XX表空間不存在
1)請讓開發導出dmp的時候,不要勾選表空間。