oracle查看字典结构体,oracle 数据字典

--1.静态数据字典

--user_source视图

--主要描述当前用户的type and

code信息.

select * from user_source;

select * from all_source;

select * from dba_source;

-----------------------------

--user_users视图

--主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。例如执行下列命令即可返回这些信息。

select * from user_users;

select * from all_users;

select * from dba_users;

-----------------------------

--user_tables视图

--主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。

select * from user_tables;

select * from all_tables;

select * from dba_tables;

------------------------------

--user_views视图

--主要描述当前用户拥有的所有views的信息.

select * from user_views;

select * from all_views;

select * from dba_views;

------------------------------

--user_objects视图

--主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。

--该视图比user_tables视图更加全面。例如,需要获取一个名为“PARTNER_DF_PK”的对象类型和其状态的信息,可以执行下面命令

select object_type,status from user_objects

where object_name=upper('PARTNER_DF_PK');

--这里需注意upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。

select * from user_objects;

select * from all_objects;

select * from dba_objects;

---------------------------------------

--user_tab_privs视图

--该视图主要是存储当前用户下对所有表的权限信息。比如,为了了解当前用户对DIM_ITEM的权限信息,可以执行如下命令

select * from user_tab_privs where

table_name=upper('DIM_ITEM');

--了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执行。

--前面的视图均为user_开头的,其实all_开头的也完全是一样的,只是列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。

--对于dba_开头的需要管理员权限,其他用法也完全一样,这里就不再赘述了。

select * from user_tab_privs;

select * from all_tab_privs;

select * from dba_tab_privs;

----------------------------------------

2.动态数据字典

/*Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,

所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。

Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。下面就几个主要的动态性能视图进行介绍。

v$access

该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。*/

select * from v$access;

/*v$session

该视图列出当前会话的详细信息。由于该视图字段较多,这里就不列详细字段,为了解详细信息,

可以直接在sql*plus命令行下键入:desc v$session即可。*/

select * from v$session;

/*v$active_instance

该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。*/

select * from v$active_instance;

/*v$context

该视图列出当前会话的属性信息。比如命名空间、属性值等。*/

select * from v$context;

---------------------------

1.查看用户拥有的数据库对象

Sql代码

select object_name from user_objects;

2.查看约束信息

Sql代码

select constraint_name from user_constraints;

3.查看用户所拥有的表

Sql代码

select table_name from user_tables;

Sql代码

select *from tab;

4.查看用户所拥有的视图

Sql代码

select view_name from user_views;

5.查看用户所拥有的触发器

Sql代码

select trigger_name from user_triggers;

6.查看用户拥有的序列

Sql代码

select sequence_name from user_sequence;

7.查看用户拥有的索引

Sql代码

select index_name from user_indexs;

8.显示当前用户

Sql代码

show user;

9.切换用户

Sql代码

conn scott/tiger;

10.将用户赋予某种角色登录

Sql代码

conn scott/tiger as sysdba;

11.查看所有用户

Sql代码

conn system/unis;

select username from dba_users;

12.查看用户所拥有的权限

Sql代码

select *from session_privs;

13.给用户加锁

Sql代码

alter user scott account lock;

14.给用户解锁

Sql代码

alter user scott account unlock;

15.修改用户密码

Sql代码

alter user zzg identified by zzg123

16.新建用户

Sql代码

create user zzg identified by zzg123;

17.删除用户及相关对象

Sql代码

drop user zzg cascade;

18.给用户赋权(多个采用逗号间隔)

Sql代码

grant create session,create table to zzg;

19.分配表空间给用户

Sql代码

alter user zzg default tablespace ts_zzg;

20.授权表空间给用户

Sql代码

grant unlimited tablespace to zzg;

读取Oracle数据库数据可以使用OCI(Oracle Call Interface)进行编程,而结构体中各字段的值可以通过查询结果集(ResultSet)中每一的值来获取。以下是一个简单的示例代码: ```c++ #include <iostream> #include <oci.h> using namespace std; int main() { OCIEnv* env = nullptr; OCIError* err = nullptr; OCISvcCtx* svc = nullptr; OCIStmt* stmt = nullptr; OCIDefine* def = nullptr; OCIDateTime* dt = nullptr; OCIInterval* interval = nullptr; sword status = 0; // 初始化OCI环境 OCIEnvCreate(&env, OCI_THREADED, nullptr, nullptr, nullptr, nullptr, 0, nullptr); // 分配OCI错误句柄 OCIHandleAlloc(env, (void**)&err, OCI_HTYPE_ERROR, 0, nullptr); // 分配OCI服务句柄 OCIHandleAlloc(env, (void**)&svc, OCI_HTYPE_SVCCTX, 0, nullptr); // 连接Oracle数据库 OCILogon2(env, err, &svc, "username", strlen("username"), "password", strlen("password"), "database", strlen("database"), OCI_DEFAULT); // 分配OCI语句句柄 OCIHandleAlloc(env, (void**)&stmt, OCI_HTYPE_STMT, 0, nullptr); // 准备SQL语句 OCIStmtPrepare(stmt, err, "SELECT col1, col2, col3 FROM table", strlen("SELECT col1, col2, col3 FROM table"), OCI_NTV_SYNTAX, OCI_DEFAULT); // 执行SQL语句 OCIStmtExecute(svc, stmt, err, 1, 0, nullptr, nullptr, OCI_DEFAULT); // 定义结果集中每一对应的变量 int col1 = 0; char col2[64] = { 0 }; double col3 = 0.0; OCIDateTimeConstruct(env, err, &dt, 0, 0, 0, 0, 0); OCIIntervalConstruct(env, err, &interval, 0, 0, 0, 0, 0); OCIStmtFetch2(stmt, err, 1, OCI_FETCH_NEXT, 0, OCI_DEFAULT); // 获取结果集中每一的值 OCIDefineByPos(stmt, &def, err, 1, &col1, sizeof(int), SQLT_INT, nullptr, nullptr, nullptr, OCI_DEFAULT); OCIDefineByPos(stmt, &def, err, 2, col2, sizeof(col2), SQLT_STR, nullptr, nullptr, nullptr, OCI_DEFAULT); OCIDefineByPos(stmt, &def, err, 3, &col3, sizeof(double), SQLT_FLT, nullptr, nullptr, nullptr, OCI_DEFAULT); // 输出每一的值 cout << "col1 = " << col1 << endl; cout << "col2 = " << col2 << endl; cout << "col3 = " << col3 << endl; // 释放OCI资源 OCIStmtRelease(stmt, err, nullptr, 0, OCI_DEFAULT); OCIHandleFree(stmt, OCI_HTYPE_STMT); OCIIntervalFree(env, interval); OCIDateTimeFree(env, dt); OCIHandleFree(svc, OCI_HTYPE_SVCCTX); OCIHandleFree(err, OCI_HTYPE_ERROR); OCIHandleFree(env, OCI_HTYPE_ENV); return 0; } ``` 这个示例代码中,使用OCI连接Oracle数据库,然后执行一个SELECT语句,获取结果集中每一的值,最后输出这些值。其中,定义了一个结构体来存储每一行的数据,可以通过将每一的值赋值给结构体中对应的字段来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值