用sqlplus建立表相關紀要

打開sqlplus。
登陸的時候輸入帳戶密碼:system/p*****

好像,需要選擇以什麼角色進入,忘記了。
顯示當前數據庫的sid:
 select name from v$database;

結果是和我在enterprise manager console裏面得到的一樣:zaka.

show user 顯示出當前連接的用戶。

select username,default_tablespace from user_users;
這裏就可以顯示當前用戶和當前用戶默認的表空間,結果都是system,正常。

select * from user_sys_privs;
select * from user_tables;顯示當前用戶下的所有表。

select * from tab;這個語句纔是真的顯示所有表,上個語句顯示的太多了無法看清。

更換用戶是用: connect scott/tiger as sysdba;

現在做個測試,建立一個表用enterrise manager console,但是不同的是system帳戶,在不同的表空間下建立,也就是說不在system空間下建立,不在默認的實例下建立。
再建立一個表直接用sqlplus最簡單的建立,看其默認的參數在那裏。
再就是用sqlplus在指定的地方建立指定的表。

create table test1(
test_id integer not null);
由於登陸的帳戶密碼是在scott下面,所以表test1出現在scott 方案下面表空間system.

問題來了,這個方案,是否是每個帳戶使用一個默認的方案?

做了一個小測試
切換到system的帳戶下面區。
create table test1(test_id integer not null);
同樣建立表成功。並且索引也不衝突。
但是在enterprise mn console裏面發現其默認的方案不是system,而是sys.

問題來了,怎麼查詢當前用戶下的默認的方案?

查詢了半天無法找到原因,可能是問題太過於弱智了,網絡不屑於回答。
so ,我自己建立一個帳戶測試一下。
建立了一個f**/p**

重新用foujo的帳號登陸,sqlplus運行create table test1發現有問題,
提示無權使用users表空間,
這個users表空間意思就是你建立一個帳戶,自己建立一個帳戶的時候系統默認,可能是sqlplus默認
的使用表空間。
所以就有以上錯誤。

so,
返回到enterprise console在安全性>用戶下面找到foujoe的帳戶,
修改裏面的限額選項卡
選中users,限額大小修改爲無限制。
最後create test1成功,
所使用的默認方案是foujoe,這個方案是系統自己在建立foujo帳戶的時候自己自動生成的。
說明一個問題,我猜測的啊:不能在同一個方案下面生成同名的表
可以在同一個表空間下有同樣的表名字,包括那些個索引啊。
所以說,索引等obj是由方案來區分的。
done.

最後test了半天把foujoe這個帳戶給弄亂了。
需要刪除。
在安全性選項下面選擇移除的時候提示foujoe仍然在connect,所以只好到例程>會話 裏面找到foujoe的connection.
kill 掉。
然後才能刪除。

我一開始建立的表在system這個帳戶下面。
所以想移動到我自己建立的帳戶方案下。
不過找到一個方法就是 在source table 端執行類似創建就可以搞定問題。
done.

現在發現一個問題。
在oracle中,一切皆對象,index也是一個對象,就是索引,主鍵一般作爲索引。
如果主鍵是數字那麼主鍵對象名字就以table開頭,後面跟一串亂碼。
如果主鍵是字符串那麼就一sys打頭,這個好像是oracle的規矩吧。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章