--將原表名用英文的雙引號引起來,便可改名或刪除
我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、陽城ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的陽城網(wǎng)站制作公司
alter table "PRT_QZKAKOU_2019--202003" rename to PRT_QZKAKOU_2019__202003;
改用戶名的用處
至于改名字的用處嘛,在這樣一種情景下非常有用.假如某個公司給每個員工一個賬戶,用戶名就是你的英文名.當(dāng)某個員工arwen要離職了,那就要刪除掉用戶arwen了.但是我們知道oracle中用戶與此用戶下面創(chuàng)建的對象是完全綁定到一起的,而不像sql
server中表等對象是可以和用戶完全分開.這樣的話你一刪掉用戶arwen那下面的數(shù)據(jù)全沒了.假如我們需要那些數(shù)據(jù)咋整呢,最容易想到的是把所有數(shù)據(jù)先導(dǎo)出,然后再導(dǎo)入到某個用戶下面.但這樣比較麻煩.所以如果能改名字就更好點(diǎn)了.
接著用上面的例子.假如又來了新員工,weiwenhp.他是接arwen的班的.所以他很需要用戶arwen下面的數(shù)據(jù).此時就把用戶arwen改成用戶weiwenhp.我們登陸數(shù)據(jù)庫時,數(shù)據(jù)庫系統(tǒng)會判斷我們的用戶名和密碼正確不,那我們自然想到這些信息肯定保存在數(shù)據(jù)庫里面哪個地方,肯定會有一個啥保存用戶信息的表.沒錯,所以用戶信息保存在表user$中.
select
*
from
user$
用這個sql一查你會看到所有用戶名和密碼,還有其他一些信息.不過用戶名都是加密的.所以即使是管理員也看不到任何用戶的密碼,只能改用戶的密碼.
那肯定想,用戶名和密碼在這那我在這里把名字改下就行了啊.實(shí)際上改名就真這么做.
select
user#,
name
from
user$
where
name
=
'ARWEN';
--先瞧下arwen的信息,其中user#就是一個序列號,相當(dāng)于身份證號吧,假如這里是250
update
user$
set
name
=
'WEIWENHP'
where
user#
=
250;
--于是用戶名就改好了啊.當(dāng)然是update語句就記得再commit提交下啊.
還要做的工作
我人知道要是改了密碼的話馬上就生效能用的啊,改名字了咋就不成了呢.
我們知道數(shù)據(jù)庫中很重要的一點(diǎn)是要保證數(shù)據(jù)一致性,某個地方的數(shù)據(jù)更改了,相關(guān)的地方也得跟著改才好.那這里肯定是因?yàn)榈顷憰r讀取的用戶信息還沒有更新.有數(shù)據(jù)不一致性的情況出現(xiàn).你可能會想到有時我們用alter更改一些參數(shù)信息得重啟數(shù)據(jù)庫才能生效.于是你就想不會我改了名還得重啟數(shù)據(jù)庫.這也太恐怖了吧.
實(shí)際上不用重啟數(shù)據(jù)庫拉,你這樣強(qiáng)制更新下.
alter
system
checkpoint;
alter
system
flush
shared_pool;
你再次登陸就發(fā)現(xiàn)可以登陸了啊.而之前的arwen用戶就登不了啊.
由于integer和varchar2是不兼容的數(shù)據(jù)類型,不能直接修改字段類型,可采取如下步驟:
1、如果導(dǎo)入到oracle中的表名是使用中的,先將其改名(用rename)。
2、導(dǎo)出原表的創(chuàng)建腳本,修改自動增長字段的類型為varchar2(50)。
3、用sql語句把原表(重命名后的表)的數(shù)據(jù)插入到新建的表中,原來是integer類型的字段用to_char轉(zhuǎn)換一下就可以了。
連接ORACLE數(shù)據(jù)庫有兩種方式:數(shù)據(jù)庫名和服務(wù)名,數(shù)據(jù)庫名的更改要使用重建控制文件的方式更改.alter database backup controlfile to trace后更改其中數(shù)據(jù)庫名為新名,運(yùn)行該文件
如果要更改目錄,在上面的Trace文件中將文件目錄改為新的文件目錄名稱重建或在mount階段使用alter database rename datafile一一將文件更改過來.
在本例中,假設(shè)原來的數(shù)據(jù)庫名為test,要改成testdb,原實(shí)例名(service_name,instance_name)test,要改成testdb.nid是自帶的工具,在oracle_home/bin目錄中.以下方法假設(shè)登陸到數(shù)據(jù)庫本機(jī)做。1.1 sqlplus "sys/password as sysdba"1.2 sqlshutdown immediate --先停掉數(shù)據(jù)庫1.3 sqlstartup mount --nid需要在mount狀態(tài)下才能做。1.4sqlhost nid target=sys/password dbname=new_dbname --nid是一個在操作系統(tǒng)下執(zhí)行的命令,在sqlplus環(huán)境中用host 去調(diào)用操作系統(tǒng)環(huán)境下的命令。命令中,當(dāng)你想將數(shù)據(jù)庫名字改為TESTDB時,應(yīng)寫成dbname=testdb1.5執(zhí)行后程序會詢問:Change database ID and database name TEST to TESTDB? (Y/[N]) =y敲y確定。之后程序會對控制文件,數(shù)據(jù)文件進(jìn)行修改:
請采納。