http://blog.csdn.net/lili72
背景:由于歷史緣由,公司部份業(yè)務(wù)還在使用oracle中。1出問題就是弄的很麻煩。由于長時間使用的是mysql 和hive,Hbase等,1些oracle的命令漸漸的也是忘記了,但是公司某些在oracle上的業(yè)務(wù),突然出現(xiàn)問題,每次查找問題都查得比較費力,現(xiàn)把經(jīng)常使用命令記錄下來。
常遇到的oracle的問題:
1.0 遠(yuǎn)程登錄到oracle。
1.0.1 ssh root@192.168.119.132 -p22330
su oracle
1.0.2 ps -ef | grep oracle
找到oracle的位置
進(jìn)入sqlplus
sqlplus /nolog
conn /as sysdba
1.1 oracle密碼過期,連接失敗
1.1.1 查看用戶
select * from dba_profiles where resource_type='PASSWORD';
1.1.2 設(shè)置無過期
alter profile DEFAULT limit unlimited;
alter profile DEFAULT limit password_reuse_time unlimited;
1.2 oracle的表分區(qū)超限,插入數(shù)據(jù)失敗 由于oracle的范圍分區(qū)
新增表分區(qū):
alter table bi_test_1215_test_del add partition t_range_p132 values less than (to_date('20150110','yyyymmdd')) tablespace USERS storage ( initial 64K minextents 1 maxextents unlimited ) ;
1.3 oracle的表空間滿了,需要擴(kuò)大。
1.3.2 查看表空間占用情況:
SELECT tbs 表空間名,
sum(totalM) 總共大小M,
sum(usedM) 已使用空間M,
sum(remainedM) 剩余空間M,
sum(usedM)/sum(totalM)*100 已使用百分比,
sum(remainedM)/sum(totalM)*100 剩余百分比
FROM(
SELECT b.file_id ID,
b.tablespace_name tbs,
b.file_name name,
b.bytes/1024/1024 totalM,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
sum(nvl(a.bytes,0)/1024/1024) remainedM,
sum(nvl(a.bytes,0)/(b.bytes)*100),
(100 - (sum(nvl(a.bytes,0))/(b.bytes)*100))
FROM dba_free_space a,dba_data_files b
WHERE a.file_id = b.file_id
GROUP BY b.tablespace_name,b.file_name,b.file_id,b.bytes
ORDER BY b.tablespace_name
)
GROUP BY tbs
1.3.2 擴(kuò)大表空間:
--增加數(shù)據(jù)文件
alter tablespace USERS add datafile '/data2/oracle/users02.dbf' size 50m;
1.4 oracle的鎖表處理
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
或:
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
刪掉鎖表語句:
alter system kill session '198';
1.5 oracle語句優(yōu)化,新增索引,建分區(qū)表
1.5.1 首先斟酌查詢條件 建索引。
創(chuàng)建: create index inde_name on table_name (col_name) tablespace users storage ( initial 500k next 500k pctincrease 0 )
查詢:select * from dba_indexes where table_name ='t_li72';
1.5.2 數(shù)據(jù)量實比較大,斟酌建分區(qū)表。
create table li72_test_deal
(
LOGDATE DATE,
FILENAME VARCHAR2(600)
)
partition by range(logdate)(
partition t_range_p1 values less than (to_date('20140901','yyyymmdd')),
partition t_range_p2 values less than (to_date('20140902','yyyymmdd')),
Sqoop到oracle的語句:從hive到oracle
按分區(qū)選擇列同步數(shù)據(jù)到oracle中
sqoop export --connect jdbc:oracle:thin:@192.1.118.210:1521:orcl --username biuser --password biusertmp --table li72.tmp_SRC_PLAY_LH_1203_temp --columns LOGDATE,FILENAME,SINGER,SONG,SEARCHOVERPLAY,SEARCHPLAY,OVERPLAY,UNINPUTKEY,INPUTPARTKEY,INPUTALLKEY,MP3OVERPLAY,MVOVERPLAY,MVRANDOMPLAY,MP3RANDOMPLAY,TRYPLAY,DOWNLOAD,SEARCHCLICK,SEARCH,PLAY --export-dir /user/hive/warehouse/bi_test.db/li72_hoer_sear_play/dt=${vDay} --input-fields-terminated-by '|'
從oracle到hive中:
sqoop import--hive-import --connect jdbc:oracle:thin:@192.116.80.118:1521:CUSTOMER2--username biuser --password biusertmp --verbose -m 1 --table class_type