這個問題你可能通過查詢oracle的系統表,例如all_all_tables,用這些對象的列表生成一批數據庫刪除對象的語句,然后將這些語句存到文件,用sqlplus的文件參數執行這一批語句。

站在用戶的角度思考問題,與客戶深入溝通,找到寧化網站設計與寧化網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、成都網站建設、企業官網、英文網站、手機端網站、網站推廣、空間域名、網絡空間、企業郵箱。業務覆蓋寧化地區。
不清理失敗的CRS安裝會導致像節點重啟的問題。
按照這些步驟來清理CRS安裝失敗:
1。運行rootdelete.sh腳本從腳本的rootdeinstall.sh
ora_crs_home美元/安裝目錄中的任何節點上你是去除CRS從。運行
這些腳本應該充分清理你的CRS安裝。rootdelete.sh
接受這樣的選項nosharedvar / sharedvar,和nosharedhome / sharedhome。使
自己通過閱讀和使用這些選項,熟悉oracle
應用程序集群管理和部署指南。
如果您有任何問題,這些腳本請打開服務請求。
如果出于某種原因,您必須手動刪除安裝由于問題
隨著腳本,繼續步驟2:
2。停止nodeapps所有節點:
的停止nodeapps N
三.防止CRS開始當節點的靴子。要做這個問題以下為根:
Sun:
RM / etc / init.d/init.cssd
RM / etc / init.d/init.crs
RM / etc / init.d/init.crsd
RM / etc / init.d/init.evmd
RM / etc / rc3.d/k96init.crs
RM / etc / rc3.d/s96init.crs
RM - Rf /無功/選擇/ Oracle / scls_scr
RM - Rf /無功/選擇/ Oracle / oprocd
RM / etc / inittab.crs
CP / etc / inittab.orig /etc/inittab
Linux:
RM / etc / Oracle / *
RM F / etc / init.d/init.cssd
RM F / etc / init.d/init.crs
RM F / etc / init.d/init.crsd
RM F / etc / init.d/init.evmd
RM F / etc / rc2.d/k96init.crs
RM F / etc / rc2.d/s96init.crs
RM F / etc / rc3.d/k96init.crs
RM F / etc / rc3.d/s96init.crs
RM F / etc / rc5.d/k96init.crs
RM F / etc / rc5.d/s96init.crs
RM - Rf / etc / Oracle / scls_scr
RM F / etc / inittab.crs
CP / etc / inittab.orig /etc/inittab
HP-UX:
RM /sbin init.d/init.cssd
RM /sbin init.d/init.crs
RM /sbin init.d/init.crsd
RM /sbin init.d/init.evmd
RM /sbin rc2.d/k960init.crs
RM /sbin rc2.d/k001init.crs
RM /sbin rc3.d/k960init.crs
RM /sbin rc3.d/s960init.crs
RM - Rf /無功/選擇/ Oracle / scls_scr
RM - Rf /無功/選擇/ Oracle / oprocd
RM / etc / inittab.crs
CP / etc / inittab.orig /etc/inittab
HP Tru64:
RM /sbin init.d/init.cssd
RM /sbin init.d/init.crs
RM /sbin init.d/init.crsd
RM /sbin init.d/init.evmd
RM /sbin rc3.d/k96init.crs
RM /sbin rc3.d/s96init.crs
RM - Rf /無功/選擇/ Oracle / scls_scr
RM - Rf /無功/選擇/ Oracle / oprocd
RM / etc / inittab.crs
CP / etc / inittab.orig /etc/inittab
IBM AIX:RM / etc / init.cssd
RM / etc / init.crs
RM / etc / init.crsd
RM / etc / init.evmd
RM / etc / rc.d/rc2.d/k96init.crs
RM / etc / rc.d/rc2.d/s96init.crs
RM - Rf / etc / Oracle / scls_scr
RM - Rf / etc / Oracle / oprocd
RM / etc / inittab.crs
CP / etc / inittab.orig /etc/inittab
4。如果他們不是已經下來,殺死EVM,CRS,和CSS的過程或重新啟動的節點:PS EF | grep CRS殺PS EF | grep EVM殺PS EF | grep CSS殺不殺任何操作系統的過程,例如icssvr_daemon過程!
5。如果沒有其他Oracle軟件運行(如聽眾,DB的,等等),你可以移除/var/tmp /文件。Oracle或/tmp,Oracle。例如:RM -F /var/tmp / Oracle / *或RM F /甲氧芐啶/ Oracle / *。
6。拆下ocr.loc通常ocr.loc可以在/ etc /甲骨文的發現
7。除安裝CRS家在Oracle通用安裝程序
8。除去CRS安裝位置。
9。清理OCR和DD投票文件命令。例子:
DD如果= /dev/zero = / dev / rdsk / v1064_vote_01_20m.dbf BS = 1m數= 256
DD如果= /dev/zero = / dev / rdsk / ocrv1064_100m.ora BS = 1m數= 256
看到施膠要求的集群軟件安裝指南…
如果你把OCR和表決磁盤上的共享文件系統,刪除它們。
如果你刪除數據庫的安裝,還清理出任何ASM磁盤如果
他們已經被使用。
10。/tmp目錄/ CVU *應清洗干凈,也避免了cluvfy誤報。
11。在啟動下一個安裝之前重新啟動節點是很好的做法.。
12。如果你想重新安裝系統,按照oracle的安裝手冊的步驟。
如果直接把OracleHome刪掉,殺掉所有相關進程,重啟機器也可以解決問題,不過我認為這是一種比較粗暴的方式。
1. stop and delete RAC instance, drop the database
2. stop and delete ASM instance
3. stop and delete listener
4. stop crs stack and clean related resource
5. clean ocr context
6. change permission and remove related ORACLE directory and Clusterware directory 其中4,5都可以直接利用Clusterware 目錄install下面的腳本進行,所以這里主要介紹1,2,3,6.1. stop and drop database#!/bin/kshdb=`srvctl config database`
echo “db=$db”
nl=`srvctl config databaes -d $db | awk ‘{print $2}’`
echo “nl=$nl”srvctl stop database -d $db
srvctl remove database -d $db -ffor n in $nldoecho “stop and remove instance on instance $n”
srvctl stop instance -d $db -i $n
srvctl remove instance -d $db -i $n -fdone
echo “stop and remove database instance done”2. stop and drop asm instance#!/bin/kshnl=`olsnodes`for n in $nldosrvctl stop asm -n $n
srvctl remove asm -n $ndone
echo “stop and remove asm done”3. stop and drop listenerlsnr=`crs_stat |grep lsnr | cut -d= -f2`
for l in $lsnrdocrs_stop $l
crs_unregister $ldone
echo “stop and remove listener done”4. stop crs stack and clean related resource 這里需要注意的是,這里的操作必須一個節點一個節點的執行,不能并行操作,就如同安裝的時候執行root.sh一樣!切記切記.on local node:
$ORA_CRS_HOME/install/rootdelete.sh local nosharedvar nosharedhomeon remote nodes:
$ORA_CRS_HOME/install/rootdelete.sh remote nosharedvar nosharedhome5. clean ocronly execute this on local node:
$ORA_CRS_HOME/install/rootdeinstall.sh6. change permission and remove directory
這里之所以要更改權限是因為安裝后期運行root.sh的時候會把ORA_CRS_HOME的父目錄改為root權限,下次安裝的時候必須修改為oracle用戶chown -Rf ractest:oinstall $ORA_CRS_HOME/../../../
刪除大量的oracle的trace文件需要寫shell腳本。
比如刪除一個月前的trace文件
find /u01/app/oracle/diag/rdbms/testgg1/testgg1/trace -mtime +30 -type f -name "*" -exec rm -rf {} \;
可以寫成shell腳本如下:
[oracle@Primary shell]$ vi delete_trace.sh
#! /bin/sh
export ORACLE_SID=testgg1
VALUE=`sqlplus -S "/ as sysdba" EOF_SQLPLus
set pagesize 0 feedback off verify off heading off echo off
select value from v\\\$diag_info where name='Diag Trace';
exit;
END`
find $VALUE -mtime +30 -type f -name "*" -exec rm -rf {} \;
~
配合crontab自動刪除一個月前的trace文件,由于某些數據庫可能會產生trace文件比較多如果沒有及時去清理這些無效的trace文件,很容易導致空間暴漲,做一個job自動去刪除,免去了DBA的煩惱。
Shell可以在DBA的運維過程中帶來了很多的方便,目前正在學習shell,謹以此紀錄并提高自己
大致思路是由DBA_TAB_PARTITIONS查詢TABLE_NAME和HIGH_VALUE,來確定PARTION_NAME,通過SQL生成alter table語句。
由于DBA_TAB_PARTIONS的HIGH_VALUE字段是LONG,這里創建一個自定義包long_help,將LONG轉換為VARCHAR2類型。
create?or?replace?package?long_help
authid?current_user
as
function?substr_of
(?p_query?in?varchar2,
p_from??in?number,
p_for???in?number,
p_name1?in?varchar2?default?NULL,
p_bind1?in?varchar2?default?NULL,
p_name2?in?varchar2?default?NULL,
p_bind2?in?varchar2?default?NULL,
p_name3?in?varchar2?default?NULL,
p_bind3?in?varchar2?default?NULL,
p_name4?in?varchar2?default?NULL,
p_bind4?in?varchar2?default?NULL?)
return?varchar2;
end;
/
create?or?replace?package?body?long_help
as
g_cursor?number?:=?dbms_sql.open_cursor;
g_query??varchar2(32765);
procedure?bind_variable(?p_name?in?varchar2,?p_value?in?varchar2?)
is
begin
if?(?p_name?is?not?null?)
then
dbms_sql.bind_variable(?g_cursor,?p_name,?p_value?);
end?if;
END;
FUNCTION?substr_of
(?p_query?in?varchar2,
p_from??in?number,
p_for???in?number,
p_name1?in?varchar2?default?NULL,
p_bind1?in?varchar2?default?NULL,
p_name2?in?varchar2?default?NULL,
p_bind2?in?varchar2?default?NULL,
p_name3?in?varchar2?default?NULL,
p_bind3?in?varchar2?default?NULL,
p_name4?in?varchar2?default?NULL,
p_bind4?in?varchar2?default?NULL?)
return?varchar2
as
l_buffer???????varchar2(4000);
l_buffer_len???number;
begin
if?(?nvl(p_from,0)?=?0?)
then
raise_application_error
(-20002,?'From?must?be?=?1?(positive?numbers)'?);
end?if;
if?(?nvl(p_for,0)?not?between?1?and?4000?)
then
raise_application_error
(-20003,?'For?must?be?between?1?and?4000'?);
end?if;
if?(?p_query??g_query?or?g_query?is?NULL?)
then
if?(?upper(trim(nvl(p_query,'x')))?not?like?'SELECT%')
then
raise_application_error
(-20001,?'This?must?be?a?select?only'?);
end?if;
dbms_sql.parse(?g_cursor,?p_query,?dbms_sql.native?);
g_query?:=?p_query;
end?if;
bind_variable(?p_name1,?p_bind1?);
bind_variable(?p_name2,?p_bind2?);
bind_variable(?p_name3,?p_bind3?);
bind_variable(?p_name4,?p_bind4?);
dbms_sql.define_column_long(g_cursor,?1);
if?(dbms_sql.execute_and_fetch(g_cursor)0)
then
dbms_sql.column_value_long
(g_cursor,?1,?p_for,?p_from-1,
l_buffer,?l_buffer_len?);
end?if;
return?l_buffer;
end?substr_of;
END;
/
創建一個分區表PART_TABLE,插入三條記錄分別在三個分區中。
CREATE?TABLE?PART_TABLE
(
TABLE_ID?NUMBER(8),
SUB_DATE?DATE
)
PARTITION?BY?RANGE(SUB_DATE)
INTERVAL(NUMTODSINTERVAL(1,'DAY'))
(
PARTITION?P1?VALUES?LESS?THAN(TO_DATE('2017-12-25','YYYY-MM-DD'))
);
INSERT?INTO?PART_TABLE?VALUES(1,DATE?'2017-12-24');
INSERT?INTO?PART_TABLE?VALUES(1,DATE?'2017-12-25');
INSERT?INTO?PART_TABLE?VALUES(1,DATE?'2017-12-26');
COMMIT;
通過SQL生成alter table語句,截斷第一個分區。
這里需要注意查詢條件是HIGH_VALUE,條件為2017-12-25時,截斷的是最大值為2017-12-25的分區。
SELECT?'alter?table?PART_TABLE?truncate?partition?'?||?PARTITION_NAME?||
'?update?INDEXES;'
FROM?(SELECT?TABLE_OWNER,
TABLE_NAME,
PARTITION_NAME,
LONG_HELP.SUBSTR_OF('SELECT?HIGH_VALUE
FROM???DBA_TAB_PARTITIONS?WHERE?TABLE_OWNER=:TABLE_OWNER?
AND?TABLE_NAME=:TABLE_NAME
AND?PARTITION_NAME=:PARTITION_NAME',?1,?4000,?'TABLE_OWNER',?TABLE_OWNER,?'TABLE_NAME',?TABLE_NAME,?'PARTITION_NAME',?PARTITION_NAME)?HIGH_VALUE
FROM?DBA_TAB_PARTITIONS)
WHERE?TABLE_NAME?=?'PART_TABLE'
AND?HIGH_VALUE?LIKE?'%2017-12-25%';
這個問題你可能通過查詢oracle的系統表,例如all_all_tables,用這些對象的列表生成一批數據庫刪除對象的語句,然后將這些語句存到文件,用sqlplus的文件參數執行這一批語句。
網頁名稱:oracle腳本怎么清理 oracle清理日志腳本
網頁鏈接:http://www.yijiale78.com/article30/hhcppo.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、商城網站、外貿網站建設、動態網站、Google、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯