背景:目前略,后续补上
//创建用户
CREATE USER tpmeaccount IDENTIFIED BY 12345678;
//授权权限
GRANT CONNECT, RESOURCE TO tpmeaccount;
//登录, 以sysdba这个角色登录 , sys是用户名 /后面是密码
sqlplus sys/123456 as sysdba// 需要授权一个角色给这个用户sys , 虽然我也不知道sys已经是最高级别的用户了, 这个还有什么用;
// 但是navicat连接要用到
grant sysdba to sys//查询权限, 谁的权限grantee = 'SYSTEM';用户system的, 应该是不区分大小写的
SELECT * FROM dba_role_privs WHERE grantee = 'SYSTEM';//强制刷新
ALTER SYSTEM CHECKPOINT;//查看你的用户名
SELECT USER FROM DUAL;//这一看就是导入的命令,如果报错可能是你的环境path没有配好。 注意orcl1 是服务名,
//dpdata1是你新建的的目录impdp system/12345678@127.0.0.1:1521/orcl1 directory=dpdata1 file='prad121241015.dmp' full=y;
1.1OracleServiceORCL(必须启动)
OracleServiceORCL:数据库服务(数据库实例),是 Oracle 核心服务该服务是数据库启动
的基础,只有该服务启动,Oracle 数据库才能正常启动。
1.2OracleOraDb11g_home1TNSListener(必须启动)
//创建用户
//在sys下面
CREATE USER my_user_test1 IDENTIFIED BY 123456;//
GRANT CREATE JOB TO SYS;//查看这个用户的权限
SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'SYS';//单独查看某个权限有没有,比如说创建CREATE JOB,的权限
SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'SCOTT' AND privilege = 'CREATE JOB';
DBA_SYS_PRIVS是一个视图
- 什么是job?
在 Oracle 数据库中,作业(Job)是一种可以自动执行的任务。作业可以用于定时运行 SQL 语句、发送电子邮件、执行数据导入/导出等任务。
作业由以下部分组成:
-
作业定义:作业定义包含了作业的名称、作业的执行计划(包括何时开始、何时结束、何时重新运行等)和作业的执行步骤(包括要执行的 SQL 语句、要发送的电子邮件等)。
-
作业调度:作业调度定义了作业的执行计划。作业调度可以基于时间(例如,每天、每周、每月等)或基于事件(例如,当某个表发生变化时)。
-
作业步骤:作业步骤定义了作业要执行的操作。作业步骤可以包含 SQL 语句、PL/SQL 过程、电子邮件发送等操作。
作业可以手动启动,也可以由作业调度自动启动。作业的状态可以通过 DBA_JOBS
数据字典视图来查看。
请注意,创建和管理作业需要 CREATE JOB
权限。如果您没有这个权限,您将无法创建新的作业。
在 Oracle 数据库中,CREATE JOB
是一个系统权限,它允许用户创建和管理数据库作业。数据库作业是数据库中可以自动执行的任务,例如定时运行 SQL 语句、发送电子邮件等。
如果您拥有 CREATE JOB
权限,您可以使用 DBMS_JOB
包来创建和管理数据库作业。以下是一个示例,它使用 DBMS_JOB
包创建了一个新的数据库作业:
DECLAREjob NUMBER;
BEGINDBMS_JOB.SUBMIT(job => job,what => 'BEGIN my_procedure; END;',next_date => SYSDATE,interval => 'SYSDATE + 1/1440');COMMIT;
END;
/
这个示例创建了一个新的数据库作业,它将在每分钟执行一次 my_procedure
过程。
如果您没有 CREATE JOB
权限,您将无法使用 DBMS_JOB
包来创建和管理数据库作业。在这种情况下,您可能需要联系您的数据库管理员,并请求他们为您分配 CREATE JOB
权限。
- ORA-01917: 用户或角色 ‘MASTEDATA’ 不存在什么意思
//查询所有的用户名
SELECT username FROM dba_users;
//给这个用户创建权限, MASTERDATA这个用户不加引号
GRANT CREATE JOB TO MASTERDATA;
- dba_users也是一个视图,类似dba_sys_privs , 是超级视图,这都是原来写好的
在 Oracle 数据库中,dba_sys_privs
数据字典视图包含了数据库中所有用户的系统权限信息。以下是一个示例查询,它将返回CREATE JOB
权限的信息:
SELECT grantee, privilege
FROM dba_sys_privs
WHERE privilege = 'CREATE JOB';
这个查询将返回拥有 CREATE JOB
权限的所有用户和权限。
如果您想查看特定用户的权限,您可以将 grantee
替换为您要查询的用户名,例如:
SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTEDATA' AND privilege = 'CREATE JOB';
这个查询将返回 MASTEDATA
用户是否拥有 CREATE JOB
权限。
如果您执行了 GRANT CREATE JOB TO MASTERDATA;
语句,然后执行 SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTEDATA' AND privilege = 'CREATE JOB';
语句仍然为空,这可能是因为以下原因:
-
权限尚未生效:在 Oracle 数据库中,权限的授予和撤销是立即生效的,但是新创建的用户可能需要重新连接到数据库才能使权限生效。您可以尝试断开并重新连接到数据库,然后再次执行查询。
-
权限被撤销:如果权限已经被撤销,那么查询将不会返回任何结果。您可以使用
REVOKE CREATE JOB FROM MASTERDATA;
语句来撤销权限。 -
权限被授予给其他角色:如果权限被授予给
MASTERDATA
用户所属的其他角色,那么查询将不会返回任何结果。您可以使用SELECT granted_role FROM dba_role_privs WHERE grantee = 'MASTEDATA';
语句来查看MASTERDATA
用户所属的所有角色。 -
权限被授予给其他用户:如果权限被授予给其他用户,那么查询将不会返回任何结果。您可以使用
SELECT grantee FROM dba_sys_privs WHERE privilege = 'CREATE JOB';
语句来查看拥有CREATE JOB
权限的所有用户。
//查询角色SELECT granted_role FROM dba_role_privs WHERE grantee = 'MASTERDATA';
//查询固定权限SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTERDATA' AND privilege = 'CREATE JOB';
- ORA-01017: invalid username/password; logon denied
常见问题之登录问题
ORA-01017: invalid username/password; logon denied
是一个常见的 Oracle 错误,它表示您在尝试登录数据库时提供了无效的用户名或密码。
以下是一些可能的解决步骤:
-
检查用户名和密码:请确保您在登录时输入的用户名和密码与数据库中的用户名和密码完全匹配,包括大小写和空格。
-
检查账户状态:如果您的账户被锁定或过期,您将无法登录。您可以使用
ALTER USER user_name ACCOUNT UNLOCK;
语句来解锁账户,或者使用ALTER USER user_name PASSWORD EXPIRE;
语句来使密码过期。
//怎么看用户解锁账户状态
SELECT account_status FROM dba_users WHERE username = 'MASTERDATA';
//结果是open
在 Oracle 数据库中,DBA_USERS
数据字典视图(可以理解SYS下自带的表)的 account_status
列表示用户的账户状态。以下是一些可能的值:
OPEN
:账户已解锁,并且可以使用。LOCKED
:账户已锁定,无法使用。EXPIRED
:账户已过期,无法使用。LOCKED(TIMED)
:账户已锁定,并且锁定时间未到。EXPIRED(GRACE)
:账户已过期,并且仍在宽限期。EXPIRED(GRACE+PASSWORD_LOCK)
: 账户已过期,并且宽限期已过,并且账户已被锁定。
因此,如果您看到 account_status
的值为 OPEN
,那么账户已解锁,并且可以使用。
- 检查账户权限:如果您的账户没有
CREATE SESSION
权限,您将无法登录。您可以使用GRANT CREATE SESSION TO user_name;
语句来授予CREATE SESSION
权限。
- 怎么看你的用户是否有这个
CREATE SESSION
权限?
//其实这个命令之前讲过,就是把privilege 换一下
SELECT privilege FROM dba_tab_privs WHERE grantee = 'MASTERDATA' AND privilege = 'CREATE SESSION';
-
两个表格区别一下
在 Oracle 数据库中,dba_sys_privs
和dba_tab_privs
都是数据字典视图,它们都包含了数据库中所有用户的权限信息,但是它们包含的信息类型不同。 -
dba_sys_privs
视图包含了数据库中所有用户的系统权限信息。系统权限是数据库级别的权限,例如CREATE TABLE
、CREATE USER
、CREATE SESSION
等。 -
dba_tab_privs
视图包含了数据库中所有用户的表级权限信息。表级权限是特定表或视图的权限,例如SELECT
、INSERT
、UPDATE
、DELETE
等。
如果您在 dba_tab_privs
视图中找不到 CREATE SESSION
权限,这可能是因为 CREATE SESSION
是一个系统权限,而不是表级权限。您应该使用 dba_sys_privs
视图来查看 CREATE SESSION
权限。
以下是一个示例查询,它将返回 CREATE SESSION
权限的信息:
SELECT grantee, privilege
FROM dba_sys_privs
WHERE privilege = 'CREATE SESSION';
这个查询将返回拥有 CREATE SESSION
权限的所有用户和权限。
- 检查网络连接:如果您的网络连接有问题,您可能无法登录。请确保您的网络连接稳定,并且数据库服务器正在运行。
如果以上步骤都无法解决问题,您可能需要联系您的数据库管理员或 Oracle 技术支持以获取更详细的帮助。
监听器配置
//我的
D:\oracleApp\product\11.2.0\dbhome_1\NETWORK\ADMIN
//你自己存放的位置
\product\11.2.0\dbhome_1\NETWORK\ADMIN
- 新的监听错误
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
找到这个配置文件
SELECT * FROM v$version;
结果
"BANNER"
"Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production"
"PL/SQL Release 11.2.0.1.0 - Production"
"CORE 11.2.0.1.0 Production"
"TNS for 64-bit Windows: Version 11.2.0.1.0 - Production"
"NLSRTL Version 11.2.0.1.0 - Production"
根据你要导入的类似mysql中的数据库,你需要先创建这几个用户。这个导出的日志中会有,同样报错的日志中也有;
这里的执行我都是在sys这个用户之下;
//创建用户MASTERDATA
CREATE USER MASTERDATA IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO MASTERDATA;//创建用户INTEREST
CREATE USER INTEREST IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO INTEREST;//创建用户 MONITORDATA
CREATE USER MONITORDATA IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO MONITORDATA;//创建用户 trade
CREATE USER trade IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO trade;//创建用户 query
CREATE USER query IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO query;