【问题标题】:How to view user created table in OracleDB?如何在 OracleDB 中查看用户创建的表?
【发布时间】:2021-08-04 17:50:10
【问题描述】:

所以我在我的 OracleDB 中创建了一个表,但是当我使用该命令查看我的环境中的所有表时,它会提供一堆其他表,滚动并用许多其他表填充我的命令提示符。

还有其他命令可以查看我创建的表吗?

这就是我目前正在做的事情

C:\> set ORACLE_SID=ocptech;
C:\> sqlplus / as sysdba
SQL> CREATE TABLE customers  
     ( customer_id number(10) NOT NULL,  
       customer_name varchar2(50) NOT NULL,  
       city varchar2(50)  
     );  
SQL> SELECT table_name
     FROM user_tables
     ORDER BY table_name;

上面的命令给了我很多表。

也有人可以解释一下,执行以下命令时这些表空间是什么

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES

【问题讨论】:

    标签: oracle plsql oracle19c tablespace


    【解决方案1】:

    您正在以SYS 用户身份连接:

    C:\> sqlplus / as sysdba
    

    所以你看到了 SYS 用户的所有表。 不要将此模式用于自己的对象和表! 创建自己的架构并将其用于自己的对象

    【讨论】:

    • 架构和用户是一回事吗?另外,如何让新用户访问这些 sys 表?
    • @HimanshuPoddar 创建用户,以该用户身份连接,创建表。这就像 Linux 中的用户帐户(如果有帮助的话),并且您以 root 身份连接。
    【解决方案2】:

    关于表名,可以使用如下查询-

    SELECT table_name
      FROM user_tables
     WHERE table_name = 'customers'
     ORDER BY table_name;
    

    对于表空间,这是oracle在物理层面存储数据的存储机制。最小的存储单位是数据块,然后是segments,extent,然后是tablespace。

    您可以点击以下链接了解更多详情。 https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm

    【讨论】:

    • 如果有 100 个用户创建的表怎么办,在这种情况下我如何查看当然我不能在这种情况下按表名过滤
    • 数据字典提供3级_tables。 User_Tables:显示用户内的所有表(模式)。 All_Tables:显示用户(模式)可以查看的表。 DBA_Tables:显示数据库中的所有表。除非您使用 where 子句进行过滤,否则您在每个表中查询哪个级别。
    • 肯定是 OP 创建了一个名为 'CUSTOMERS' 的表,而不是 'customers'?你为什么还要订一排呢?
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多