1、由于oracle運行在Linux系統(tǒng)里面,第一步,我們要連接Linux系統(tǒng)。
為韓城等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及韓城網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、成都網(wǎng)站設計、韓城網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
2、然后我們轉換到oracle安裝用戶里面。 我的是 oracle。
3、然后我們運行oracle的環(huán)境里的變量, 用來輸入相關命令。
4、進去oracle的控制臺。輸入一個命令: sqlplus ?/ as sysdba。
5、如果要啟動數(shù)據(jù)庫,就輸入命令: startup。
6、如果關閉數(shù)據(jù)庫, 就輸入命令: shutdown immediate。
在服務中直接停止即可。
1、以windows10為例,右鍵“此電腦”,選擇“管理”。
2、然后選擇“服務和應用程序”——“服務”。
3、找到oracle的服務,一般名稱為oracleservice+實例名。
4 、右鍵,選擇停止,等待執(zhí)行完畢即可。
禁用oracle 的 XDB服務的方法很簡單,去掉相應的數(shù)據(jù)庫的初始化參數(shù)即可: 編輯$ORACLE_HOME/dbs/initSID.ora文件,去除如下行: dispatchers='(PROTOCOL=TCP) (SERVICE=XDB)'重啟數(shù)據(jù)庫 shutdown immediate; create spfile from pfile; startup;修改XDB服務端口: XDB的http服務就占用8080端口,剛好和JBoss、Tomcat等默認端口沖突,Oracle XDB的端口設置不在配置文件中,而是在數(shù)據(jù)庫里。如下修改XDB的http和ftp服務端口: 使用sys登錄sqlplus,利用dbms_xdb修改端口設置 SQL -- Change the HTTP /WEBDAV port from 8080 to 8081 SQL call dbms_xdb.cfg_update(updateXML( 2 dbms_xdb.cfg_get() 3 , '/xdbconfig/sysconfig/protocolconfig /httpconfig/http-port/text()' 4 , 8081)) 5 / Call completed. SQL -- Change the FTP port from 2100 to 2111 SQL call dbms_xdb.cfg_update(updateXML( 2 dbms_xdb.cfg_get() 3 , '/xdbconfig/sysconfig/protocolconfig /ftpconfig/ftp-port/text()' 4 , 2111)) 5 / Call completed. SQL COMMIT; Commit complete. SQL EXEC dbms_xdb.cfg_refresh; PL/SQL procedure successfully completed.(責任編輯:盧兆林)
1、ORACLE數(shù)據(jù)庫中的外鍵約束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外鍵約束。
2、啟用外鍵約束的命令為:alter
table
table_name
enable
constraint
constraint_name
3、禁用外鍵約束的命令為:alter
table
table_name
disable
constraint
constraint_name
4、然后再用SQL查出數(shù)據(jù)庫中所以外鍵的約束名:
select
'alter
table
'||table_name||'
enable
constraint
'||constraint_name||';'
from
user_constraints
where
constraint_type='R'
select
'alter
table
'||table_name||'
disable
constraint
'||constraint_name||';'
from
user_constraints
where
constraint_type='R'
特總結了Oracle和DB2數(shù)據(jù)庫下如何禁用外鍵約束的方法。
一、Oracle數(shù)據(jù)庫:
禁用約束基本語法:
alter table 數(shù)據(jù)庫表名 disable constraint 約束名
假設現(xiàn)在需要關閉pub_organ的外鍵約束:
1、 首先查詢pub_organ存在哪些外鍵約束,此時需要用到oracle的字典表user_constraints。
select * from user_constraints where table_name='PUB_ORGAN';
上圖就是查詢結果,其中各字段含義如下:
OWNER: 表的所有者
CONSTRAINT_NAME: 約束名稱
CONSTRAINT_TYPE: 約束類型(R代表外鍵,P代表主鍵,C代表check約束)
TABLE_NAME: 表名稱
SEARCH_CONDITION: check約束的具體信息
STATUS: ENABLED表示當前約束是啟用的,DISABLED表示當前約束未啟用。
2、 查詢出表存在哪些約束后,即可以通過alter語句啟用或禁用指定的約束了。
如禁用pub_organ表的外鍵PUBORGAN_FK1,則可以使用如下命令實現(xiàn):
alter table PUB_ORGAN disable constraint PUBORGAN_FK1;
執(zhí)行后,再次查詢字典表user_constraints,如下:
此時往數(shù)據(jù)庫表pub_organ中插入數(shù)據(jù)時就不再受外鍵約束的影響了。
啟用約束基本語法:
alter table 數(shù)據(jù)庫表名 enable constraint 約束名
如現(xiàn)在需要重新啟用pub_organ的外鍵約束,可以使用如下命令:
alter table PUB_ORGAN enable constraint PUBORGAN_FK1;
二、DB2數(shù)據(jù)庫:
禁用約束基本語法:
ALTER TABLE 表名稱 ALTER FOREIGN KEY 約束名稱 NOT ENFORCED
啟用約束基本語法:
ALTER TABLE 表名稱 ALTER FOREIGN KEY 約束名稱 ENFORCED
相關字典表:SYSIBM.SYSTABCONST
如:select * from SYSIBM.SYSTABCONST where tbname='PUB_ORGAN';
各字段含義如下:
NAME: 約束名稱
DEFINER: 定義者
CONSTRAINTTYP: 約束類型(P代表主鍵,F(xiàn)代表外鍵)
TBNAME: 表名稱
ENFORCED: 是否啟用(Y代表啟用,N代表未啟用)
三、封裝成java接口、批量執(zhí)行
在實際工作中,經(jīng)常會將若干個表,或者所有數(shù)據(jù)庫表的外鍵一起禁用,此時需要批量執(zhí)行相關命令,筆者根據(jù)工作實際,使用java封裝了相關接口,以方便使用。
對外暴露接口如下:
/*
* 啟用當前用戶指定tableName的所有外鍵約束
* 入?yún)⑹褂每勺儏?shù)(jdk5新特性)
* 調用方式:
* 1、enableFK("pub_organ")
* 2、enableFK("pub_organ","pub_stru")
* 3、enableFK(new String[]{"pub_organ","pub_stru"})
*/
public static void enableFK(String...tableNames){
disableORenbaleFK(true,tableNames);
}
/*
* 禁用當前用戶指定tableName的所有外鍵約束
*/
public static void disableFK(String...tableNames){
disableORenbaleFK(false,tableNames);
}
/*
* 啟用當前用戶所有表的外鍵約束
*/
public static void enableAllFK(){
disableORenableAllConstraint(true);
}
/*
* 禁用當前用戶所有表的外鍵約束
*/
public static void disableAllFK(){
disableORenableAllConstraint(false);
}
其中核心處理代碼如下:
if(tableNames==null||tableNames.length==0){
throw new RuntimeException("入?yún)ableNames不能為空!");
}
//查詢指定表的外鍵約束
String sql = null;
String dbType = getDBType();
if(dbType.contains("ORACLE")){
sql = "select 'alter table ' || table_name || ' disable constraint ' || constraint_name from user_constraints where constraint_type='R' and TABLE_NAME in(";
if(isEnable){
sql = sql.replace("disable", "enable");
}
}else if(dbType.contains("DB2")){
sql = "select 'ALTER TABLE ' || TBNAME || ' ALTER FOREIGN KEY ' || NAME ||' NOT ENFORCED ' FROM SYSIBM.SYSTABCONST WHERE CONSTRAINTYP='F' and TBNAME in(";
if(isEnable){
sql = sql.replace("NOT ENFORCED", "ENFORCED");
}
}else{
throw new RuntimeException("數(shù)據(jù)庫類型無效(僅支持Oracle和DB2),dbType="+dbType);
}
StringBuffer generateSQL = new StringBuffer(sql);
for(int i=0;itableNames.length;i++){
generateSQL.append(" '");
generateSQL.append(tableNames[i].toUpperCase());//注意須轉換成大寫
generateSQL.append("',");
}
generateSQL.deleteCharAt(generateSQL.length()-1);
generateSQL.append(")");
ListMapString, Object dataSet = DBTool.executeQuery(generateSQL.toString());
//啟用or停止查詢出的外鍵約束
for(int i=0;idataSet.size();i++){
MapString, Object record = dataSet.get(i);
IteratorEntryString, Object itor = record.entrySet().iterator();
while(itor.hasNext())
{
EntryString, Object e = itor.next();
DBTool.executeUpdate(e.getValue().toString(),UpdateType.ALTER);
}
}
在Oracle 10g中,AWR采樣缺省部署于數(shù)據(jù)庫中,那么如何禁用這個功能呢?
在Metalink Note: 436386.1中,Oracle提供了一個增強腳本,稱為: dbmsnoawr.plb 通過這個腳本可以啟用和禁用AWR采樣功能,從原則上,為未購買該部分功能授權的用戶提供了一個退出途徑。
在Oracle Database 11g中,可以通過參數(shù)CONTROL_MANAGEMENT_PACK_ACCESS 控制組件包的訪問。
該腳本的內容如下:
Rem Rem dbmsnoawr.sql Rem Rem Copyright (c) 2006, Oracle. All rights reserved. Rem Rem NAME Rem dbmsnoawr.sql - Declaration of the DBMS_AWR package Rem Rem DESCRIPTION Rem Utilities for disabling and getting status of AWR Rem Rem NOTES Rem Rem MODIFIED (MM/DD/YY) Rem gwood 04/13/07 - created Rem create or replace package dbms_awr as -- PACKAGE dbms_awr -- This package allows users to disable AWR functionality in a Oracle 10g+ database. -- The use of this package is not resticted by licencing of the Diagnostic Pack. -- Additionally this package contains two functions that can be used to determine -- if AWR is currently enabled. -- -- PROCEDURE dbms_awr.disable_awr -- PURPOSE: turns off collections into Automatic Workload Repository -- PARAMETERS: none procedure disable_awr; -- PROCEDURE dbms_awr.enable_awr -- PURPOSE: turns on collections into Automatic Workload Repository. The capture interval -- is set to the default of 60 minutes. -- PARAMETERS: none procedure enable_awr; -- FUNCTION dbms_awr.awr_enabled -- PURPOSE: Returns TRUE if Automatic Workload Repository is performing periodic capture. -- Returns FALSE if Automatic Workload Repository periodic capture is disabled. -- PARAMETERS: none function awr_enabled return boolean; -- FUNCTION dbms_awr.awr_status -- PURPOSE: Returns 'ENABLED' if Automatic Workload Repository is performing periodic capture. -- Returns 'DISABLED' if Automatic Workload Repository periodic capture is disabled. -- PARAMETERS: none function awr_status return varchar2; end dbms_awr; / create or replace package body dbms_awr wrapped a000000 b2 abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd b 27b 1de XeDco+SpVfG9KEZ2ikXc00yhW88wg2P3AK7bfHRAWE7VX0b1S25KKJCp5VrehjNR9oaXoWT1 GGfYVnyl/lLyux308Fmhfp1y9pjrQyux50RY8xmHmiSG2bFbFs2Upn6MLYcfsqsW+joOTKYe 4TyFpXVqzVWS+Tjt8bcmSiai64IVcdOB3Q7Y6kQ8PGwqXqAiy9sFQKD0X6RC/ePGAQzUKwvS 3L8/hKgjdK9Fgw8bb7v1HTq22OJlAv+R/DYCSK57rPmAkyx/XLuXcPo3hcYs8fvUUAO33szW gy5zNau9U7xiyAOExBz9Vh0U7EaMRl6rLr6UXpk/0tk3BW0W/GVo3XfdSzUpGN5aKa1xF2Yh trcMV3KuK/FfIpy0bNDxSQ3LFuOsB8i5xzhj/dCqMxT4dO2awc0hnP3XeLhxWDvcEuqdkR9O u+Z6US/LtRISXt2I8zFq6/aDSuOXTor9KQ1jYA== /
該腳本包含兩個過程和兩個函數(shù),通過disable_awr / enable_awr 就可以禁用或者啟用AWR采樣功能:
SQL @D:dbmsnoawr.plb